7
7
from BRB .logger import log
8
8
import stat
9
9
from pathlib import Path
10
+ import re
11
+
12
+ def organism2Dir (organism ):
13
+ """ Convert organism name - such as
14
+ M. Musculus (mm10 / GRCm39) -> M_Musculus_mm10_GRCm39
15
+ The main goal is to have a simple directory name
16
+ """
17
+ # Replace all spaces and special characters with underscores
18
+ directory = re .sub (r'[^\w]' , '_' , organism )
19
+ # Collapse multiple underscores into one
20
+ directory = re .sub (r'_+' , '_' , directory )
21
+ # Remove trailing underscores
22
+ directory = re .sub (r'_+$' , '' , directory )
23
+ return directory
24
+
10
25
11
26
def createPath (config , group , project , organism , libraryType , tuples ):
12
27
"""Ensures that the output path exists, creates it otherwise, and return where it is"""
@@ -22,8 +37,9 @@ def createPath(config, group, project, organism, libraryType, tuples):
22
37
BRB .misc .pacifier (project ))
23
38
os .makedirs (baseDir , mode = 0o700 , exist_ok = True )
24
39
#org = organism.split(' ')[0].lower() # splitting bad idea for "M. musculus" etc.
25
- org = organism2Org (config , organism )
26
- oDir = os .path .join (baseDir , "{}_{}" .format (BRB .misc .pacifier (libraryType ), org ))
40
+ #org = organism2Org(config, organism) # bad when organism is a dir/dir/file.yaml
41
+ analysis_dir = organism2Dir (organism )
42
+ oDir = os .path .join (baseDir , "{}_{}" .format (BRB .misc .pacifier (libraryType ), analysis_dir ))
27
43
os .makedirs (oDir , mode = 0o700 , exist_ok = True )
28
44
return oDir
29
45
0 commit comments