-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathproject_folders.py
More file actions
48 lines (43 loc) · 1.75 KB
/
project_folders.py
File metadata and controls
48 lines (43 loc) · 1.75 KB
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
from prefect import get_run_logger
from prefect.blocks.system import Secret
from pathlib import Path
from tiled.client import from_profile
def create_folders(uid, beamline_acronym='opls'):
logger = get_run_logger()
api_key = Secret.load(f"tiled-{beamline_acronym}-api-key", _sync=True).get()
tiled_client = from_profile("nsls2", api_key=api_key)[beamline_acronym]
run = tiled_client["raw"][uid]
logger.info(f"Creating project folders for {run.start['uid']} if not exist.")
cycle_id, data_session = run.start['cycle'], run.start['data_session']
if project_name := run.start.get('project_name'):
dir_names = [
"GISAXS_data",
"GISAXS_analysis",
"GID_data",
"GID_analysis",
"XRR_data",
"XRR_analysis",
"XRF_data",
"XRF_analysis",
"PseudoXRR",
"PseudoXRR/gixos",
"PseudoXRR/p100kA",
"PseudoXRR/processed",
"XRR_analysis/data",
"XRR_analysis/data2",
"XRR_analysis/data3",
"XRR_analysis/q_plots",
"XRR_analysis/checks_plots",
"XRR_analysis/summaries",
"Jupyter_notebooks",
"GIWAXS_data",
"GIWAXS_analysis",
# "kibron" # Uncomment if needed
# "scan_plots" # Uncomment if needed
]
root_dir = Path(f"/nsls2/data/smi/proposals/{cycle_id}/{data_session}/projects/{project_name}")
for dir_name in dir_names:
(root_dir / dir_name).mkdir(parents=True, exist_ok=True)
logger.info(f"Finished creating folders for project {project_name}")
else:
logger.warning("No project name found in run start data. Skipping folder creation.")