cg 83.16.4__py3-none-any.whl → 83.17.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cg/__init__.py +1 -1
- cg/cli/post_process/post_process.py +8 -8
- cg/cli/post_process/utils.py +12 -12
- cg/resources/nallo_bundle_filenames.yaml +41 -6
- cg/server/admin.py +7 -7
- cg/services/run_devices/abstract_classes.py +4 -4
- cg/services/run_devices/pacbio/data_storage_service/pacbio_store_service.py +3 -3
- cg/services/run_devices/pacbio/data_transfer_service/dto.py +2 -2
- cg/services/run_devices/pacbio/data_transfer_service/utils.py +2 -2
- cg/services/run_devices/pacbio/housekeeper_service/pacbio_houskeeper_service.py +1 -1
- cg/services/run_devices/pacbio/metrics_parser/metrics_parser.py +1 -1
- cg/services/run_devices/pacbio/post_processing_service.py +17 -12
- cg/services/run_devices/pacbio/run_data_generator/pacbio_run_data_generator.py +11 -9
- cg/services/run_devices/pacbio/run_data_generator/run_data.py +1 -1
- cg/services/run_devices/pacbio/sequencing_runs_service.py +10 -11
- cg/services/run_devices/run_names/pacbio.py +2 -2
- cg/services/run_devices/run_names/service.py +1 -1
- cg/store/crud/create.py +4 -4
- cg/store/crud/read.py +16 -17
- cg/store/models.py +3 -3
- {cg-83.16.4.dist-info → cg-83.17.1.dist-info}/METADATA +1 -1
- {cg-83.16.4.dist-info → cg-83.17.1.dist-info}/RECORD +24 -24
- {cg-83.16.4.dist-info → cg-83.17.1.dist-info}/WHEEL +0 -0
- {cg-83.16.4.dist-info → cg-83.17.1.dist-info}/entry_points.txt +0 -0
cg/__init__.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
__title__ = "cg"
|
|
2
|
-
__version__ = "83.
|
|
2
|
+
__version__ = "83.17.1"
|
|
@@ -6,7 +6,7 @@ import rich_click as click
|
|
|
6
6
|
|
|
7
7
|
from cg.cli.post_process.utils import (
|
|
8
8
|
UnprocessedRunInfo,
|
|
9
|
-
|
|
9
|
+
get_post_processing_service_from_run_full_name,
|
|
10
10
|
get_unprocessed_runs_info,
|
|
11
11
|
)
|
|
12
12
|
from cg.cli.utils import CLICK_CONTEXT_SETTINGS
|
|
@@ -25,18 +25,18 @@ def post_process_group():
|
|
|
25
25
|
|
|
26
26
|
@post_process_group.command(name="run")
|
|
27
27
|
@DRY_RUN
|
|
28
|
-
@click.argument("run-name")
|
|
28
|
+
@click.argument("run-full-name")
|
|
29
29
|
@click.pass_obj
|
|
30
|
-
def post_process_run(context: CGConfig,
|
|
30
|
+
def post_process_run(context: CGConfig, run_full_name: str, dry_run: bool) -> None:
|
|
31
31
|
"""Post-process a sequencing run from the PacBio instrument.
|
|
32
32
|
|
|
33
|
-
run-name is the full name of the sequencing unit of run. For example:
|
|
33
|
+
run-full-name is the full name of the sequencing unit of run. For example:
|
|
34
34
|
PacBio: 'r84202_20240522_133539/1_A01'
|
|
35
35
|
"""
|
|
36
|
-
post_processing_service: PostProcessingService =
|
|
37
|
-
context=context,
|
|
36
|
+
post_processing_service: PostProcessingService = get_post_processing_service_from_run_full_name(
|
|
37
|
+
context=context, run_full_name=run_full_name
|
|
38
38
|
)
|
|
39
|
-
post_processing_service.post_process(
|
|
39
|
+
post_processing_service.post_process(run_full_name=run_full_name, dry_run=dry_run)
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
@post_process_group.command(name="all")
|
|
@@ -58,7 +58,7 @@ def post_process_all_runs(context: CGConfig, instrument: str, dry_run: bool) ->
|
|
|
58
58
|
)
|
|
59
59
|
for run in unprocessed_runs:
|
|
60
60
|
try:
|
|
61
|
-
run.post_processing_service.post_process(
|
|
61
|
+
run.post_processing_service.post_process(run_full_name=run.name, dry_run=dry_run)
|
|
62
62
|
except Exception as error:
|
|
63
63
|
LOG.error(f"Could not post-process {run.instrument} run {run.name}: {error}")
|
|
64
64
|
exit_success = False
|
cg/cli/post_process/utils.py
CHANGED
|
@@ -25,17 +25,17 @@ class UnprocessedRunInfo(BaseModel):
|
|
|
25
25
|
model_config = ConfigDict(arbitrary_types_allowed=True)
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
def
|
|
29
|
-
context: CGConfig,
|
|
28
|
+
def get_post_processing_service_from_run_full_name(
|
|
29
|
+
context: CGConfig, run_full_name: str
|
|
30
30
|
) -> PacBioPostProcessingService:
|
|
31
|
-
"""Get the correct post-processing service based on the run name."""
|
|
31
|
+
"""Get the correct post-processing service based on the run full name."""
|
|
32
32
|
try:
|
|
33
33
|
device: str = get_item_by_pattern_in_source(
|
|
34
|
-
source=
|
|
34
|
+
source=run_full_name, pattern_map=PATTERN_TO_DEVICE_MAP
|
|
35
35
|
)
|
|
36
36
|
except CgError as error:
|
|
37
37
|
raise NameError(
|
|
38
|
-
f"Run name {
|
|
38
|
+
f"Run name {run_full_name} does not match with any known sequencing run name pattern"
|
|
39
39
|
) from error
|
|
40
40
|
return getattr(context.post_processing_services, device)
|
|
41
41
|
|
|
@@ -48,7 +48,7 @@ def get_unprocessed_runs_info(context: CGConfig, instrument: str) -> list[Unproc
|
|
|
48
48
|
run_names_service: RunNamesService = getattr(context.run_names_services, instrument_name)
|
|
49
49
|
runs.extend(
|
|
50
50
|
_get_unprocessed_runs_from_run_names(
|
|
51
|
-
|
|
51
|
+
run_full_names=run_names_service.get_run_full_names(),
|
|
52
52
|
post_processing_service=getattr(context.post_processing_services, instrument_name),
|
|
53
53
|
instrument_name=instrument_name,
|
|
54
54
|
)
|
|
@@ -63,18 +63,18 @@ def _instruments_to_check(instrument: str) -> list[str]:
|
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
def _get_unprocessed_runs_from_run_names(
|
|
66
|
-
|
|
66
|
+
run_full_names: list[str], post_processing_service: PostProcessingService, instrument_name
|
|
67
67
|
) -> list[UnprocessedRunInfo]:
|
|
68
68
|
LOG.debug(f"Adding {instrument_name} run names to the post-processing list")
|
|
69
69
|
runs: list[UnprocessedRunInfo] = []
|
|
70
|
-
for
|
|
71
|
-
if post_processing_service.is_run_processed(
|
|
72
|
-
LOG.debug(f"Run {
|
|
70
|
+
for full_name in run_full_names:
|
|
71
|
+
if post_processing_service.is_run_processed(full_name):
|
|
72
|
+
LOG.debug(f"Run {full_name} has already been post-processed. Skipping")
|
|
73
73
|
continue
|
|
74
|
-
if post_processing_service.can_post_processing_start(
|
|
74
|
+
if post_processing_service.can_post_processing_start(full_name):
|
|
75
75
|
runs.append(
|
|
76
76
|
UnprocessedRunInfo(
|
|
77
|
-
name=
|
|
77
|
+
name=full_name,
|
|
78
78
|
post_processing_service=post_processing_service,
|
|
79
79
|
instrument=instrument_name,
|
|
80
80
|
)
|
|
@@ -282,32 +282,67 @@
|
|
|
282
282
|
id: SAMPLEID
|
|
283
283
|
path: PATHTOCASE/methylation/pileup/SAMPLEID/SAMPLEID_modkit_pileup_1.bed.gz
|
|
284
284
|
step: methylation_pileup
|
|
285
|
-
tag:
|
|
285
|
+
tag: modkit_hap1
|
|
286
286
|
- format: bed
|
|
287
287
|
id: SAMPLEID
|
|
288
288
|
path: PATHTOCASE/methylation/pileup/SAMPLEID/SAMPLEID_modkit_pileup_1.bed.gz.tbi
|
|
289
289
|
step: methylation_pileup
|
|
290
|
-
tag:
|
|
290
|
+
tag: modkit_hap1_index
|
|
291
291
|
- format: bed
|
|
292
292
|
id: SAMPLEID
|
|
293
293
|
path: PATHTOCASE/methylation/pileup/SAMPLEID/SAMPLEID_modkit_pileup_2.bed.gz
|
|
294
294
|
step: methylation_pileup
|
|
295
|
-
tag:
|
|
295
|
+
tag: modkit_hap2
|
|
296
296
|
- format: bed
|
|
297
297
|
id: SAMPLEID
|
|
298
298
|
path: PATHTOCASE/methylation/pileup/SAMPLEID/SAMPLEID_modkit_pileup_2.bed.gz.tbi
|
|
299
299
|
step: methylation_pileup
|
|
300
|
-
tag:
|
|
300
|
+
tag: modkit_hap2_index
|
|
301
301
|
- format: bed
|
|
302
302
|
id: SAMPLEID
|
|
303
303
|
path: PATHTOCASE/methylation/pileup/SAMPLEID/SAMPLEID_modkit_pileup_ungrouped.bed.gz
|
|
304
304
|
step: methylation_pileup
|
|
305
|
-
tag:
|
|
305
|
+
tag: modkit_ungrouped
|
|
306
306
|
- format: bed
|
|
307
307
|
id: SAMPLEID
|
|
308
308
|
path: PATHTOCASE/methylation/pileup/SAMPLEID/SAMPLEID_modkit_pileup_ungrouped.bed.gz.tbi
|
|
309
309
|
step: methylation_pileup
|
|
310
|
-
tag:
|
|
310
|
+
tag: modkit_ungrouped_index
|
|
311
|
+
- format: bed
|
|
312
|
+
id: SAMPLEID
|
|
313
|
+
path: PATHTOCASE/methylation/pileup/SAMPLEID/SAMPLEID_pbcpgtools.hap1.bed.gz
|
|
314
|
+
step: methylation_pileup
|
|
315
|
+
tag: methbat_hap1
|
|
316
|
+
- format: bed
|
|
317
|
+
id: SAMPLEID
|
|
318
|
+
path: PATHTOCASE/methylation/pileup/SAMPLEID/SAMPLEID_pbcpgtools.hap1.bed.gz.tbi
|
|
319
|
+
step: methylation_pileup
|
|
320
|
+
tag: methbat_hap1_index
|
|
321
|
+
- format: bed
|
|
322
|
+
id: SAMPLEID
|
|
323
|
+
path: PATHTOCASE/methylation/pileup/SAMPLEID/SAMPLEID_pbcpgtools.hap2.bed.gz
|
|
324
|
+
step: methylation_pileup
|
|
325
|
+
tag: methbat_hap2
|
|
326
|
+
- format: bed
|
|
327
|
+
id: SAMPLEID
|
|
328
|
+
path: PATHTOCASE/methylation/pileup/SAMPLEID/SAMPLEID_pbcpgtools.hap2.bed.gz.tbi
|
|
329
|
+
step: methylation_pileup
|
|
330
|
+
tag: methbat_hap2_index
|
|
331
|
+
- format: bed
|
|
332
|
+
id: SAMPLEID
|
|
333
|
+
path: PATHTOCASE/methylation/pileup/SAMPLEID/SAMPLEID_pbcpgtools.combined.bed.gz
|
|
334
|
+
step: methylation_pileup
|
|
335
|
+
tag: methbat_combined
|
|
336
|
+
- format: bed
|
|
337
|
+
id: SAMPLEID
|
|
338
|
+
path: PATHTOCASE/methylation/pileup/SAMPLEID/SAMPLEID_pbcpgtools.combined.bed.gz.tbi
|
|
339
|
+
step: methylation_pileup
|
|
340
|
+
tag: methbat_combined_index
|
|
341
|
+
- format: tsv
|
|
342
|
+
id: SAMPLEID
|
|
343
|
+
path: PATHTOCASE/methylation/profile/SAMPLEID/SAMPLEID_methbat_profile.tsv
|
|
344
|
+
step: methylation_calling
|
|
345
|
+
tag: methbat_profile
|
|
311
346
|
- format: meta
|
|
312
347
|
id: SAMPLEID
|
|
313
348
|
path: PATHTOCASE/qc/mosdepth/SAMPLEID/SAMPLEID.per-base.d4
|
cg/server/admin.py
CHANGED
|
@@ -911,7 +911,7 @@ class PacbioSmrtCellMetricsView(BaseView):
|
|
|
911
911
|
|
|
912
912
|
column_list = (
|
|
913
913
|
"internal_id",
|
|
914
|
-
"sequencing_run.
|
|
914
|
+
"sequencing_run.run_id",
|
|
915
915
|
"movie_name",
|
|
916
916
|
"well",
|
|
917
917
|
"plate",
|
|
@@ -935,9 +935,9 @@ class PacbioSmrtCellMetricsView(BaseView):
|
|
|
935
935
|
"internal_id": view_pacbio_sample_sequencing_metrics_link,
|
|
936
936
|
"model": view_smrt_cell_model,
|
|
937
937
|
}
|
|
938
|
-
column_labels = {"sequencing_run.
|
|
938
|
+
column_labels = {"sequencing_run.run_id": "Run ID"}
|
|
939
939
|
column_default_sort = ("completed_at", True)
|
|
940
|
-
column_searchable_list = ["device.internal_id", "movie_name", "sequencing_run.
|
|
940
|
+
column_searchable_list = ["device.internal_id", "movie_name", "sequencing_run.run_id"]
|
|
941
941
|
column_sortable_list = [
|
|
942
942
|
("internal_id", "device.internal_id"),
|
|
943
943
|
"started_at",
|
|
@@ -967,7 +967,7 @@ class PacbioSmrtCellMetricsView(BaseView):
|
|
|
967
967
|
class PacbioSampleRunMetricsView(BaseView):
|
|
968
968
|
column_filters = [
|
|
969
969
|
"instrument_run.plate",
|
|
970
|
-
"instrument_run.sequencing_run.
|
|
970
|
+
"instrument_run.sequencing_run.run_id",
|
|
971
971
|
]
|
|
972
972
|
column_formatters = {
|
|
973
973
|
"smrt_cell": PacbioSmrtCellMetricsView.view_smrt_cell_link,
|
|
@@ -975,12 +975,12 @@ class PacbioSampleRunMetricsView(BaseView):
|
|
|
975
975
|
}
|
|
976
976
|
column_labels = {
|
|
977
977
|
"instrument_run.plate": "Plate",
|
|
978
|
-
"instrument_run.sequencing_run.
|
|
978
|
+
"instrument_run.sequencing_run.run_id": "Run ID",
|
|
979
979
|
}
|
|
980
980
|
column_list = [
|
|
981
981
|
"smrt_cell",
|
|
982
982
|
"sample",
|
|
983
|
-
"instrument_run.sequencing_run.
|
|
983
|
+
"instrument_run.sequencing_run.run_id",
|
|
984
984
|
"instrument_run.plate",
|
|
985
985
|
"hifi_reads",
|
|
986
986
|
"hifi_yield",
|
|
@@ -990,5 +990,5 @@ class PacbioSampleRunMetricsView(BaseView):
|
|
|
990
990
|
column_searchable_list = [
|
|
991
991
|
"sample.internal_id",
|
|
992
992
|
"instrument_run.device.internal_id",
|
|
993
|
-
"instrument_run.sequencing_run.
|
|
993
|
+
"instrument_run.sequencing_run.run_id",
|
|
994
994
|
]
|
|
@@ -14,7 +14,7 @@ class RunDataGenerator(ABC):
|
|
|
14
14
|
"""Abstract class that holds functionality to create a run data object."""
|
|
15
15
|
|
|
16
16
|
@abstractmethod
|
|
17
|
-
def get_run_data(self,
|
|
17
|
+
def get_run_data(self, run_full_name: str, sequencing_dir: str) -> RunData:
|
|
18
18
|
"""Get the run data for a sequencing run."""
|
|
19
19
|
pass
|
|
20
20
|
|
|
@@ -87,17 +87,17 @@ class PostProcessingService(ABC):
|
|
|
87
87
|
"""Abstract class that encapsulates the logic required for post-processing a sequencing run."""
|
|
88
88
|
|
|
89
89
|
@abstractmethod
|
|
90
|
-
def post_process(self,
|
|
90
|
+
def post_process(self, run_full_name: str, dry_run: bool = False):
|
|
91
91
|
"""Store sequencing metrics in StatusDB and relevant files in Housekeeper."""
|
|
92
92
|
pass
|
|
93
93
|
|
|
94
94
|
@abstractmethod
|
|
95
|
-
def is_run_processed(self,
|
|
95
|
+
def is_run_processed(self, run_full_name: str) -> bool:
|
|
96
96
|
"""Check if a run has been post-processed."""
|
|
97
97
|
pass
|
|
98
98
|
|
|
99
99
|
@abstractmethod
|
|
100
|
-
def can_post_processing_start(self,
|
|
100
|
+
def can_post_processing_start(self, run_full_name: str) -> bool:
|
|
101
101
|
"""Check if a run can be post processed."""
|
|
102
102
|
pass
|
|
103
103
|
|
|
@@ -41,8 +41,8 @@ class PacBioStoreService(PostProcessingStoreService):
|
|
|
41
41
|
try:
|
|
42
42
|
return self.store.create_pacbio_sequencing_run(sequencing_run_dto)
|
|
43
43
|
except PacbioSequencingRunAlreadyExistsError:
|
|
44
|
-
LOG.debug(f"Sequencing run {sequencing_run_dto.
|
|
45
|
-
return self.store.
|
|
44
|
+
LOG.debug(f"Sequencing run {sequencing_run_dto.run_id} already exists")
|
|
45
|
+
return self.store.get_pacbio_sequencing_run_by_run_id(sequencing_run_dto.run_id)
|
|
46
46
|
|
|
47
47
|
def _create_pacbio_smrt_cell_metrics(
|
|
48
48
|
self,
|
|
@@ -108,5 +108,5 @@ class PacBioStoreService(PostProcessingStoreService):
|
|
|
108
108
|
f"Dry run, no entries will be added to database for SMRT cell {run_data.full_path}."
|
|
109
109
|
)
|
|
110
110
|
return
|
|
111
|
-
LOG.debug(f"Data stored in statusDB for run {run_data.
|
|
111
|
+
LOG.debug(f"Data stored in statusDB for run {run_data.run_id}")
|
|
112
112
|
self.store.commit_to_store()
|
|
@@ -12,7 +12,7 @@ class PacBioSMRTCellMetricsDTO(BaseModel):
|
|
|
12
12
|
type: DeviceType
|
|
13
13
|
well: str
|
|
14
14
|
plate: int
|
|
15
|
-
|
|
15
|
+
run_id: str
|
|
16
16
|
movie_name: str
|
|
17
17
|
started_at: datetime
|
|
18
18
|
completed_at: datetime
|
|
@@ -64,7 +64,7 @@ class PacBioSampleSequencingMetricsDTO(BaseModel):
|
|
|
64
64
|
|
|
65
65
|
class PacBioSequencingRunDTO(BaseModel):
|
|
66
66
|
instrument_name: RevioNames
|
|
67
|
-
|
|
67
|
+
run_id: str
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
class PacBioDTOs(PostProcessingDTOs):
|
|
@@ -22,7 +22,7 @@ def get_smrt_cell_metrics_dto(
|
|
|
22
22
|
type=DeviceType.PACBIO,
|
|
23
23
|
well=metrics.dataset_metrics.well,
|
|
24
24
|
plate=metrics.dataset_metrics.plate,
|
|
25
|
-
|
|
25
|
+
run_id=run_data.run_id,
|
|
26
26
|
started_at=metrics.dataset_metrics.run_started_at,
|
|
27
27
|
completed_at=metrics.dataset_metrics.run_completed_at,
|
|
28
28
|
hifi_reads=metrics.read.hifi_reads,
|
|
@@ -81,5 +81,5 @@ def get_sequencing_run_dto(
|
|
|
81
81
|
) -> PacBioSequencingRunDTO:
|
|
82
82
|
return PacBioSequencingRunDTO(
|
|
83
83
|
instrument_name=metrics.dataset_metrics.instrument_name, # type: ignore - pydantic will convert to correct type
|
|
84
|
-
|
|
84
|
+
run_id=run_data.run_id,
|
|
85
85
|
)
|
|
@@ -60,7 +60,7 @@ class PacBioHousekeeperService(PostProcessingHKService):
|
|
|
60
60
|
file_path=bundle_info.file_path,
|
|
61
61
|
tags=bundle_info.tags,
|
|
62
62
|
)
|
|
63
|
-
LOG.debug(f"Files stored in Housekeeper for run {run_data.
|
|
63
|
+
LOG.debug(f"Files stored in Housekeeper for run {run_data.run_id}")
|
|
64
64
|
|
|
65
65
|
@staticmethod
|
|
66
66
|
def _get_bundle_type_for_file(file_path: Path) -> str:
|
|
@@ -64,7 +64,7 @@ class PacBioMetricsParser(PostProcessingMetricsParser):
|
|
|
64
64
|
metrics_files=metrics_files, file_name=PacBioDirsAndFiles.BARCODES_REPORT
|
|
65
65
|
)
|
|
66
66
|
sample_metrics: list[SampleMetrics] = get_parsed_sample_metrics(metrics_files)
|
|
67
|
-
LOG.debug(f"All metrics parsed for run {run_data.
|
|
67
|
+
LOG.debug(f"All metrics parsed for run {run_data.run_id}")
|
|
68
68
|
return PacBioMetrics(
|
|
69
69
|
read=read_metrics,
|
|
70
70
|
control=control_metrics,
|
|
@@ -51,38 +51,43 @@ class PacBioPostProcessingService(PostProcessingService):
|
|
|
51
51
|
),
|
|
52
52
|
to_raise=PostProcessingError,
|
|
53
53
|
)
|
|
54
|
-
def post_process(self,
|
|
55
|
-
LOG.info(f"Starting Pacbio post-processing for run: {
|
|
54
|
+
def post_process(self, run_full_name: str, dry_run: bool = False) -> None:
|
|
55
|
+
LOG.info(f"Starting Pacbio post-processing for run: {run_full_name}")
|
|
56
56
|
run_data: PacBioRunData = self.run_data_generator.get_run_data(
|
|
57
|
-
|
|
57
|
+
run_full_name=run_full_name, sequencing_dir=self.sequencing_dir
|
|
58
58
|
)
|
|
59
59
|
self.run_validator.ensure_post_processing_can_start(run_data)
|
|
60
60
|
self.store_service.store_post_processing_data(run_data=run_data, dry_run=dry_run)
|
|
61
61
|
self.hk_service.store_files_in_housekeeper(run_data=run_data, dry_run=dry_run)
|
|
62
62
|
self._touch_post_processing_complete(run_data=run_data, dry_run=dry_run)
|
|
63
63
|
|
|
64
|
-
def is_run_processed(self,
|
|
64
|
+
def is_run_processed(self, run_full_name: str) -> bool:
|
|
65
65
|
"""Check if a run has been post-processed."""
|
|
66
|
-
processing_complete_file = Path(
|
|
66
|
+
processing_complete_file = Path(
|
|
67
|
+
self.sequencing_dir, run_full_name, POST_PROCESSING_COMPLETED
|
|
68
|
+
)
|
|
67
69
|
return processing_complete_file.exists()
|
|
68
70
|
|
|
69
|
-
def can_post_processing_start(self,
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
def can_post_processing_start(self, run_full_name: str) -> bool:
|
|
72
|
+
"""Makes sure that all SMRT cells in the sequencing run are ready to be post-processed."""
|
|
73
|
+
LOG.debug(f"Checking if Pacbio post-processing can start for run: {run_full_name}")
|
|
74
|
+
parent_directory: Path = Path(self.sequencing_dir, run_full_name).parent
|
|
72
75
|
all_smrt_cells_are_ready: bool = all(
|
|
73
76
|
self.is_smrt_cell_ready_for_post_processing(f"{parent_directory.name}/{smrt_cell.name}")
|
|
74
77
|
for smrt_cell in parent_directory.iterdir()
|
|
75
78
|
)
|
|
76
79
|
return all_smrt_cells_are_ready
|
|
77
80
|
|
|
78
|
-
def is_smrt_cell_ready_for_post_processing(self,
|
|
79
|
-
LOG.debug(f"Checking if Pacbio SMRT-cell {
|
|
81
|
+
def is_smrt_cell_ready_for_post_processing(self, smrt_cell_full_name: str) -> bool:
|
|
82
|
+
LOG.debug(f"Checking if Pacbio SMRT-cell {smrt_cell_full_name} is ready for postprocessing")
|
|
80
83
|
try:
|
|
81
84
|
run_data: PacBioRunData = self.run_data_generator.get_run_data(
|
|
82
|
-
|
|
85
|
+
run_full_name=smrt_cell_full_name, sequencing_dir=self.sequencing_dir
|
|
83
86
|
)
|
|
84
87
|
self.run_validator.validate_run_files(run_data)
|
|
85
88
|
except PostProcessingRunFileManagerError as error:
|
|
86
|
-
LOG.debug(
|
|
89
|
+
LOG.debug(
|
|
90
|
+
f"Run {smrt_cell_full_name} is not ready for post-processing. {error.args[0]}."
|
|
91
|
+
)
|
|
87
92
|
return False
|
|
88
93
|
return True
|
|
@@ -17,24 +17,26 @@ class PacBioRunDataGenerator(RunDataGenerator):
|
|
|
17
17
|
@handle_post_processing_errors(
|
|
18
18
|
to_except=(ValueError,), to_raise=PostProcessingRunDataGeneratorError
|
|
19
19
|
)
|
|
20
|
-
def get_run_data(self,
|
|
20
|
+
def get_run_data(self, run_full_name: str, sequencing_dir: str) -> PacBioRunData:
|
|
21
21
|
"""
|
|
22
22
|
Get the run data for a PacBio SMRT cell run.
|
|
23
|
-
|
|
23
|
+
run_full_name should include the PacBio run including plate well, e.g. 'r84202_20240522_133539/1_A01'
|
|
24
24
|
"""
|
|
25
|
-
self._validate_run_name(
|
|
26
|
-
full_path = Path(sequencing_dir,
|
|
25
|
+
self._validate_run_name(run_full_name)
|
|
26
|
+
full_path = Path(sequencing_dir, run_full_name)
|
|
27
27
|
|
|
28
28
|
return PacBioRunData(
|
|
29
29
|
full_path=full_path,
|
|
30
|
-
|
|
31
|
-
well_name=self._get_well(
|
|
32
|
-
plate=self._get_plate(
|
|
30
|
+
run_id=self._get_run_id_from_run_full_name(run_full_name),
|
|
31
|
+
well_name=self._get_well(run_full_name),
|
|
32
|
+
plate=self._get_plate(run_full_name), # type: ignore Pydantic transforming
|
|
33
33
|
)
|
|
34
34
|
|
|
35
35
|
@staticmethod
|
|
36
|
-
def
|
|
37
|
-
|
|
36
|
+
def _get_run_id_from_run_full_name(
|
|
37
|
+
run_full_name: str,
|
|
38
|
+
) -> str:
|
|
39
|
+
return run_full_name.split("/")[0]
|
|
38
40
|
|
|
39
41
|
@staticmethod
|
|
40
42
|
def _get_plate_well(run_name: str) -> str:
|
|
@@ -14,17 +14,16 @@ class PacbioSequencingRunsService:
|
|
|
14
14
|
self.store = store
|
|
15
15
|
|
|
16
16
|
def get_sequencing_runs_by_name(self, run_name: str) -> PacbioSmrtCellMetricsResponse:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
run_name
|
|
17
|
+
metrics: list[PacbioSmrtCellMetricsDTO] = []
|
|
18
|
+
db_smrt_cell_metrics: list[PacbioSMRTCellMetrics] = (
|
|
19
|
+
self.store.get_pacbio_smrt_cell_metrics_by_run_id(run_name)
|
|
20
20
|
)
|
|
21
|
-
for
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return PacbioSmrtCellMetricsResponse(runs=runs)
|
|
21
|
+
for metric in db_smrt_cell_metrics:
|
|
22
|
+
metric_dict = metric.to_dict()
|
|
23
|
+
metric_dict["internal_id"] = metric.device.internal_id
|
|
24
|
+
metric_dict["run_name"] = metric.run_id
|
|
25
|
+
metrics.append(PacbioSmrtCellMetricsDTO.model_validate(metric_dict))
|
|
26
|
+
return PacbioSmrtCellMetricsResponse(runs=metrics)
|
|
28
27
|
|
|
29
28
|
def get_sequencing_runs(self, page: int = 0, page_size: int = 0) -> PacbioSequencingRunResponse:
|
|
30
29
|
db_runs, total_count = self.store.get_pacbio_sequencing_runs(page=page, page_size=page_size)
|
|
@@ -32,7 +31,7 @@ class PacbioSequencingRunsService:
|
|
|
32
31
|
for db_run in db_runs:
|
|
33
32
|
run = PacbioSequencingRunDTO(
|
|
34
33
|
id=db_run.id,
|
|
35
|
-
run_name=db_run.
|
|
34
|
+
run_name=db_run.run_id,
|
|
36
35
|
comment=db_run.comment,
|
|
37
36
|
processed=db_run.processed,
|
|
38
37
|
)
|
|
@@ -5,9 +5,9 @@ from cg.services.run_devices.run_names.service import RunNamesService
|
|
|
5
5
|
|
|
6
6
|
class PacbioRunNamesService(RunNamesService):
|
|
7
7
|
|
|
8
|
-
def
|
|
8
|
+
def get_run_full_names(self) -> list[str]:
|
|
9
9
|
"""
|
|
10
|
-
Get all the
|
|
10
|
+
Get all the SMRTcell full names from the PacBio sequencing directory in the form
|
|
11
11
|
<sequencing_run>/<SMRTcell>, for example:
|
|
12
12
|
r84202_20240913_121403/1_C01
|
|
13
13
|
"""
|
cg/store/crud/create.py
CHANGED
|
@@ -513,17 +513,17 @@ class CreateMixin(ReadHandler):
|
|
|
513
513
|
"""
|
|
514
514
|
if (
|
|
515
515
|
self._get_query(table=PacbioSequencingRun)
|
|
516
|
-
.filter(PacbioSequencingRun.
|
|
516
|
+
.filter(PacbioSequencingRun.run_id == pacbio_sequencing_run_dto.run_id)
|
|
517
517
|
.first()
|
|
518
518
|
):
|
|
519
519
|
raise PacbioSequencingRunAlreadyExistsError(
|
|
520
|
-
message=f"{pacbio_sequencing_run_dto.
|
|
520
|
+
message=f"{pacbio_sequencing_run_dto.run_id} already exists."
|
|
521
521
|
)
|
|
522
522
|
else:
|
|
523
|
-
LOG.debug(f"Creating Pacbio Sequencing Run for {pacbio_sequencing_run_dto.
|
|
523
|
+
LOG.debug(f"Creating Pacbio Sequencing Run for {pacbio_sequencing_run_dto.run_id}")
|
|
524
524
|
sequencing_run = PacbioSequencingRun(
|
|
525
525
|
instrument_name=pacbio_sequencing_run_dto.instrument_name,
|
|
526
|
-
|
|
526
|
+
run_id=pacbio_sequencing_run_dto.run_id,
|
|
527
527
|
)
|
|
528
528
|
self.add_item_to_store(sequencing_run)
|
|
529
529
|
return sequencing_run
|
cg/store/crud/read.py
CHANGED
|
@@ -1808,21 +1808,20 @@ class ReadHandler(BaseHandler):
|
|
|
1808
1808
|
sequencing_metrics = sequencing_metrics.filter(RunDevice.internal_id.in_(smrt_cell_ids))
|
|
1809
1809
|
return sequencing_metrics.all()
|
|
1810
1810
|
|
|
1811
|
-
def
|
|
1812
|
-
self, run_name: str
|
|
1813
|
-
) -> list[PacbioSMRTCellMetrics]:
|
|
1811
|
+
def get_pacbio_smrt_cell_metrics_by_run_id(self, run_id: str) -> list[PacbioSMRTCellMetrics]:
|
|
1814
1812
|
"""
|
|
1815
|
-
Fetches data from
|
|
1813
|
+
Fetches data from PacbioSMRTCellMetrics filtered on run ID.
|
|
1816
1814
|
Raises:
|
|
1817
|
-
EntryNotFoundError if no
|
|
1815
|
+
EntryNotFoundError if no SMRT cell metrics are found for the run ID
|
|
1818
1816
|
"""
|
|
1819
|
-
|
|
1820
|
-
PacbioSMRTCellMetrics
|
|
1817
|
+
metrics: Query = (
|
|
1818
|
+
self._get_query(table=PacbioSMRTCellMetrics)
|
|
1819
|
+
.join(PacbioSMRTCellMetrics.sequencing_run)
|
|
1820
|
+
.filter(PacbioSequencingRun.run_id == run_id)
|
|
1821
1821
|
)
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
return runs.all()
|
|
1822
|
+
if metrics.count() == 0:
|
|
1823
|
+
raise EntryNotFoundError(f"Could not find any SMRT Cell metrics for run {run_id}")
|
|
1824
|
+
return metrics.all()
|
|
1826
1825
|
|
|
1827
1826
|
def get_pacbio_sequencing_runs(
|
|
1828
1827
|
self, page: int = 0, page_size: int = 0
|
|
@@ -1856,7 +1855,7 @@ class ReadHandler(BaseHandler):
|
|
|
1856
1855
|
|
|
1857
1856
|
def get_pacbio_sequencing_run_by_id(self, id: int):
|
|
1858
1857
|
"""
|
|
1859
|
-
Get Pacbio Sequencing run by id.
|
|
1858
|
+
Get Pacbio Sequencing run by database id.
|
|
1860
1859
|
Raises:
|
|
1861
1860
|
PacbioSequencingRunNotFoundError: If no Pacbio sequencing run is found with the given id.
|
|
1862
1861
|
"""
|
|
@@ -1871,15 +1870,15 @@ class ReadHandler(BaseHandler):
|
|
|
1871
1870
|
f"Pacbio Sequencing run with id {id} was not found in the database."
|
|
1872
1871
|
)
|
|
1873
1872
|
|
|
1874
|
-
def
|
|
1873
|
+
def get_pacbio_sequencing_run_by_run_id(self, run_id: str) -> PacbioSequencingRun:
|
|
1875
1874
|
"""
|
|
1876
|
-
Get Pacbio Sequencing run by run name.
|
|
1877
1875
|
Raises:
|
|
1878
|
-
PacbioSequencingRunNotFoundError: If no Pacbio sequencing run is found with the given
|
|
1876
|
+
PacbioSequencingRunNotFoundError: If no Pacbio sequencing run is found with the given
|
|
1877
|
+
run ID.
|
|
1879
1878
|
"""
|
|
1880
1879
|
try:
|
|
1881
|
-
return self._get_query(table=PacbioSequencingRun).filter_by(
|
|
1880
|
+
return self._get_query(table=PacbioSequencingRun).filter_by(run_id=run_id).one()
|
|
1882
1881
|
except sqlalchemy.orm.exc.NoResultFound:
|
|
1883
1882
|
raise PacbioSequencingRunNotFoundError(
|
|
1884
|
-
f"Pacbio Sequencing run with
|
|
1883
|
+
f"Pacbio Sequencing run with ID {run_id} was not found in the database."
|
|
1885
1884
|
)
|
cg/store/models.py
CHANGED
|
@@ -1113,8 +1113,8 @@ class PacbioSMRTCellMetrics(InstrumentRun):
|
|
|
1113
1113
|
__mapper_args__ = {"polymorphic_identity": DeviceType.PACBIO}
|
|
1114
1114
|
|
|
1115
1115
|
@property
|
|
1116
|
-
def
|
|
1117
|
-
return self.sequencing_run.
|
|
1116
|
+
def run_id(self) -> str:
|
|
1117
|
+
return self.sequencing_run.run_id
|
|
1118
1118
|
|
|
1119
1119
|
def to_dict(self):
|
|
1120
1120
|
return to_dict(self)
|
|
@@ -1185,7 +1185,7 @@ class PacbioSequencingRun(Base):
|
|
|
1185
1185
|
__tablename__ = "pacbio_sequencing_run"
|
|
1186
1186
|
|
|
1187
1187
|
id: Mapped[PrimaryKeyInt]
|
|
1188
|
-
|
|
1188
|
+
run_id: Mapped[Str64] = mapped_column(unique=True)
|
|
1189
1189
|
processed: Mapped[bool] = mapped_column(default=False)
|
|
1190
1190
|
comment: Mapped[Text] = mapped_column(default="")
|
|
1191
1191
|
instrument_name: Mapped[RevioNames] = mapped_column(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
cg/__init__.py,sha256=
|
|
1
|
+
cg/__init__.py,sha256=Zve1eNmtgbcknDgSp0wAaJYTe-LWKuPFhrQEKOFwKkM,41
|
|
2
2
|
cg/apps/__init__.py,sha256=pYf0vxo4iYQqURzFRYzqpOCdV8Cm9MWx0GHvJOz0EMg,315
|
|
3
3
|
cg/apps/coverage/__init__.py,sha256=dJtsmNf8tODE2-VEomMIoYA7ugLYZAk_upsfOQCZeF8,27
|
|
4
4
|
cg/apps/coverage/api.py,sha256=e_ozC3QeNKoEfpjjMaL-XjeBLtz-JySWccrtw0E9mLM,2940
|
|
@@ -102,8 +102,8 @@ cg/cli/generate/delivery_report/options.py,sha256=Y1eDU5jBkaSW1XAaNptmQgS88trbiX
|
|
|
102
102
|
cg/cli/generate/delivery_report/utils.py,sha256=0suksAiXslNr3eE7H0YiGADeJlCMeA9LRmDOforY0Xw,5423
|
|
103
103
|
cg/cli/get.py,sha256=sqKX2tDWnCE6zTwcMBCOb796Bc9rvu1AYLkONQ3Sq0w,8852
|
|
104
104
|
cg/cli/post_process/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
105
|
-
cg/cli/post_process/post_process.py,sha256=
|
|
106
|
-
cg/cli/post_process/utils.py,sha256=
|
|
105
|
+
cg/cli/post_process/post_process.py,sha256=Abq77qlyYe60O4NRLboA5c33rGJp9iWj7t7RBatFrgk,2417
|
|
106
|
+
cg/cli/post_process/utils.py,sha256=0zIwcVrXUKmfJYqFLJP3GSu_OWK2A-apeaY9LrYQz8U,3263
|
|
107
107
|
cg/cli/sequencing_qc/sequencing_qc.py,sha256=anMscRw9Ulp3t2tQuLNuPE1HDtWTISgh_4yJourvAyA,494
|
|
108
108
|
cg/cli/set/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
109
109
|
cg/cli/set/base.py,sha256=gqdDpKS32rM29sQxPyK6fLf0Of6G1Un7htkAxZHkvKo,10453
|
|
@@ -460,13 +460,13 @@ cg/models/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
|
|
|
460
460
|
cg/models/workflow/mutant.py,sha256=Y5cwG7UninrAWCn6R9rTNhSDAkDprCebCilyCBlPIcY,685
|
|
461
461
|
cg/models/workflow/validators.py,sha256=BzbmB9QVDjM1C_7F874PR0QD6xhCZvDG01ItITmFy_s,70
|
|
462
462
|
cg/resources/__init__.py,sha256=mRMKpOEL-NO4JEzQsjTrtDFf8toOtBXK0BhDbPnZGVE,1247
|
|
463
|
-
cg/resources/nallo_bundle_filenames.yaml,sha256=
|
|
463
|
+
cg/resources/nallo_bundle_filenames.yaml,sha256=04mNM5DFovMTct0OixgspKtaP91_hENoo1lMf-YUSjY,17899
|
|
464
464
|
cg/resources/raredisease_bundle_filenames.yaml,sha256=IN8QDcYQNxFVWghvSNLJ2-Udsd5ts3uBqD9rnJGj4kg,25278
|
|
465
465
|
cg/resources/rnafusion_bundle_filenames.yaml,sha256=hoXuTobKbjH7W7dld87rSF7X0r4KxLXuUllX0ISDDXU,3281
|
|
466
466
|
cg/resources/taxprofiler_bundle_filenames.yaml,sha256=AULMEAYkMzADYUtVtuSmBj7UaAIlLGRDyBMEOO0xWz8,2871
|
|
467
467
|
cg/resources/tomte_bundle_filenames.yaml,sha256=lFxk9GssmCyKBUn5lbRBtBS9FS9cABaoVzb-e2zrJac,4144
|
|
468
468
|
cg/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
469
|
-
cg/server/admin.py,sha256=
|
|
469
|
+
cg/server/admin.py,sha256=cvVOR9eMtSbLn7zIGVYjRz8sQ5WnD0x4Hc34yTZVaMk,30123
|
|
470
470
|
cg/server/app.py,sha256=WEULzx5JeC0aJHag3Vltzopd8r7tgHPr_1nbytS-AI8,6975
|
|
471
471
|
cg/server/app_config.py,sha256=8DaNtYtdp6A29FAuTFX-Lk7SLv7Zx-_f57ZU0-T_3ZI,1403
|
|
472
472
|
cg/server/auto.py,sha256=5DqokNScv483imZTvOYrJo6wV9-P7ZGnJaaHnfnNJLs,57
|
|
@@ -819,33 +819,33 @@ cg/services/orders/validation/utils.py,sha256=BcO3FuD2HiDzLU8T-yvIRftccfjTxAfUaW
|
|
|
819
819
|
cg/services/pdc_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
820
820
|
cg/services/pdc_service/pdc_service.py,sha256=cqeVC4d11wQ-8kjXlszHgYPY_JS7sGCLLnPhDlU6MY0,2884
|
|
821
821
|
cg/services/run_devices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
822
|
-
cg/services/run_devices/abstract_classes.py,sha256=
|
|
822
|
+
cg/services/run_devices/abstract_classes.py,sha256=BN3txu4Le8eRDdZ0P5NGPk8ua467uy_jfGPpjbKxgds,3699
|
|
823
823
|
cg/services/run_devices/abstract_models.py,sha256=hu8M8uk0ZStgohllutIxJUP5Hhjv7eUiLuejks2t0GM,377
|
|
824
824
|
cg/services/run_devices/constants.py,sha256=-zI33OxI9XvXlyeSGw8jdqeuD_S1CFQRwWW5w8Pvg00,56
|
|
825
825
|
cg/services/run_devices/error_handler.py,sha256=BXVXy-8i4hr5jd7H5LEPs_sT7YzCzQMNoFV8m7y9BEc,636
|
|
826
826
|
cg/services/run_devices/exc.py,sha256=6MH1yusfPNNa2RSbHhe48-WlUG1YJQsxMK2TkjemloI,1021
|
|
827
827
|
cg/services/run_devices/pacbio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
828
|
-
cg/services/run_devices/pacbio/data_storage_service/pacbio_store_service.py,sha256=
|
|
828
|
+
cg/services/run_devices/pacbio/data_storage_service/pacbio_store_service.py,sha256=5MXVrY3SxIQiMJIGD1iGap2nQWOyBNaoBBLHHEVIZbI,4723
|
|
829
829
|
cg/services/run_devices/pacbio/data_transfer_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
830
830
|
cg/services/run_devices/pacbio/data_transfer_service/data_transfer_service.py,sha256=XqJ6cJc2KfiI0svQFvZe8Hz4EcCDaggbvKkp6HBejag,2410
|
|
831
|
-
cg/services/run_devices/pacbio/data_transfer_service/dto.py,sha256=
|
|
832
|
-
cg/services/run_devices/pacbio/data_transfer_service/utils.py,sha256=
|
|
831
|
+
cg/services/run_devices/pacbio/data_transfer_service/dto.py,sha256=gvHBj51eRRaGuvNj1UmXN4YhvG_22nc4IzTqqua9BAU,2018
|
|
832
|
+
cg/services/run_devices/pacbio/data_transfer_service/utils.py,sha256=6bgCFipgh685iguIJkqSmxGx1KjRk8XZ-Qwi3KY-bDk,4270
|
|
833
833
|
cg/services/run_devices/pacbio/housekeeper_service/models.py,sha256=F1c7dID12XiR4TcyRq4mhRB5gWZz430z0h7sHKcni00,153
|
|
834
|
-
cg/services/run_devices/pacbio/housekeeper_service/pacbio_houskeeper_service.py,sha256=
|
|
834
|
+
cg/services/run_devices/pacbio/housekeeper_service/pacbio_houskeeper_service.py,sha256=6vpuKeft3dUOYocmXv7nRGrQ8ncX16T3Pd2w-2W_1l4,5341
|
|
835
835
|
cg/services/run_devices/pacbio/metrics_parser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
836
|
-
cg/services/run_devices/pacbio/metrics_parser/metrics_parser.py,sha256=
|
|
836
|
+
cg/services/run_devices/pacbio/metrics_parser/metrics_parser.py,sha256=G6XWqlkLs8h2lRcsy9d4CXKJ6u-PeYGYy7K55lzeL2o,3266
|
|
837
837
|
cg/services/run_devices/pacbio/metrics_parser/models.py,sha256=4BTxMv5d5eg2NSoBoZ8EwVqJyGuLTqHacgiSQ3AFL0E,7331
|
|
838
838
|
cg/services/run_devices/pacbio/metrics_parser/utils.py,sha256=Y_Jsj-mnsuVF-iKZ7W1sJAuWqw25ayVonj9ktLHCNfA,3467
|
|
839
|
-
cg/services/run_devices/pacbio/post_processing_service.py,sha256=
|
|
840
|
-
cg/services/run_devices/pacbio/run_data_generator/pacbio_run_data_generator.py,sha256=
|
|
841
|
-
cg/services/run_devices/pacbio/run_data_generator/run_data.py,sha256=
|
|
839
|
+
cg/services/run_devices/pacbio/post_processing_service.py,sha256=Wa8t4rs_mqZdbqgil_ayX_lbhLsxCdH5r4Sg-njT-GI,4209
|
|
840
|
+
cg/services/run_devices/pacbio/run_data_generator/pacbio_run_data_generator.py,sha256=i8UEtEOXAXDr7PQezTz-_40cHqdwddJ8c7fmA1iTQPk,1999
|
|
841
|
+
cg/services/run_devices/pacbio/run_data_generator/run_data.py,sha256=h0TfMtHwyXlRp6SY8OCeTgKbDVcuC3925l0tftbrgZc,255
|
|
842
842
|
cg/services/run_devices/pacbio/run_file_manager/models.py,sha256=C6kycBPx6YKNq2oFJOIhdrcPloi3QIBOrlbaAgeYzgs,192
|
|
843
843
|
cg/services/run_devices/pacbio/run_file_manager/run_file_manager.py,sha256=xW8cKrLKh445hQnmtuIrvg6INs2lMSaDirG83fvimI4,5068
|
|
844
844
|
cg/services/run_devices/pacbio/run_validator/pacbio_run_validator.py,sha256=d8fvmJcByEFPMnwqOe6mQsXXIO87WkXwfK9L_Bx7whg,3037
|
|
845
|
-
cg/services/run_devices/pacbio/sequencing_runs_service.py,sha256=
|
|
845
|
+
cg/services/run_devices/pacbio/sequencing_runs_service.py,sha256=n_noNrPfOAUGizgTpE5n1ezZA0O92XAB9o_FYIzcus8,2145
|
|
846
846
|
cg/services/run_devices/run_names/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
847
|
-
cg/services/run_devices/run_names/pacbio.py,sha256=
|
|
848
|
-
cg/services/run_devices/run_names/service.py,sha256=
|
|
847
|
+
cg/services/run_devices/run_names/pacbio.py,sha256=4l-fCejTMMgAnVQ2RqIyQaqMtVbs_SeDEm6JJ4Dg36U,678
|
|
848
|
+
cg/services/run_devices/run_names/service.py,sha256=d6-paeXsENHlU59eo4FcSXBAhoz50oL6bSglscRo2rQ,293
|
|
849
849
|
cg/services/run_devices/validators.py,sha256=pd3JXd5ITKK70pvrs2wH4ed4fn1_dhu_qvQaSyZDGg4,906
|
|
850
850
|
cg/services/sample_run_metrics_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
851
851
|
cg/services/sample_run_metrics_service/dtos.py,sha256=bJ0BL-QkqXIAAIg3F9edIdzAa_X-r3Yt_RfotAD2IHM,438
|
|
@@ -874,9 +874,9 @@ cg/store/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
874
874
|
cg/store/api/data_classes.py,sha256=vgJehK0zm3SdB4LAQAWvTjoCHfos4N8_Vf0DDshrAnM,289
|
|
875
875
|
cg/store/base.py,sha256=qmIjuWuq_wryBfGoSZny9nvqZj7Hl8N23hcdQ7Hss5I,6885
|
|
876
876
|
cg/store/crud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
877
|
-
cg/store/crud/create.py,sha256=
|
|
877
|
+
cg/store/crud/create.py,sha256=QZiVB4TUsDKops2yqkzL8T82W-MXCBKwtBjnKZSWJ5M,22497
|
|
878
878
|
cg/store/crud/delete.py,sha256=TlpoVWvUQMaRfy5bk-icFf9SSi_0Ir6XpFcAiM22DB0,1386
|
|
879
|
-
cg/store/crud/read.py,sha256=
|
|
879
|
+
cg/store/crud/read.py,sha256=UJ1NLkK3k682v8xk4NFJyPXC2ik-zsYshG6098Yy0aQ,78809
|
|
880
880
|
cg/store/crud/update.py,sha256=FZvOPebNnkWICu1N4gTdFeiMcuTUPglgCDfaxE6G288,6262
|
|
881
881
|
cg/store/database.py,sha256=7B0hZpMSKtu5R885TSI4UBj8id1T5JNBY-tn69n6Fk0,1662
|
|
882
882
|
cg/store/exc.py,sha256=uUCywNSwGus2uZnqmN56LHV84fHfkFYo8jXms1ToCnQ,274
|
|
@@ -903,7 +903,7 @@ cg/store/filters/status_panel_filters.py,sha256=qMYhIsrF9G3mjCvL9b9O2l_cmD3SfPWh
|
|
|
903
903
|
cg/store/filters/status_pool_filters.py,sha256=XcYqe2z5k_q09xpp4cleDMQ4Q3o2y7UPCkB0QUkl1ck,4308
|
|
904
904
|
cg/store/filters/status_sample_filters.py,sha256=mRpt_ik7niMjBo9K7pP8cmdfDMdr0B3I6Tt2MWXkLoc,9656
|
|
905
905
|
cg/store/filters/status_user_filters.py,sha256=sMwKeWqgEtqv8gyhbN_Uf5huPUxbOt5qEqMWVu67Zys,1328
|
|
906
|
-
cg/store/models.py,sha256=
|
|
906
|
+
cg/store/models.py,sha256=lgBbx8O0rqWTbxTPJkaKWSLs9JjFVAZ63e7_uEq9Vsg,44315
|
|
907
907
|
cg/store/store.py,sha256=mz1TfKPlanH2uQyhZdwe_8VKg0IdFolmromKLu668IY,630
|
|
908
908
|
cg/utils/__init__.py,sha256=gGjdV2l_hfWFCTybU6dwDk_FcItM88EIHNPaX6g1qUk,30
|
|
909
909
|
cg/utils/calculations.py,sha256=zLVJO6nNw6n7AW7fHZI56UnQ23lqJrShB4Hh2ow6-TQ,349
|
|
@@ -922,7 +922,7 @@ cg/utils/flask/enum.py,sha256=xwNVtFPkSzoloJctLHu7obRyxcng1GJrhkeYkqwf9tw,1052
|
|
|
922
922
|
cg/utils/mapping.py,sha256=oZpZW2kgsbtAP2FZ7RtRPELiEE1zZk_nAGisHGtCOUo,491
|
|
923
923
|
cg/utils/time.py,sha256=_VOglhrFEZ5cwHK1U1g36SdwzB7UvV-Nvlt4ymuZUho,1501
|
|
924
924
|
cg/utils/utils.py,sha256=RciI_UhWcnG_pMZrmQZ1ZYb-O1N0DweTYMmhE0SIRgQ,1410
|
|
925
|
-
cg-83.
|
|
926
|
-
cg-83.
|
|
927
|
-
cg-83.
|
|
928
|
-
cg-83.
|
|
925
|
+
cg-83.17.1.dist-info/METADATA,sha256=yUBHF44GMYrBmo4-AXyWg0g0q3SaDDpmkN5VKiQOm3k,4940
|
|
926
|
+
cg-83.17.1.dist-info/WHEEL,sha256=3ny-bZhpXrU6vSQ1UPG34FoxZBp3lVcvK0LkgUz6VLk,88
|
|
927
|
+
cg-83.17.1.dist-info/entry_points.txt,sha256=q5f47YQQGltzK_xnIq1mDopRXXEItr85Xe1BCtG-Wts,39
|
|
928
|
+
cg-83.17.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|