File size: 2,948 Bytes
8eb0b3e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import os

# Get the project root directory (parent of config directory)
_CONFIG_DIR_PATH = os.path.dirname(os.path.abspath(__file__))
_PROJECT_ROOT = os.path.dirname(_CONFIG_DIR_PATH)

# Base directories
DATA_DIR = os.path.join(_PROJECT_ROOT, "data")
CONFIG_DIR = os.path.join(_PROJECT_ROOT, "config")

# Data subdirectories
DEMOS_DIR = os.path.join(DATA_DIR, "demos")
OUTPUT_DIR = os.path.join(DATA_DIR, "output")
TEMPLATES_DIR = os.path.join(DATA_DIR, "templates")
WORKING_DIR = os.path.join(DATA_DIR, "working")
VISUALIZATIONS_DIR = os.path.join(OUTPUT_DIR, "visualizations")
PIPELINE_OUTPUT_DIR = os.path.join(OUTPUT_DIR, "pipeline")

# Working files
WORKING_IMAGE_PATH = os.path.join(WORKING_DIR, "working_image.png")
WORKING_CONFIG_PATH = os.path.join(WORKING_DIR, "working_config.yaml")
CONFIG_DOWNLOAD_PATH = os.path.join(WORKING_DIR, "config_download.yaml")

# Output files
OUTPUT_PNML_PATH = os.path.join(OUTPUT_DIR, "output.pnml")
OUTPUT_PETRIOBJ_PATH = os.path.join(OUTPUT_DIR, "output.petriobj")
OUTPUT_JSON_PATH = os.path.join(OUTPUT_DIR, "output.json")
OUTPUT_PNG_PATH = os.path.join(OUTPUT_DIR, "output.png")
OUTPUT_GV_PATH = os.path.join(OUTPUT_DIR, "output.gv")

# Pipeline data files
PLACES_PKL_PATH = os.path.join(PIPELINE_OUTPUT_DIR, "places.pkl")
TRANSITIONS_PKL_PATH = os.path.join(PIPELINE_OUTPUT_DIR, "transitions.pkl")
ARCS_PKL_PATH = os.path.join(PIPELINE_OUTPUT_DIR, "arcs.pkl")
PLACES_FIXED_PKL_PATH = os.path.join(PIPELINE_OUTPUT_DIR, "places_fixed.pkl")
TRANSITIONS_FIXED_PKL_PATH = os.path.join(PIPELINE_OUTPUT_DIR, "transitions_fixed.pkl")
ARCS_FIXED_PKL_PATH = os.path.join(PIPELINE_OUTPUT_DIR, "arcs_fixed.pkl")

# File extensions
SUPPORTED_IMAGE_EXTENSIONS = ('.png', '.jpg', '.jpeg')
SUPPORTED_CONFIG_EXTENSIONS = ('.yaml', '.yml')

# Default configuration
DEFAULT_CONFIG_PATH = os.path.join(CONFIG_DIR, "algorithm_config", "config.yaml")

def ensure_directories_exist():
    """Create all necessary directories if they don't exist."""
    directories = [
        OUTPUT_DIR,
        VISUALIZATIONS_DIR,
        PIPELINE_OUTPUT_DIR,
        DEMOS_DIR,
        WORKING_DIR
    ]
    
    for directory in directories:
        os.makedirs(directory, exist_ok=True)

def get_working_image_path(extension=".png"):
    """Get the working image path with the specified extension."""
    return os.path.join(WORKING_DIR, f"working_image{extension}")

def get_working_config_path(extension=".yaml"):
    """Get the working config path with the specified extension."""
    return os.path.join(WORKING_DIR, f"working_config{extension}")

def get_visualization_path(name):
    """Get the path for a visualization file."""
    return os.path.join(VISUALIZATIONS_DIR, f"{name}.png")

def get_output_file_path(filename):
    """Get the path for an output file."""
    return os.path.join(OUTPUT_DIR, filename)

def get_config_download_path():
    """Get the path for config download file."""
    return CONFIG_DOWNLOAD_PATH