|
5 | 5 | from collections import OrderedDict |
6 | 6 | import traceback |
7 | 7 | from pathlib import Path |
| 8 | +import packaging.version |
8 | 9 |
|
9 | 10 | import numpy as np |
10 | 11 | import pandas as pd |
@@ -243,6 +244,14 @@ def _fetch_pykilosort_version(repo_path): |
243 | 244 | pass |
244 | 245 | return f"pykilosort_{version}" |
245 | 246 |
|
| 247 | + @staticmethod |
| 248 | + def _fetch_pykilosort_run_version(log_file): |
| 249 | + with open(log_file) as fid: |
| 250 | + line = fid.readline() |
| 251 | + version = re.search('version (.*), output', line).group(1) |
| 252 | + |
| 253 | + return f"pykilosort_{version}" |
| 254 | + |
246 | 255 | @staticmethod |
247 | 256 | def _fetch_ks2_commit_hash(repo_path): |
248 | 257 | command2run = f"git --git-dir {repo_path}/.git rev-parse --verify HEAD" |
@@ -283,10 +292,13 @@ def _run_pykilosort(self, ap_file): |
283 | 292 | sorter_dir = self.session_path.joinpath("spike_sorters", self.SPIKE_SORTER_NAME, label) |
284 | 293 | FORCE_RERUN = False |
285 | 294 | if not FORCE_RERUN: |
286 | | - if sorter_dir.joinpath(f"spike_sorting_{self.SPIKE_SORTER_NAME}.log").exists(): |
287 | | - _logger.info(f"Already ran: spike_sorting_{self.SPIKE_SORTER_NAME}.log" |
288 | | - f" found in {sorter_dir}, skipping.") |
289 | | - return sorter_dir |
| 295 | + log_file = sorter_dir.joinpath(f"spike_sorting_{self.SPIKE_SORTER_NAME}.log") |
| 296 | + if log_file.exists(): |
| 297 | + run_version = self._fetch_pykilosort_run_version(log_file) |
| 298 | + if packaging.version.parse(run_version) >= packaging.version.parse('pykilosort_ibl_1.1.0'): |
| 299 | + _logger.info(f"Already ran: spike_sorting_{self.SPIKE_SORTER_NAME}.log" |
| 300 | + f" found in {sorter_dir}, skipping.") |
| 301 | + return sorter_dir |
290 | 302 | print(sorter_dir.joinpath(f"spike_sorting_{self.SPIKE_SORTER_NAME}.log")) |
291 | 303 | # get the scratch drive from the shell script |
292 | 304 | with open(self.SHELL_SCRIPT) as fid: |
|
0 commit comments