diff --git a/pm4py/meta.py b/pm4py/meta.py index 7d333e211..367fdfc79 100644 --- a/pm4py/meta.py +++ b/pm4py/meta.py @@ -15,7 +15,7 @@ along with PM4Py. If not, see . ''' __name__ = 'pm4py' -VERSION = '2.7.5.1' +VERSION = '2.7.5.2' __version__ = VERSION __doc__ = 'Process mining for Python' __author__ = 'Fraunhofer Institute for Applied Technology' diff --git a/pm4py/objects/ocel/exporter/sqlite/variants/ocel20.py b/pm4py/objects/ocel/exporter/sqlite/variants/ocel20.py index 10ae0a53d..9a5f54783 100644 --- a/pm4py/objects/ocel/exporter/sqlite/variants/ocel20.py +++ b/pm4py/objects/ocel/exporter/sqlite/variants/ocel20.py @@ -97,7 +97,9 @@ def apply(ocel: OCEL, file_path: str, parameters: Optional[Dict[Any, Any]] = Non df = ocel.objects[ocel.objects[object_type] == ot].dropna(how="all", axis="columns") df = df.rename(columns={object_id: "ocel_id"}) del df[object_type] - df["ocel_time"] = datetime.fromtimestamp(0) + # Pandas 2.1.0 changes the way that datetime is written to SQL, and this is causing problems. + df["ocel_time"] = datetime.fromtimestamp(129600) + df["ocel_time"] = df["ocel_time"].astype('datetime64[ns]') df2 = ocel.object_changes[ocel.object_changes[object_type] == ot].dropna(how="all", axis="columns") if len(df2) > 0: diff --git a/pm4py/objects/ocel/importer/sqlite/variants/ocel20.py b/pm4py/objects/ocel/importer/sqlite/variants/ocel20.py index 99bcadb2d..9f082c998 100644 --- a/pm4py/objects/ocel/importer/sqlite/variants/ocel20.py +++ b/pm4py/objects/ocel/importer/sqlite/variants/ocel20.py @@ -152,7 +152,6 @@ def apply(file_path: str, parameters: Optional[Dict[Any, Any]] = None): object_changes = object_changes.sort_values([event_timestamp, internal_index]) del object_changes[internal_index] - E2O.dropna(inplace=True, subset=[event_id, event_activity, event_timestamp, object_id, object_type]) ocel = OCEL(events=event_types_coll, objects=objects, relations=E2O, object_changes=object_changes, o2o=O2O, parameters=parameters) ocel = ocel_consistency.apply(ocel, parameters=parameters) ocel = filtering_utils.propagate_relations_filtering(ocel, parameters=parameters) diff --git a/pm4py/objects/ocel/util/filtering_utils.py b/pm4py/objects/ocel/util/filtering_utils.py index c0a93941d..8f5f8f74f 100644 --- a/pm4py/objects/ocel/util/filtering_utils.py +++ b/pm4py/objects/ocel/util/filtering_utils.py @@ -131,10 +131,12 @@ def propagate_relations_filtering(ocel: OCEL, parameters: Optional[Dict[Any, Any event_id = exec_utils.get_param_value(Parameters.EVENT_ID, parameters, ocel.event_id_column) object_id = exec_utils.get_param_value(Parameters.OBJECT_ID, parameters, ocel.object_id_column) - selected_event_ids = set(ocel.relations[event_id].unique()) - selected_object_ids = set(ocel.relations[object_id].unique()) + selected_event_ids = set(ocel.relations[event_id].unique()).intersection(set(ocel.events[event_id].unique())) + selected_object_ids = set(ocel.relations[object_id].unique()).intersection(set(ocel.objects[object_id].unique())) ocel.events = ocel.events[ocel.events[event_id].isin(selected_event_ids)] ocel.objects = ocel.objects[ocel.objects[object_id].isin(selected_object_ids)] + ocel.relations = ocel.relations[ocel.relations[event_id].isin(selected_event_ids)] + ocel.relations = ocel.relations[ocel.relations[object_id].isin(selected_object_ids)] ocel.e2e = ocel.e2e[(ocel.e2e[event_id].isin(selected_event_ids)) & (ocel.e2e[event_id+"_2"].isin(selected_event_ids))] ocel.o2o = ocel.o2o[(ocel.o2o[object_id].isin(selected_object_ids)) & (ocel.o2o[object_id+"_2"].isin(selected_object_ids))] diff --git a/pm4py/objects/ocel/util/ocel_consistency.py b/pm4py/objects/ocel/util/ocel_consistency.py index 9f071b5c0..009bc6d80 100644 --- a/pm4py/objects/ocel/util/ocel_consistency.py +++ b/pm4py/objects/ocel/util/ocel_consistency.py @@ -51,8 +51,10 @@ def apply(ocel: OCEL, parameters: Optional[Dict[Any, Any]] = None) -> OCEL: for tab in fields: df = getattr(ocel, tab) for fie in fields[tab]: - df.dropna(subset=[fie], how="any", inplace=True) + df = df.dropna(subset=[fie], how="any") df[fie] = df[fie].astype("string") + df = df.dropna(subset=[fie], how="any") df = df[df[fie].str.len() > 0] + setattr(ocel, tab, df) return ocel diff --git a/requirements.txt b/requirements.txt index 11c4063a8..572504ccd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,7 +6,7 @@ lxml matplotlib networkx numpy -pandas<=2.0.3 +pandas pydotplus pytz scipy diff --git a/requirements_complete.txt b/requirements_complete.txt index 79ff9ed03..9235d4ddb 100644 --- a/requirements_complete.txt +++ b/requirements_complete.txt @@ -11,7 +11,7 @@ matplotlib networkx numpy packaging -pandas<=2.0.3 +pandas pillow pydotplus pyparsing