|
10 | 10 | import pathlib |
11 | 11 | import re |
12 | 12 | import uuid |
| 13 | +from pathlib import Path |
13 | 14 | from typing import Any, Optional, Tuple, Union |
14 | 15 |
|
15 | 16 | import gemmi |
@@ -70,9 +71,6 @@ class Meta: |
70 | 71 | setattr(class_, "__marshmallow__", schema_class) |
71 | 72 |
|
72 | 73 |
|
73 | | -re_visit_base = re.compile(r"^(.*\/([a-z][a-z][0-9]+-[0-9]+))\/") |
74 | | - |
75 | | - |
76 | 74 | class ispybtbx: |
77 | 75 | def __init__(self): |
78 | 76 | with Session() as session: |
@@ -654,26 +652,32 @@ def classify_dc(self, dc_info, experiment_type: str | None): |
654 | 652 | } |
655 | 653 |
|
656 | 654 | @staticmethod |
657 | | - def get_visit_directory_from_image_directory(directory): |
| 655 | + def get_visit_directory_from_image_directory( |
| 656 | + directory: str | Path | None, |
| 657 | + ) -> str | None: |
658 | 658 | """/dls/${beamline}/data/${year}/${visit}/... |
659 | 659 | -> /dls/${beamline}/data/${year}/${visit}""" |
660 | 660 | if not directory: |
661 | 661 | return None |
662 | | - visit_base = re_visit_base.search(directory) |
663 | | - if not visit_base: |
| 662 | + directory = Path(directory) |
| 663 | + if not directory.is_absolute(): |
| 664 | + raise ValueError("Got relative directory instead of absolute") |
| 665 | + if len(directory.parts) < 6: |
664 | 666 | return None |
665 | | - return visit_base.group(1) |
| 667 | + return str(directory.parents[-6]) |
666 | 668 |
|
667 | 669 | @staticmethod |
668 | | - def get_visit_from_image_directory(directory): |
| 670 | + def get_visit_from_image_directory(directory: str | Path | None) -> str | None: |
669 | 671 | """/dls/${beamline}/data/${year}/${visit}/... |
670 | 672 | -> ${visit}""" |
671 | 673 | if not directory: |
672 | 674 | return None |
673 | | - visit_base = re_visit_base.search(directory) |
674 | | - if not visit_base: |
| 675 | + directory = Path(directory) |
| 676 | + if not directory.is_absolute(): |
| 677 | + raise ValueError("Got relative directory instead of absolute") |
| 678 | + if len(directory.parts) < 6: |
675 | 679 | return None |
676 | | - return visit_base.group(2) |
| 680 | + return directory.parts[5] |
677 | 681 |
|
678 | 682 | def dc_info_to_working_directory(self, dc_info): |
679 | 683 | directory = dc_info.get("imageDirectory") |
|
0 commit comments