Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/hotfixes' into release
Browse files Browse the repository at this point in the history
  • Loading branch information
Alessandro Berti committed Apr 12, 2023
2 parents c67511c + e60704f commit cee3245
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 11 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Changelog of pm4py

## pm4py 2.7.3 (2023.04.XX)
## pm4py 2.7.3 (2023.04.12)

### Added
* e561089945951e91b2ecfe0f223b35bd2d351630
Expand Down
12 changes: 6 additions & 6 deletions pm4py/openai.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import pandas as pd
from pm4py.objects.log.obj import EventLog, EventStream
from typing import Union, Tuple
from pm4py.utils import get_properties
from pm4py.utils import get_properties, constants
from pm4py.utils import __event_log_deprecation_warning
from pm4py.objects.ocel.obj import OCEL
from pm4py.objects.petri_net.obj import PetriNet, Marking
Expand Down Expand Up @@ -304,7 +304,7 @@ def compare_logs(log1: Union[pd.DataFrame, EventLog, EventStream], log2: Union[p
return log_queries.compare_logs(log1, log2, parameters=parameters)


def abstract_dfg(log_obj: Union[pd.DataFrame, EventLog, EventStream], max_len: int = 10000, include_performance: bool = True, relative_frequency: bool = False, response_header: bool = True, activity_key: str = "concept:name", timestamp_key: str = "time:timestamp", case_id_key: str = "case:concept:name") -> str:
def abstract_dfg(log_obj: Union[pd.DataFrame, EventLog, EventStream], max_len: int = constants.OPENAI_MAX_LEN, include_performance: bool = True, relative_frequency: bool = False, response_header: bool = True, activity_key: str = "concept:name", timestamp_key: str = "time:timestamp", case_id_key: str = "case:concept:name") -> str:
"""
Obtains the DFG abstraction of a traditional event log
Expand Down Expand Up @@ -339,7 +339,7 @@ def abstract_dfg(log_obj: Union[pd.DataFrame, EventLog, EventStream], max_len: i
return log_to_dfg_descr.apply(log_obj, parameters=parameters)


def abstract_variants(log_obj: Union[pd.DataFrame, EventLog, EventStream], max_len: int = 10000, include_performance: bool = True, relative_frequency: bool = False, response_header: bool = True, activity_key: str = "concept:name", timestamp_key: str = "time:timestamp", case_id_key: str = "case:concept:name") -> str:
def abstract_variants(log_obj: Union[pd.DataFrame, EventLog, EventStream], max_len: int = constants.OPENAI_MAX_LEN, include_performance: bool = True, relative_frequency: bool = False, response_header: bool = True, activity_key: str = "concept:name", timestamp_key: str = "time:timestamp", case_id_key: str = "case:concept:name") -> str:
"""
Obtains the variants abstraction of a traditional event log
Expand Down Expand Up @@ -396,7 +396,7 @@ def abstract_ocel(ocel: OCEL, include_timestamps: bool = True) -> str:
return ocel_description.apply(ocel, parameters=parameters)


def abstract_event_stream(log_obj: Union[pd.DataFrame, EventLog, EventStream], max_len: int = 10000, response_header: bool = True, activity_key: str = "concept:name", timestamp_key: str = "time:timestamp", case_id_key: str = "case:concept:name") -> str:
def abstract_event_stream(log_obj: Union[pd.DataFrame, EventLog, EventStream], max_len: int = constants.OPENAI_MAX_LEN, response_header: bool = True, activity_key: str = "concept:name", timestamp_key: str = "time:timestamp", case_id_key: str = "case:concept:name") -> str:
"""
Obtains the event stream abstraction of a traditional event log
Expand Down Expand Up @@ -555,7 +555,7 @@ def conformance_checking(log_obj: Union[pd.DataFrame, EventLog, EventStream], ru
return log_queries.conformance_checking(log_obj, rule, parameters=parameters)


def suggest_verify_hypotheses(log_obj: Union[pd.DataFrame, EventLog, EventStream], max_len: int = 5000, api_key: Optional[str] = None, openai_model: Optional[str] = None, activity_key: str = "concept:name", timestamp_key: str = "time:timestamp", case_id_key: str = "case:concept:name") -> str:
def suggest_verify_hypotheses(log_obj: Union[pd.DataFrame, EventLog, EventStream], max_len: int = constants.OPENAI_MAX_LEN // 2, api_key: Optional[str] = None, openai_model: Optional[str] = None, activity_key: str = "concept:name", timestamp_key: str = "time:timestamp", case_id_key: str = "case:concept:name") -> str:
"""
Given an event log, identifies some hypotheses to verify against the data.
Expand Down Expand Up @@ -590,7 +590,7 @@ def suggest_verify_hypotheses(log_obj: Union[pd.DataFrame, EventLog, EventStream
return log_queries.suggest_verify_hypotheses(log_obj, parameters=parameters)


def filtering_query(log_obj: Union[pd.DataFrame, EventLog, EventStream], filtering_query: str, max_len: int = 5000, api_key: Optional[str] = None, openai_model: Optional[str] = None, activity_key: str = "concept:name", timestamp_key: str = "time:timestamp", case_id_key: str = "case:concept:name") -> str:
def filtering_query(log_obj: Union[pd.DataFrame, EventLog, EventStream], filtering_query: str, max_len: int = constants.OPENAI_MAX_LEN // 2, api_key: Optional[str] = None, openai_model: Optional[str] = None, activity_key: str = "concept:name", timestamp_key: str = "time:timestamp", case_id_key: str = "case:concept:name") -> str:
"""
Given an event log, performs a query to filter the event data
Expand Down
26 changes: 22 additions & 4 deletions pm4py/vis.py
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ def save_vis_dotted_chart(log: Union[EventLog, pd.DataFrame], file_path: str, at
dotted_chart_visualizer.save(gviz, file_path)


def view_sna(sna_metric: SNA, variant_str: str = "pyvis"):
def view_sna(sna_metric: SNA, variant_str: Optional[str] = None):
"""
Represents a SNA metric (.html)
Expand All @@ -481,6 +481,12 @@ def view_sna(sna_metric: SNA, variant_str: str = "pyvis"):
metric = pm4py.discover_subcontracting_network(dataframe, resource_key='org:resource', timestamp_key='time:timestamp', case_id_key='case:concept:name')
pm4py.view_sna(metric)
"""
if variant_str is None:
if constants.DEFAULT_GVIZ_VIEW == "matplotlib_view":
variant_str = "networkx"
else:
variant_str = "pyvis"

from pm4py.visualization.sna import visualizer as sna_visualizer
variant = sna_visualizer.Variants.PYVIS
if variant_str == "networkx":
Expand All @@ -489,12 +495,13 @@ def view_sna(sna_metric: SNA, variant_str: str = "pyvis"):
sna_visualizer.view(gviz, variant=variant)


def save_vis_sna(sna_metric: SNA, file_path: str):
def save_vis_sna(sna_metric: SNA, file_path: str, variant_str: Optional[str] = None):
"""
Saves the visualization of a SNA metric in a .html file
:param sna_metric: Values of the metric
:param file_path: Destination path
:param variant_str: variant to be used (default: pyvis)
.. code-block:: python3
Expand All @@ -504,9 +511,20 @@ def save_vis_sna(sna_metric: SNA, file_path: str):
pm4py.save_vis_sna(metric, 'sna.png')
"""
file_path = str(file_path)

if variant_str is None:
if constants.DEFAULT_GVIZ_VIEW == "matplotlib_view":
variant_str = "networkx"
else:
variant_str = "pyvis"

from pm4py.visualization.sna import visualizer as sna_visualizer
gviz = sna_visualizer.apply(sna_metric, variant=sna_visualizer.Variants.PYVIS)
sna_visualizer.save(gviz, file_path, variant=sna_visualizer.Variants.PYVIS)
variant = sna_visualizer.Variants.PYVIS
if variant_str == "networkx":
variant = sna_visualizer.Variants.NETWORKX

gviz = sna_visualizer.apply(sna_metric, variant=variant)
sna_visualizer.save(gviz, file_path, variant=variant)


def view_case_duration_graph(log: Union[EventLog, pd.DataFrame], format: str = "png", activity_key="concept:name", timestamp_key="time:timestamp", case_id_key="case:concept:name"):
Expand Down
47 changes: 47 additions & 0 deletions safety_checks/20230412
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
+==============================================================================+

/$$$$$$ /$$
/$$__ $$ | $$
/$$$$$$$ /$$$$$$ | $$ \__//$$$$$$ /$$$$$$ /$$ /$$
/$$_____/ |____ $$| $$$$ /$$__ $$|_ $$_/ | $$ | $$
| $$$$$$ /$$$$$$$| $$_/ | $$$$$$$$ | $$ | $$ | $$
\____ $$ /$$__ $$| $$ | $$_____/ | $$ /$$| $$ | $$
/$$$$$$$/| $$$$$$$| $$ | $$$$$$$ | $$$$/| $$$$$$$
|_______/ \_______/|__/ \_______/ \___/ \____ $$
/$$ | $$
| $$$$$$/
by pyup.io \______/

+==============================================================================+

REPORT

 Safety is using PyUp's free open-source vulnerability database. This
data is 30 days old and limited. 
 For real-time enhanced vulnerability data, fix recommendations, severity
reporting, cybersecurity support, team and project policy management and more
sign up at https://pyup.io or email [email protected]

Safety v2.3.5 is scanning for Vulnerabilities...
 Scanning dependencies in your files:

-> requirements_stable.txt

Using non-commercial database
 Found and scanned 24 packages
Timestamp 2023-04-12 12:22:23
 0 vulnerabilities found
 0 vulnerabilities ignored
+==============================================================================+

No known security vulnerabilities found.

+==============================================================================+

 Safety is using PyUp's free open-source vulnerability database. This
data is 30 days old and limited. 
 For real-time enhanced vulnerability data, fix recommendations, severity
reporting, cybersecurity support, team and project policy management and more
sign up at https://pyup.io or email [email protected]

+==============================================================================+

0 comments on commit cee3245

Please sign in to comment.