From 3835a50c48e0a4ae7b8801c579b65d060b5d7367 Mon Sep 17 00:00:00 2001 From: roger Date: Sat, 13 Jun 2020 19:33:49 +0800 Subject: [PATCH 1/5] Fixes level names --- DataProcessingTools/levels.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/DataProcessingTools/levels.py b/DataProcessingTools/levels.py index 926243d..4bf475b 100644 --- a/DataProcessingTools/levels.py +++ b/DataProcessingTools/levels.py @@ -1,5 +1,8 @@ import os -levels = ['day', 'session', 'array', 'channel'] +import glob + +levels = ['subjects', 'subject', 'day', 'session', 'array', 'channel','cell'] +level_patterns_s = ["*", "*", "[0-9]*", "session[0-9]*", "array[0-9]*", "channel[0-9]*", "cell[0-9]*"] def level(cwd=None): From 80bc04e627d651e97b676855cb9d245987c37d2e Mon Sep 17 00:00:00 2001 From: roger Date: Sat, 13 Jun 2020 19:34:10 +0800 Subject: [PATCH 2/5] Adds function for getting all directories corresponding to one level --- DataProcessingTools/levels.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/DataProcessingTools/levels.py b/DataProcessingTools/levels.py index 4bf475b..86ebe49 100644 --- a/DataProcessingTools/levels.py +++ b/DataProcessingTools/levels.py @@ -36,3 +36,24 @@ def resolve_level(target_level, cwd=None): pl.append("..") print(pl) return os.path.join(*pl) + + +def get_level_dirs(target_level, cwd=None): + """ + Get the directories representing `target_level` under the directory + pointed to by `cwd`. + """ + if cwd is None: + cwd = os.getcwd() + this_level = level(cwd) + this_idx = levels.index(this_level) + target_idx = levels.index(target_level) + if target_idx <= this_idx: + rel_path = resolve_level(target_level, cwd) + pattern = level_patterns_s[target_idx] + gpattern = os.path.join(cwd, rel_path, pattern) + dirs = glob.glob(gpattern) + else: + patterns = level_patterns_s[this_idx+1:target_idx+1] + dirs = glob.glob(os.path.join(cwd, *patterns)) + return dirs From 7998e54eb1df2d5d0442a35e693570fe32a58883 Mon Sep 17 00:00:00 2001 From: roger Date: Sat, 13 Jun 2020 19:34:40 +0800 Subject: [PATCH 3/5] adds more tests --- tests/test_levels.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/test_levels.py b/tests/test_levels.py index a169c25..32878a8 100644 --- a/tests/test_levels.py +++ b/tests/test_levels.py @@ -1,4 +1,6 @@ import DataProcessingTools as DPT +import tempfile +import os def test_level(): @@ -8,3 +10,23 @@ def test_level(): rr = DPT.levels.resolve_level("session", cwd) assert rr == "./../../.." + + tdir = tempfile.gettempdir() + cwd = os.getcwd() + os.chdir(tdir) + dir1 = "Pancake/20130923/session01/array02/channel33" + dir2 = "Pancake/20130923/session01/array02/channel34" + for d in [dir1,dir2]: + if not os.path.isdir(d): + os.makedirs(d) + dirs = DPT.levels.get_level_dirs("channel", "Pancake/20130923/session01/array02") + assert dirs[0] == "Pancake/20130923/session01/array02/channel33" + assert dirs[1] == "Pancake/20130923/session01/array02/channel34" + + dirs = DPT.levels.get_level_dirs("session", "Pancake/20130923/session01/array02") + assert dirs[0] == "Pancake/20130923/session01/array02/./../../session01" + + dirs = DPT.levels.get_level_dirs("array", "Pancake/20130923/session01/array02") + assert dirs[0] == "Pancake/20130923/session01/array02/./../array02" + + os.chdir(cwd) From 18f533e46e477b540bf33adfc72b12ceae7e861f Mon Sep 17 00:00:00 2001 From: roger Date: Sat, 13 Jun 2020 19:35:59 +0800 Subject: [PATCH 4/5] Updates README --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4879eb2..e2dad99 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,10 @@ cwd = "Pancake/20130923/session01/array01" ll = DPT.levels.level(cwd) # Resolve the relative path from `cwd` to the `session` directory. -rr = DPHT.resolve_level("session", cwd) +rr = DPT.levels.resolve_level("session", cwd) + +# Find all e.g. cell directories under the current directory +celldirs = DPT.levels.get_level_dirs("cell", cwd) ``` ### Objects From c44394f7235d36e0d40360d3d367f1c6da3ba341 Mon Sep 17 00:00:00 2001 From: roger Date: Sat, 13 Jun 2020 19:36:15 +0800 Subject: [PATCH 5/5] Bumps version number --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 54e2b1e..4631103 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup setup(name="DataProcessingTools", - version="0.3.0", + version="0.4.0", description="""Tools for processing data with hierarchical organization""", url="https://github.com/grero/DataProcessingTools.git", author="Roger Herikstad",