cg 83.16.2__tar.gz → 83.16.4__tar.gz
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-83.16.2 → cg-83.16.4}/PKG-INFO +1 -1
- cg-83.16.4/cg/__init__.py +2 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/mip_dna/base.py +1 -9
- cg-83.16.4/cg/constants/nextflow.py +10 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/nf_analysis.py +0 -24
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/nallo.py +0 -2
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/nf_analysis.py +2 -264
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/raredisease.py +0 -2
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/rnafusion.py +0 -2
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/taxprofiler.py +0 -2
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/tomte.py +0 -2
- {cg-83.16.2 → cg-83.16.4}/cg/models/cg_config.py +0 -5
- {cg-83.16.2 → cg-83.16.4}/cg/models/nf_analysis.py +0 -19
- {cg-83.16.2 → cg-83.16.4}/cg/server/admin.py +6 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/commands.py +0 -16
- {cg-83.16.2 → cg-83.16.4}/pyproject.toml +1 -1
- cg-83.16.2/cg/__init__.py +0 -2
- cg-83.16.2/cg/constants/nextflow.py +0 -29
- cg-83.16.2/cg/meta/workflow/nf_handlers.py +0 -179
- {cg-83.16.2 → cg-83.16.4}/README.md +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/coverage/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/coverage/api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/crunchy/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/crunchy/crunchy.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/crunchy/files.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/crunchy/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/crunchy/sbatch.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/demultiplex_api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/sample_sheet/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/sample_sheet/api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/sample_sheet/index.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/sample_sheet/override_cycles_validator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/sample_sheet/read_sample_sheet.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/sample_sheet/sample_models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/sample_sheet/sample_sheet_creator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/sample_sheet/sample_sheet_models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/sample_sheet/sample_sheet_validator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/sample_sheet/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/sample_sheet/validators.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/demultiplex/sbatch.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/downsample/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/downsample/downsample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/downsample/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/environ.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/gens.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/gt.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/hermes/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/hermes/hermes_api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/hermes/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/housekeeper/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/housekeeper/hk.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/housekeeper/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/invoice/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/invoice/render.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/invoice/templates/KI_pool_invoice.xlsx +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/invoice/templates/KI_sample_invoice.xlsx +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/invoice/templates/KTH_pool_invoice.xlsx +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/invoice/templates/KTH_sample_invoice.xlsx +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/lims/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/lims/api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/lims/batch.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/lims/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/lims/sample_sheet.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/loqus.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/madeline/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/madeline/api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/mip/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/mip/confighandler.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/mutacc_auto.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/orderform/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/orderform/excel_orderform_parser.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/orderform/json_orderform_parser.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/orderform/orderform_parser.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/orderform/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/scout/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/scout/scout_export.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/scout/scoutapi.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/scout/validators.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/slurm/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/slurm/sbatch.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/slurm/slurm_api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/tb/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/tb/api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/tb/dto/create_job_request.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/tb/dto/summary_response.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/tb/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/apps/tb/validators.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/add.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/archive.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/backup.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/clean.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/compress/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/compress/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/compress/fastq.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/compress/helpers.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/delete/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/delete/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/delete/case.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/delete/cases.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/delete/illumina_sequencing_run.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/delete/observations.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/deliver/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/deliver/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/deliver/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/demultiplex/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/demultiplex/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/demultiplex/copy_novaseqx_demultiplex_data.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/demultiplex/demux.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/demultiplex/finish.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/demultiplex/sample_sheet.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/downsample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/generate/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/generate/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/generate/delivery_report/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/generate/delivery_report/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/generate/delivery_report/options.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/generate/delivery_report/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/get.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/post_process/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/post_process/post_process.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/post_process/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/sequencing_qc/sequencing_qc.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/set/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/set/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/set/case.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/set/cases.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/store/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/store/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/store/store.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/transfer.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/coverage.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/delivery_report.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/fohm.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/genotype.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/gens.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/gisaid.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/mutacc.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/nipt/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/nipt/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/nipt/ftp.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/nipt/statina.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/observations/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/observations/observations.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/observations/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/scout.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/upload/validate.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/balsamic/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/balsamic/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/balsamic/options.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/balsamic/pon.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/balsamic/umi.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/commands.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/fluffy/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/fluffy/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/jasen/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/jasen/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/microsalt/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/microsalt/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/mip/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/mip/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/mip/options.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/mip_dna/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/mip_rna/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/mip_rna/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/mutant/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/mutant/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/nallo/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/nallo/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/nf_analysis.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/raredisease/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/raredisease/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/raw_data/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/raw_data/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/raw_data/raw_data_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/rnafusion/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/rnafusion/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/taxprofiler/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/taxprofiler/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/tomte/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/cli/workflow/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/arnold/api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/arnold/dto/create_case_request.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/arnold/exceptions.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/chanjo2/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/chanjo2/client.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/chanjo2/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/chanjo2/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/freshdesk/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/freshdesk/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/freshdesk/exceptions.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/freshdesk/freshdesk_client.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/freshdesk/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/freshdesk/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/janus/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/janus/api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/janus/dto/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/janus/dto/create_qc_metrics_request.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/clients/janus/exceptions.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/archiving.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/backup.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/cli_options.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/compression.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/delivery.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/demultiplexing.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/devices.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/encryption.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/extraction.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/file_transfer_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/gene_panel.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/housekeeper_tags.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/invoice.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/lims.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/metrics.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/nipt.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/observations.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/orderforms.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/pacbio.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/paths.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/pdc.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/pedigree.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/priority.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/process.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/report.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/sample_sources.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/scout.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/sequencing.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/slurm.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/subject.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/symbols.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/constants/tb.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/exc.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/io/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/io/api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/io/controller.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/io/csv.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/io/gzip.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/io/json.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/io/png.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/io/txt.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/io/validate_path.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/io/xml.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/io/yaml.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/archive/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/archive/archive.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/archive/ddn/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/archive/ddn/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/archive/ddn/ddn_data_flow_client.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/archive/ddn/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/archive/ddn/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/archive/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/backup/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/backup/backup.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/clean/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/clean/api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/clean/clean_retrieved_spring_files.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/compress/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/compress/compress.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/compress/files.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery/delivery.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/balsamic.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/balsamic_umi.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/data_validators.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/delivery_report_api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/mip_dna.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/nallo.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/raredisease.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/rnafusion.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/taxprofiler.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/delivery-report.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/data_analysis/data_analysis.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/data_analysis/limitations.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/data_analysis/qc_metrics/balsamic_qc_metrics.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/data_analysis/qc_metrics/mip_dna_qc_metrics.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/data_analysis/qc_metrics/nallo_qc_metrics.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/data_analysis/qc_metrics/qc_metrics.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/data_analysis/qc_metrics/raredisease_qc_metrics.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/data_analysis/qc_metrics/rnafusion_qc_metrics.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/data_analysis/qc_metrics/tomte_qc_metrics.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/header.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/order.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/sample_prep.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/ticket_system.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/uploaded_files/balsamic_uploaded_files.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/uploaded_files/mip_dna_uploaded_files.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/uploaded_files/nallo_uploaded_files.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/uploaded_files/raredisease_uploaded_files.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/uploaded_files/rnafusion_uploaded_files.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/macros/uploaded_files/uploaded_files.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/partials/footer.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/partials/signature.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/static/css/bootstrap.min.css +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/static/css/custom.css +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/templates/static/images/SWEDAC_logo.png +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/delivery_report/tomte.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/encryption/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/encryption/encryption.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/encryption/sbatch.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/invoice.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/meta.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/observations/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/observations/balsamic_observations_api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/observations/mip_dna_observations_api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/observations/nallo_observations_api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/observations/observations_api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/observations/raredisease_observations_api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/orders/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/qc_metrics/collect_qc_metrics.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/tar/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/tar/tar.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/transfer/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/transfer/external_data.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/transfer/lims.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/transfer/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/balsamic/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/balsamic/balsamic.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/coverage.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/error_handling.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/fohm/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/fohm/fohm.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/gisaid/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/gisaid/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/gisaid/gisaid.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/gisaid/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/gt.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/microsalt/microsalt_upload_api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/mip/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/mip/mip_dna.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/mip/mip_rna.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/mutacc.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/mutant/mutant.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/nallo/nallo.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/nf_analysis.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/nipt/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/nipt/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/nipt/nipt.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/raredisease/raredisease.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/scout/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/scout/balsamic_config_builder.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/scout/balsamic_umi_config_builder.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/scout/hk_tags.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/scout/mip_config_builder.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/scout/nallo_config_builder.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/scout/raredisease_config_builder.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/scout/rnafusion_config_builder.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/scout/scout_config_builder.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/scout/uploadscoutapi.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/tomte/tomte.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/upload/upload_api.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/analysis.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/balsamic.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/balsamic_pon.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/balsamic_umi.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/downsample/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/downsample/downsample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/downsample/sbatch.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/fastq.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/fluffy.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/jasen.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/microsalt/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/microsalt/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/microsalt/metrics_parser/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/microsalt/metrics_parser/metrics_parser.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/microsalt/metrics_parser/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/microsalt/microsalt.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/microsalt/quality_controller/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/microsalt/quality_controller/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/microsalt/quality_controller/quality_controller.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/microsalt/quality_controller/report_generator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/microsalt/quality_controller/result_logger.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/microsalt/quality_controller/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/microsalt/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/mip.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/mip_dna.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/mip_rna.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/mutant/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/mutant/mutant.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/mutant/quality_controller/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/mutant/quality_controller/metrics_parser_utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/mutant/quality_controller/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/mutant/quality_controller/quality_controller.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/mutant/quality_controller/report_generator_utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/mutant/quality_controller/result_logger_utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/mutant/quality_controller/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/prepare_fastq.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/meta/workflow/utils/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/analysis.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/balsamic/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/balsamic/analysis.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/balsamic/config.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/balsamic/metrics.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/compression_data.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/deliverables/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/deliverables/metric_deliverables.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/delivery/delivery.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/delivery_report/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/delivery_report/metadata.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/delivery_report/report.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/delivery_report/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/delivery_report/validators.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/demultiplex/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/demultiplex/run_parameters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/demultiplex/sbatch.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/downsample/downsample_data.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/email.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/fastq.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/file_data.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/fohm/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/fohm/reports.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/invoice/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/invoice/invoice.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/lims/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/lims/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/mip/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/mip/mip_analysis.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/mip/mip_config.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/mip/mip_metrics_deliverables.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/mip/mip_sample_info.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/nallo/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/nallo/nallo.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/observations/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/observations/input_files.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/orders/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/orders/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/orders/excel_sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/orders/json_sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/orders/orderform_schema.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/orders/sample_base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/orders/validators/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/orders/validators/excel_sample_validators.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/orders/validators/json_sample_validators.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/orders/validators/sample_base_validators.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/qc_metrics.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/raredisease/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/raredisease/raredisease.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/rnafusion/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/rnafusion/rnafusion.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/run_devices/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/run_devices/illumina_run_directory_data.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/run_devices/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/scout/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/scout/scout_load_config.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/scout/validators.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/slurm/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/slurm/sbatch.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/taxprofiler/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/taxprofiler/taxprofiler.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/tomte/tomte.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/workflow/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/workflow/mutant.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/models/workflow/validators.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/resources/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/resources/nallo_bundle_filenames.yaml +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/resources/raredisease_bundle_filenames.yaml +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/resources/rnafusion_bundle_filenames.yaml +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/resources/taxprofiler_bundle_filenames.yaml +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/resources/tomte_bundle_filenames.yaml +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/app.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/app_config.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/auto.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/dto/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/dto/cases/requests.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/dto/delivery_message/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/dto/delivery_message/delivery_message_request.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/dto/delivery_message/delivery_message_response.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/dto/orders/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/dto/orders/order_delivery_update_request.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/dto/orders/order_patch_request.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/dto/orders/orders_request.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/dto/orders/orders_response.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/dto/samples/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/dto/samples/requests.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/dto/samples/samples_response.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/analyses.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/applications.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/cases.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/error_handler.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/index_sequences.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/orders.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/pools.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/samples.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/sequencing_metrics/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/sequencing_metrics/dtos.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/sequencing_metrics/error_handler.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/sequencing_metrics/illumina_sequencing_metrics.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/sequencing_metrics/pacbio_sequencing_metrics.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/sequencing_run/dtos.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/sequencing_run/pacbio_sequencing_run.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/sequencing_run/pacbio_smrt_cell_metrics.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/users.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/endpoints/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/ext.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/invoices/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/invoices/templates/invoices/index.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/invoices/templates/invoices/invoice.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/invoices/templates/invoices/layout.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/invoices/templates/invoices/new.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/invoices/views.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/templates/admin/index.html +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/server/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_service/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_service/analysis_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/analysis_starter.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/abstract_model.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/configurator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/extensions/nallo.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/extensions/pipeline_extension.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/extensions/raredisease.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/extensions/tomte_extension.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/balsamic_config.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/gene_panel.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/managed_variants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/microsalt_config.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/mip_dna_config.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/config_file.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/params_file/abstract.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/params_file/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/params_file/nallo.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/params_file/raredisease.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/params_file/rnafusion.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/params_file/taxprofiler.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/params_file/tomte_params_file_creator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/params_file/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/sample_sheet/creator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/sample_sheet/nallo_sample_sheet_creator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/sample_sheet/protocol.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/sample_sheet/raredisease_sample_sheet_creator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/sample_sheet/rnafusion_sample_sheet_creator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/sample_sheet/taxprofiler_sample_sheet_creator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/sample_sheet/tomte_sample_sheet_creator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/file_creators/nextflow/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/implementations/balsamic.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/implementations/microsalt.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/implementations/mip_dna.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/implementations/nextflow.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/models/balsamic.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/models/microsalt.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/models/mip_dna.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/configurator/models/nextflow.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/factories/configurator_factory.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/factories/starter_factory.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/input_fetcher/implementations/bam_fetcher.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/input_fetcher/implementations/fastq_fetcher.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/input_fetcher/input_fetcher.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/submitters/seqera_platform/dtos.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/submitters/seqera_platform/seqera_platform_client.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/submitters/seqera_platform/seqera_platform_submitter.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/submitters/submitter.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/submitters/subprocess/commands.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/submitters/subprocess/submitter.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/tracker/implementations/balsamic.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/tracker/implementations/microsalt.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/tracker/implementations/mip_dna.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/tracker/implementations/nextflow_tracker.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/analysis_starter/tracker/tracker.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/decompression_service/decompressor.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/deliver_files_service/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/deliver_files_service/deliver_files_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/deliver_files_service/error_handling.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/deliver_files_service/exc.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/factory.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_fetcher/abstract.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_fetcher/analysis_raw_data_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_fetcher/analysis_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_fetcher/error_handling.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_fetcher/exc.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_fetcher/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_fetcher/raw_data_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/destination/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/destination/abstract.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/destination/base_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/destination/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/files/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/files/abstract.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/files/case_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/files/concatenation_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/files/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/files/mutant_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/files/sample_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/path_name/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/path_name/abstract.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/path_name/flat_structure.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_formatter/path_name/nested_structure.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_mover/abstract.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_mover/base_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/file_mover/customer_inbox_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/rsync/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/rsync/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/rsync/sbatch_commands.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/rsync/service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/tag_fetcher/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/tag_fetcher/abstract.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/tag_fetcher/error_handling.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/tag_fetcher/exc.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/tag_fetcher/fohm_upload_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/tag_fetcher/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/tag_fetcher/sample_and_case_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/deliver_files/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/delivery_message_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/analysis_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/analysis_scout_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/bam_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/covid_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/delivery_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/fastq_analysis_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/fastq_analysis_scout_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/fastq_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/fastq_scout_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/microsalt_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/order_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/raw_data_analysis_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/raw_data_analysis_scout_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/raw_data_scout_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/rna_delivery_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/scout_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/statina_message.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/messages/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/delivery_message/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/fastq_concatenation_service/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/fastq_concatenation_service/exceptions.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/fastq_concatenation_service/fastq_concatenation_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/fastq_concatenation_service/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/backup/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/backup/backup_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/backup/encrypt_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/backup/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/backup/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/backup/validators.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/cleaning/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/cleaning/clean_runs_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/data_transfer/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/data_transfer/data_transfer_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/data_transfer/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/file_parsing/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/file_parsing/bcl_convert_metrics_parser.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/file_parsing/demux_version_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/file_parsing/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/file_parsing/sequencing_times/collect_sequencing_times.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/file_parsing/sequencing_times/hiseq_2500_sequencing_times_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/file_parsing/sequencing_times/hiseq_x_sequencing_times_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/file_parsing/sequencing_times/novaseq_6000_sequencing_times.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/file_parsing/sequencing_times/novaseq_x_sequencing_times_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/file_parsing/sequencing_times/sequencing_time_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/post_processing/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/post_processing/housekeeper_storage.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/post_processing/post_processing_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/post_processing/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/illumina/post_processing/validation.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/lims_service/service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/order_service/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/order_service/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/order_service/order_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/order_summary_service/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/order_summary_service/dto/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/order_summary_service/dto/order_summary.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/order_summary_service/order_summary_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/order_summary_service/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/storing/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/storing/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/storing/implementations/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/storing/implementations/case_order_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/storing/implementations/fastq_order_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/storing/implementations/metagenome_order_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/storing/implementations/microbial_fastq_order_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/storing/implementations/microbial_order_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/storing/implementations/pacbio_order_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/storing/implementations/pool_order_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/storing/implementations/taxprofiler_order_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/storing/service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/storing/service_registry.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/submitter/service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/submitter/ticket_handler.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/errors/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/errors/case_errors.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/errors/case_sample_errors.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/errors/order_errors.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/errors/sample_errors.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/errors/validation_errors.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/index_sequences.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/model_validator/model_validator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/model_validator/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/models/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/models/case.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/models/case_aliases.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/models/discriminators.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/models/existing_case.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/models/existing_sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/models/order_aliases.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/models/order_with_cases.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/models/order_with_samples.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/models/sample_aliases.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/models/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_type_maps.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/balsamic/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/balsamic/models/case.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/balsamic/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/balsamic/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/balsamic/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/balsamic_umi/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/balsamic_umi/models/case.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/balsamic_umi/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/balsamic_umi/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/balsamic_umi/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/fastq/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/fastq/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/fastq/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/fastq/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/fluffy/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/fluffy/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/fluffy/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/fluffy/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/metagenome/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/metagenome/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/metagenome/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/metagenome/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/microbial_fastq/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/microbial_fastq/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/microbial_fastq/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/microbial_fastq/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/microsalt/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/microsalt/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/microsalt/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/microsalt/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mip_dna/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mip_dna/models/case.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mip_dna/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mip_dna/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mip_dna/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mip_rna/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mip_rna/models/case.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mip_rna/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mip_rna/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mip_rna/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mutant/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mutant/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mutant/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/mutant/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/nallo/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/nallo/models/case.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/nallo/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/nallo/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/nallo/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/order_validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/pacbio_long_read/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/pacbio_long_read/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/pacbio_long_read/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/pacbio_long_read/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/raredisease/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/raredisease/models/case.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/raredisease/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/raredisease/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/raredisease/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/rml/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/rml/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/rml/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/rml/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/rna_fusion/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/rna_fusion/models/case.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/rna_fusion/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/rna_fusion/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/rna_fusion/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/taxprofiler/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/taxprofiler/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/taxprofiler/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/taxprofiler/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/tomte/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/tomte/models/case.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/tomte/models/order.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/tomte/models/sample.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/order_types/tomte/validation_rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/response_mapper.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/case/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/case/rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/case/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/case_sample/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/case_sample/pedigree/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/case_sample/pedigree/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/case_sample/pedigree/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/case_sample/pedigree/validate_pedigree.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/case_sample/rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/case_sample/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/order/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/order/rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/sample/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/sample/rules.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/sample/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/rules/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/orders/validation/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/pdc_service/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/pdc_service/pdc_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/abstract_classes.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/abstract_models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/constants.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/error_handler.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/exc.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/data_storage_service/pacbio_store_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/data_transfer_service/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/data_transfer_service/data_transfer_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/data_transfer_service/dto.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/data_transfer_service/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/housekeeper_service/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/housekeeper_service/pacbio_houskeeper_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/metrics_parser/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/metrics_parser/metrics_parser.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/metrics_parser/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/metrics_parser/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/post_processing_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/run_data_generator/pacbio_run_data_generator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/run_data_generator/run_data.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/run_file_manager/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/run_file_manager/run_file_manager.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/run_validator/pacbio_run_validator.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/pacbio/sequencing_runs_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/run_names/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/run_names/pacbio.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/run_names/service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/run_devices/validators.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/sample_run_metrics_service/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/sample_run_metrics_service/dtos.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/sample_run_metrics_service/sample_run_metrics_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/sample_run_metrics_service/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/sequencing_qc_service/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/sequencing_qc_service/quality_checks/checks.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/sequencing_qc_service/quality_checks/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/sequencing_qc_service/sequencing_qc_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/sequencing_qc_service/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/slurm_service/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/slurm_service/slurm_cli_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/slurm_service/slurm_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/slurm_upload_service/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/slurm_upload_service/slurm_upload_config.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/slurm_upload_service/slurm_upload_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/slurm_upload_service/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/validate_file_transfer_service/validate_file_transfer_service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/web_services/application/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/web_services/application/service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/web_services/case/service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/web_services/sample/dto_mappers.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/web_services/sample/service.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/services/web_services/sample/utils.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/api/data_classes.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/base.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/crud/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/crud/create.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/crud/delete.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/crud/read.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/crud/update.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/database.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/exc.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_analysis_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_application_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_application_limitations_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_application_version_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_bed_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_bed_version_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_case_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_case_sample_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_collaboration_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_customer_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_illumina_flow_cell_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_illumina_metrics_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_illumina_sequencing_run_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_invoice_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_order_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_ordertype_application_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_organism_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_pacbio_smrt_cell_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_panel_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_pool_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_sample_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/filters/status_user_filters.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/models.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/store/store.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/calculations.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/checksum/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/checksum/checksum.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/click/EnumChoice.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/click/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/date.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/dict.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/email.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/enums.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/files.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/flask/__init__.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/flask/enum.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/mapping.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/time.py +0 -0
- {cg-83.16.2 → cg-83.16.4}/cg/utils/utils.py +0 -0
|
@@ -6,13 +6,7 @@ from typing import cast
|
|
|
6
6
|
import rich_click as click
|
|
7
7
|
|
|
8
8
|
from cg.cli.utils import CLICK_CONTEXT_SETTINGS
|
|
9
|
-
from cg.cli.workflow.commands import
|
|
10
|
-
ensure_illumina_runs_on_disk,
|
|
11
|
-
link,
|
|
12
|
-
resolve_compression,
|
|
13
|
-
store,
|
|
14
|
-
store_available,
|
|
15
|
-
)
|
|
9
|
+
from cg.cli.workflow.commands import ensure_illumina_runs_on_disk, store, store_available
|
|
16
10
|
from cg.cli.workflow.mip.options import (
|
|
17
11
|
ARGUMENT_CASE_ID,
|
|
18
12
|
OPTION_BWA_MEM,
|
|
@@ -49,8 +43,6 @@ def mip_dna(
|
|
|
49
43
|
|
|
50
44
|
for sub_cmd in [
|
|
51
45
|
ensure_illumina_runs_on_disk,
|
|
52
|
-
link,
|
|
53
|
-
resolve_compression,
|
|
54
46
|
store,
|
|
55
47
|
store_available,
|
|
56
48
|
]:
|
|
@@ -1,20 +1,7 @@
|
|
|
1
1
|
"""Nf-tower related constants."""
|
|
2
2
|
|
|
3
|
-
from enum import StrEnum
|
|
4
3
|
from typing import Any
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
class NfTowerStatus(StrEnum):
|
|
8
|
-
"""NF-Tower job submission status."""
|
|
9
|
-
|
|
10
|
-
SUBMITTED: str = "SUBMITTED"
|
|
11
|
-
RUNNING: str = "RUNNING"
|
|
12
|
-
SUCCEEDED: str = "SUCCEEDED"
|
|
13
|
-
FAILED: str = "FAILED"
|
|
14
|
-
CANCELLED: str = "CANCELLED"
|
|
15
|
-
UNKNOWN: str = "UNKNOWN"
|
|
16
|
-
|
|
17
|
-
|
|
18
5
|
NALLO_GENERAL_METRIC_CONDITIONS: dict[str, dict[str, Any]] = {
|
|
19
6
|
"median_coverage": {"norm": "gt", "threshold": 20},
|
|
20
7
|
}
|
|
@@ -68,17 +55,6 @@ TOMTE_METRIC_CONDITIONS: dict[str, dict[str, Any]] = {
|
|
|
68
55
|
"pct_duplication": {"norm": "lt", "threshold": 70},
|
|
69
56
|
}
|
|
70
57
|
|
|
71
|
-
|
|
72
|
-
MULTIQC_NEXFLOW_CONFIG = """process {
|
|
73
|
-
withName:'MULTIQC' {
|
|
74
|
-
memory = { 4.GB * task.attempt }
|
|
75
|
-
time = { 4.h * task.attempt }
|
|
76
|
-
cpus = 2
|
|
77
|
-
ext.args = ' --data-format json --cl-config "max_table_rows: 10000" '
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
"""
|
|
81
|
-
|
|
82
58
|
NALLO_COVERAGE_FILE_TAGS: list[str] = ["d4"]
|
|
83
59
|
NALLO_COVERAGE_INTERVAL_TYPE: str = "genes"
|
|
84
60
|
NALLO_COVERAGE_THRESHOLD: int = 10
|
|
@@ -60,9 +60,7 @@ class NalloAnalysisAPI(NfAnalysisAPI):
|
|
|
60
60
|
self.tower_workflow: str = config.nallo.tower_workflow
|
|
61
61
|
self.account: str = config.nallo.slurm.account
|
|
62
62
|
self.email: str = config.nallo.slurm.mail_user
|
|
63
|
-
self.compute_env_base: str = config.nallo.compute_env
|
|
64
63
|
self.revision: str = config.nallo.revision
|
|
65
|
-
self.nextflow_binary_path: str = config.nallo.binary_path
|
|
66
64
|
|
|
67
65
|
def get_genome_build(self, case_id: str) -> GenomeVersion:
|
|
68
66
|
"""Return reference genome for a Nallo case. Currently fixed for hg38."""
|
|
@@ -8,21 +8,12 @@ from pydantic import TypeAdapter
|
|
|
8
8
|
from pydantic.v1 import ValidationError
|
|
9
9
|
|
|
10
10
|
from cg.constants import Workflow
|
|
11
|
-
from cg.constants.constants import
|
|
12
|
-
FileExtensions,
|
|
13
|
-
FileFormat,
|
|
14
|
-
GenomeVersion,
|
|
15
|
-
MultiQC,
|
|
16
|
-
WorkflowManager,
|
|
17
|
-
)
|
|
18
|
-
from cg.constants.nextflow import NFX_WORK_DIR
|
|
19
|
-
from cg.constants.nf_analysis import NfTowerStatus
|
|
11
|
+
from cg.constants.constants import FileExtensions, FileFormat, GenomeVersion, MultiQC
|
|
20
12
|
from cg.constants.tb import AnalysisStatus
|
|
21
13
|
from cg.exc import CgError, HousekeeperStoreError, MetricsQCError
|
|
22
14
|
from cg.io.controller import ReadFile, WriteFile
|
|
23
15
|
from cg.io.json import read_json
|
|
24
16
|
from cg.meta.workflow.analysis import AnalysisAPI
|
|
25
|
-
from cg.meta.workflow.nf_handlers import NextflowHandler, NfTowerHandler
|
|
26
17
|
from cg.models.analysis import NextflowAnalysis
|
|
27
18
|
from cg.models.cg_config import CGConfig
|
|
28
19
|
from cg.models.deliverables.metric_deliverables import (
|
|
@@ -30,10 +21,9 @@ from cg.models.deliverables.metric_deliverables import (
|
|
|
30
21
|
MetricsDeliverablesCondition,
|
|
31
22
|
MultiqcDataJson,
|
|
32
23
|
)
|
|
33
|
-
from cg.models.nf_analysis import FileDeliverable,
|
|
24
|
+
from cg.models.nf_analysis import FileDeliverable, WorkflowDeliverables
|
|
34
25
|
from cg.models.qc_metrics import QCMetrics
|
|
35
26
|
from cg.store.models import Analysis, Case, Sample
|
|
36
|
-
from cg.utils import Process
|
|
37
27
|
|
|
38
28
|
LOG = logging.getLogger(__name__)
|
|
39
29
|
|
|
@@ -58,72 +48,22 @@ class NfAnalysisAPI(AnalysisAPI):
|
|
|
58
48
|
self.tower_workflow: str | None = None
|
|
59
49
|
self.account: str | None = None
|
|
60
50
|
self.email: str | None = None
|
|
61
|
-
self.compute_env_base: str | None = None
|
|
62
51
|
self.revision: str | None = None
|
|
63
|
-
self.nextflow_binary_path: str | None = None
|
|
64
52
|
|
|
65
53
|
@property
|
|
66
54
|
def root(self) -> str:
|
|
67
55
|
return self.root_dir
|
|
68
56
|
|
|
69
|
-
@property
|
|
70
|
-
def process(self):
|
|
71
|
-
if not self._process:
|
|
72
|
-
self._process = Process(
|
|
73
|
-
binary=self.tower_binary_path,
|
|
74
|
-
)
|
|
75
|
-
return self._process
|
|
76
|
-
|
|
77
|
-
@process.setter
|
|
78
|
-
def process(self, process: Process):
|
|
79
|
-
self._process = process
|
|
80
|
-
|
|
81
57
|
@property
|
|
82
58
|
def is_multiqc_pattern_search_exact(self) -> bool:
|
|
83
59
|
"""Return True if only exact pattern search is allowed to collect metrics information from MultiQC file.
|
|
84
60
|
If false, pattern must be present but does not need to be exact."""
|
|
85
61
|
return False
|
|
86
62
|
|
|
87
|
-
def get_profile(self, profile: str | None = None) -> str:
|
|
88
|
-
"""Get NF profiles."""
|
|
89
|
-
return profile or self.profile
|
|
90
|
-
|
|
91
|
-
def get_workflow_manager(self) -> str:
|
|
92
|
-
"""Get workflow manager from Tower."""
|
|
93
|
-
return WorkflowManager.Tower.value
|
|
94
|
-
|
|
95
|
-
def get_workflow_version(self, case_id: str) -> str:
|
|
96
|
-
"""Get workflow version from config."""
|
|
97
|
-
return self.revision
|
|
98
|
-
|
|
99
63
|
def get_case_path(self, case_id: str) -> Path:
|
|
100
64
|
"""Path to case working directory."""
|
|
101
65
|
return Path(self.root_dir, case_id)
|
|
102
66
|
|
|
103
|
-
def get_sample_sheet_path(self, case_id: str) -> Path:
|
|
104
|
-
"""Path to sample sheet."""
|
|
105
|
-
return Path(self.get_case_path(case_id), f"{case_id}_samplesheet").with_suffix(
|
|
106
|
-
FileExtensions.CSV
|
|
107
|
-
)
|
|
108
|
-
|
|
109
|
-
def get_compute_env(self, case_id: str) -> str:
|
|
110
|
-
"""Get the compute environment for the head job based on the case priority."""
|
|
111
|
-
return f"{self.compute_env_base}-{self.get_slurm_qos_for_case(case_id=case_id)}"
|
|
112
|
-
|
|
113
|
-
def get_nextflow_config_path(
|
|
114
|
-
self, case_id: str, nextflow_config: Path | str | None = None
|
|
115
|
-
) -> Path:
|
|
116
|
-
"""Path to nextflow config file."""
|
|
117
|
-
if nextflow_config:
|
|
118
|
-
return Path(nextflow_config).absolute()
|
|
119
|
-
return Path((self.get_case_path(case_id)), f"{case_id}_nextflow_config").with_suffix(
|
|
120
|
-
FileExtensions.JSON
|
|
121
|
-
)
|
|
122
|
-
|
|
123
|
-
def get_job_ids_path(self, case_id: str) -> Path:
|
|
124
|
-
"""Return the path to a Trailblazer config file containing Tower IDs."""
|
|
125
|
-
return Path(self.root_dir, case_id, "tower_ids").with_suffix(FileExtensions.YAML)
|
|
126
|
-
|
|
127
67
|
def get_deliverables_file_path(self, case_id: str) -> Path:
|
|
128
68
|
"""Path to deliverables file for a case."""
|
|
129
69
|
return Path(self.get_case_path(case_id), f"{case_id}_deliverables").with_suffix(
|
|
@@ -136,33 +76,6 @@ class NfAnalysisAPI(AnalysisAPI):
|
|
|
136
76
|
FileExtensions.YAML
|
|
137
77
|
)
|
|
138
78
|
|
|
139
|
-
def get_params_file_path(self, case_id: str, params_file: Path | None = None) -> Path:
|
|
140
|
-
"""Return parameters file or a path where the default parameters file for a case id should be located."""
|
|
141
|
-
if params_file:
|
|
142
|
-
return Path(params_file).absolute()
|
|
143
|
-
return Path((self.get_case_path(case_id)), f"{case_id}_params_file").with_suffix(
|
|
144
|
-
FileExtensions.YAML
|
|
145
|
-
)
|
|
146
|
-
|
|
147
|
-
def get_log_path(self, case_id: str, workflow: str) -> Path:
|
|
148
|
-
"""Path to NF log."""
|
|
149
|
-
launch_time: str = datetime.now().strftime("%Y-%m-%d_%H.%M.%S")
|
|
150
|
-
return Path(
|
|
151
|
-
self.get_case_path(case_id),
|
|
152
|
-
f"{case_id}_{workflow}_nextflow_{launch_time}",
|
|
153
|
-
).with_suffix(FileExtensions.LOG)
|
|
154
|
-
|
|
155
|
-
def get_workdir_path(self, case_id: str, work_dir: Path | None = None) -> Path:
|
|
156
|
-
"""Path to NF work directory."""
|
|
157
|
-
if work_dir:
|
|
158
|
-
return work_dir.absolute()
|
|
159
|
-
return Path(self.get_case_path(case_id), NFX_WORK_DIR)
|
|
160
|
-
|
|
161
|
-
def verify_sample_sheet_exists(self, case_id: str, dry_run: bool = False) -> None:
|
|
162
|
-
"""Raise an error if sample sheet file is not found."""
|
|
163
|
-
if not dry_run and not Path(self.get_sample_sheet_path(case_id=case_id)).exists():
|
|
164
|
-
raise ValueError(f"No config file found for case {case_id}")
|
|
165
|
-
|
|
166
79
|
def verify_deliverables_file_exists(self, case_id: str) -> None:
|
|
167
80
|
"""Raise an error if a deliverable file is not found."""
|
|
168
81
|
if not Path(self.get_deliverables_file_path(case_id=case_id)).exists():
|
|
@@ -177,181 +90,6 @@ class NfAnalysisAPI(AnalysisAPI):
|
|
|
177
90
|
content=deliverables_content, file_format=file_format, file_path=file_path
|
|
178
91
|
)
|
|
179
92
|
|
|
180
|
-
def write_trailblazer_config(self, case_id: str, tower_id: str) -> None:
|
|
181
|
-
"""Write Tower IDs to a file used as the Trailblazer config."""
|
|
182
|
-
config_path: Path = self.get_job_ids_path(case_id=case_id)
|
|
183
|
-
LOG.info(f"Writing Tower ID to {config_path.as_posix()}")
|
|
184
|
-
WriteFile.write_file_from_content(
|
|
185
|
-
content={case_id: [tower_id]},
|
|
186
|
-
file_format=FileFormat.YAML,
|
|
187
|
-
file_path=config_path,
|
|
188
|
-
)
|
|
189
|
-
|
|
190
|
-
def _run_analysis_with_nextflow(
|
|
191
|
-
self, case_id: str, command_args: NfCommandArgs, dry_run: bool
|
|
192
|
-
) -> None:
|
|
193
|
-
"""Run analysis with given options using Nextflow."""
|
|
194
|
-
self.process = Process(
|
|
195
|
-
binary=self.nextflow_binary_path,
|
|
196
|
-
environment=self.conda_env,
|
|
197
|
-
conda_binary=self.conda_binary,
|
|
198
|
-
launch_directory=self.get_case_path(case_id=case_id),
|
|
199
|
-
)
|
|
200
|
-
LOG.info("Workflow will be executed using Nextflow")
|
|
201
|
-
parameters: list[str] = NextflowHandler.get_nextflow_run_parameters(
|
|
202
|
-
case_id=case_id,
|
|
203
|
-
workflow_bin_path=self.workflow_bin_path,
|
|
204
|
-
root_dir=self.root_dir,
|
|
205
|
-
command_args=command_args.dict(),
|
|
206
|
-
)
|
|
207
|
-
self.process.export_variables(
|
|
208
|
-
export=NextflowHandler.get_variables_to_export(),
|
|
209
|
-
)
|
|
210
|
-
command: str = self.process.get_command(parameters=parameters)
|
|
211
|
-
LOG.info(f"{command}")
|
|
212
|
-
sbatch_number: int = NextflowHandler.execute_head_job(
|
|
213
|
-
case_id=case_id,
|
|
214
|
-
case_directory=self.get_case_path(case_id=case_id),
|
|
215
|
-
slurm_account=self.account,
|
|
216
|
-
email=self.email,
|
|
217
|
-
qos=self.get_slurm_qos_for_case(case_id=case_id),
|
|
218
|
-
commands=command,
|
|
219
|
-
dry_run=dry_run,
|
|
220
|
-
)
|
|
221
|
-
LOG.info(f"Nextflow head job running as job: {sbatch_number}")
|
|
222
|
-
|
|
223
|
-
def _run_analysis_with_tower(
|
|
224
|
-
self, case_id: str, command_args: NfCommandArgs, dry_run: bool
|
|
225
|
-
) -> str | None:
|
|
226
|
-
"""Run analysis with given options using NF-Tower."""
|
|
227
|
-
LOG.info("Workflow will be executed using Tower")
|
|
228
|
-
if command_args.resume:
|
|
229
|
-
from_tower_id: int = command_args.id or NfTowerHandler.get_last_tower_id(
|
|
230
|
-
case_id=case_id,
|
|
231
|
-
trailblazer_config=self.get_job_ids_path(case_id=case_id),
|
|
232
|
-
)
|
|
233
|
-
LOG.info(f"Workflow will be resumed from run with Tower id: {from_tower_id}.")
|
|
234
|
-
parameters: list[str] = NfTowerHandler.get_tower_relaunch_parameters(
|
|
235
|
-
from_tower_id=from_tower_id, command_args=command_args.dict()
|
|
236
|
-
)
|
|
237
|
-
else:
|
|
238
|
-
parameters: list[str] = NfTowerHandler.get_tower_launch_parameters(
|
|
239
|
-
tower_workflow=self.tower_workflow, command_args=command_args.dict()
|
|
240
|
-
)
|
|
241
|
-
self.process.run_command(parameters=parameters, dry_run=dry_run)
|
|
242
|
-
if self.process.stderr:
|
|
243
|
-
LOG.error(self.process.stderr)
|
|
244
|
-
if not dry_run:
|
|
245
|
-
tower_id = NfTowerHandler.get_tower_id(stdout_lines=self.process.stdout_lines())
|
|
246
|
-
self.write_trailblazer_config(case_id=case_id, tower_id=tower_id)
|
|
247
|
-
return tower_id
|
|
248
|
-
LOG.info(self.process.stdout)
|
|
249
|
-
|
|
250
|
-
def get_command_args(
|
|
251
|
-
self,
|
|
252
|
-
case_id: str,
|
|
253
|
-
work_dir: str,
|
|
254
|
-
from_start: bool,
|
|
255
|
-
profile: str,
|
|
256
|
-
config: str,
|
|
257
|
-
params_file: str | None,
|
|
258
|
-
revision: str,
|
|
259
|
-
compute_env: str,
|
|
260
|
-
nf_tower_id: str | None,
|
|
261
|
-
stub_run: bool,
|
|
262
|
-
) -> NfCommandArgs:
|
|
263
|
-
command_args: NfCommandArgs = NfCommandArgs(
|
|
264
|
-
**{
|
|
265
|
-
"log": self.get_log_path(case_id=case_id, workflow=self.workflow),
|
|
266
|
-
"work_dir": self.get_workdir_path(case_id=case_id, work_dir=work_dir),
|
|
267
|
-
"resume": not from_start,
|
|
268
|
-
"profile": self.get_profile(profile=profile),
|
|
269
|
-
"config": self.get_nextflow_config_path(case_id=case_id, nextflow_config=config),
|
|
270
|
-
"params_file": self.get_params_file_path(case_id=case_id, params_file=params_file),
|
|
271
|
-
"name": case_id,
|
|
272
|
-
"compute_env": compute_env or self.get_compute_env(case_id=case_id),
|
|
273
|
-
"revision": revision or self.revision,
|
|
274
|
-
"wait": NfTowerStatus.SUBMITTED,
|
|
275
|
-
"id": nf_tower_id,
|
|
276
|
-
"stub_run": stub_run,
|
|
277
|
-
}
|
|
278
|
-
)
|
|
279
|
-
return command_args
|
|
280
|
-
|
|
281
|
-
def run_nextflow_analysis(
|
|
282
|
-
self,
|
|
283
|
-
case_id: str,
|
|
284
|
-
use_nextflow: bool,
|
|
285
|
-
work_dir: str,
|
|
286
|
-
from_start: bool,
|
|
287
|
-
profile: str,
|
|
288
|
-
config: str,
|
|
289
|
-
params_file: str | None,
|
|
290
|
-
revision: str,
|
|
291
|
-
compute_env: str,
|
|
292
|
-
stub_run: bool,
|
|
293
|
-
nf_tower_id: str | None = None,
|
|
294
|
-
dry_run: bool = False,
|
|
295
|
-
) -> None:
|
|
296
|
-
"""Prepare and start run analysis: check existence of all input files generated by config-case and sync with trailblazer."""
|
|
297
|
-
self.status_db.verify_case_exists(case_internal_id=case_id)
|
|
298
|
-
|
|
299
|
-
command_args = self.get_command_args(
|
|
300
|
-
case_id=case_id,
|
|
301
|
-
work_dir=work_dir,
|
|
302
|
-
from_start=from_start,
|
|
303
|
-
profile=profile,
|
|
304
|
-
config=config,
|
|
305
|
-
params_file=params_file,
|
|
306
|
-
revision=revision,
|
|
307
|
-
compute_env=compute_env,
|
|
308
|
-
nf_tower_id=nf_tower_id,
|
|
309
|
-
stub_run=stub_run,
|
|
310
|
-
)
|
|
311
|
-
|
|
312
|
-
try:
|
|
313
|
-
self.verify_sample_sheet_exists(case_id=case_id, dry_run=dry_run)
|
|
314
|
-
self.check_analysis_ongoing(case_id=case_id)
|
|
315
|
-
LOG.info(f"Running analysis for {case_id}")
|
|
316
|
-
tower_workflow_id: str | None = self.run_analysis(
|
|
317
|
-
case_id=case_id,
|
|
318
|
-
command_args=command_args,
|
|
319
|
-
use_nextflow=use_nextflow,
|
|
320
|
-
dry_run=dry_run,
|
|
321
|
-
)
|
|
322
|
-
if not dry_run:
|
|
323
|
-
self.on_analysis_started(case_id=case_id, tower_workflow_id=tower_workflow_id)
|
|
324
|
-
except FileNotFoundError as error:
|
|
325
|
-
LOG.error(f"Could not resume analysis: {error}")
|
|
326
|
-
raise FileNotFoundError
|
|
327
|
-
except ValueError as error:
|
|
328
|
-
LOG.error(f"Could not run analysis: {error}")
|
|
329
|
-
raise ValueError
|
|
330
|
-
except CgError as error:
|
|
331
|
-
LOG.error(f"Could not run analysis: {error}")
|
|
332
|
-
raise CgError
|
|
333
|
-
|
|
334
|
-
def run_analysis(
|
|
335
|
-
self,
|
|
336
|
-
case_id: str,
|
|
337
|
-
command_args: NfCommandArgs,
|
|
338
|
-
use_nextflow: bool,
|
|
339
|
-
dry_run: bool = False,
|
|
340
|
-
) -> str | None:
|
|
341
|
-
"""Execute run analysis with given options."""
|
|
342
|
-
if use_nextflow:
|
|
343
|
-
self._run_analysis_with_nextflow(
|
|
344
|
-
case_id=case_id,
|
|
345
|
-
command_args=command_args,
|
|
346
|
-
dry_run=dry_run,
|
|
347
|
-
)
|
|
348
|
-
else:
|
|
349
|
-
return self._run_analysis_with_tower(
|
|
350
|
-
case_id=case_id,
|
|
351
|
-
command_args=command_args,
|
|
352
|
-
dry_run=dry_run,
|
|
353
|
-
)
|
|
354
|
-
|
|
355
93
|
def get_deliverables_template_content(self) -> list[dict[str, str]]:
|
|
356
94
|
"""Return deliverables file template content."""
|
|
357
95
|
LOG.debug("Getting deliverables file template content")
|
|
@@ -59,9 +59,7 @@ class RarediseaseAnalysisAPI(NfAnalysisAPI):
|
|
|
59
59
|
self.tower_workflow: str = config.raredisease.tower_workflow
|
|
60
60
|
self.account: str = config.raredisease.slurm.account
|
|
61
61
|
self.email: str = config.raredisease.slurm.mail_user
|
|
62
|
-
self.compute_env_base: str = config.raredisease.compute_env
|
|
63
62
|
self.revision: str = config.raredisease.revision
|
|
64
|
-
self.nextflow_binary_path: str = config.raredisease.binary_path
|
|
65
63
|
|
|
66
64
|
@staticmethod
|
|
67
65
|
def get_bundle_filenames_path() -> Path:
|
|
@@ -41,9 +41,7 @@ class RnafusionAnalysisAPI(NfAnalysisAPI):
|
|
|
41
41
|
self.tower_workflow: str = config.rnafusion.tower_workflow
|
|
42
42
|
self.account: str = config.rnafusion.slurm.account
|
|
43
43
|
self.email: str = config.rnafusion.slurm.mail_user
|
|
44
|
-
self.compute_env_base: str = config.rnafusion.compute_env
|
|
45
44
|
self.revision: str = config.rnafusion.revision
|
|
46
|
-
self.nextflow_binary_path: str = config.rnafusion.binary_path
|
|
47
45
|
|
|
48
46
|
@property
|
|
49
47
|
def is_multiple_samples_allowed(self) -> bool:
|
|
@@ -40,8 +40,6 @@ class TaxprofilerAnalysisAPI(NfAnalysisAPI):
|
|
|
40
40
|
self.tower_workflow: str = config.taxprofiler.tower_workflow
|
|
41
41
|
self.account: str = config.taxprofiler.slurm.account
|
|
42
42
|
self.email: str = config.taxprofiler.slurm.mail_user
|
|
43
|
-
self.nextflow_binary_path: str = config.taxprofiler.binary_path
|
|
44
|
-
self.compute_env_base: str = config.taxprofiler.compute_env
|
|
45
43
|
|
|
46
44
|
@property
|
|
47
45
|
def is_multiqc_pattern_search_exact(self) -> bool:
|
|
@@ -38,9 +38,7 @@ class TomteAnalysisAPI(NfAnalysisAPI):
|
|
|
38
38
|
self.tower_workflow: str = config.tomte.tower_workflow
|
|
39
39
|
self.account: str = config.tomte.slurm.account
|
|
40
40
|
self.email: str = config.tomte.slurm.mail_user
|
|
41
|
-
self.compute_env_base: str = config.tomte.compute_env
|
|
42
41
|
self.revision: str = config.tomte.revision
|
|
43
|
-
self.nextflow_binary_path: str = config.tomte.binary_path
|
|
44
42
|
|
|
45
43
|
@staticmethod
|
|
46
44
|
def get_bundle_filenames_path() -> Path:
|
|
@@ -232,7 +232,6 @@ class MipConfig(BaseModel):
|
|
|
232
232
|
|
|
233
233
|
class NalloConfig(CommonAppConfig):
|
|
234
234
|
binary_path: str | None = None
|
|
235
|
-
compute_env: str
|
|
236
235
|
conda_binary: str | None = None
|
|
237
236
|
conda_env: str
|
|
238
237
|
platform: str
|
|
@@ -252,7 +251,6 @@ class NalloConfig(CommonAppConfig):
|
|
|
252
251
|
|
|
253
252
|
class RarediseaseConfig(CommonAppConfig):
|
|
254
253
|
binary_path: str | None = None
|
|
255
|
-
compute_env: str
|
|
256
254
|
conda_binary: str | None = None
|
|
257
255
|
conda_env: str
|
|
258
256
|
platform: str
|
|
@@ -272,7 +270,6 @@ class RarediseaseConfig(CommonAppConfig):
|
|
|
272
270
|
|
|
273
271
|
class TomteConfig(CommonAppConfig):
|
|
274
272
|
binary_path: str | None = None
|
|
275
|
-
compute_env: str
|
|
276
273
|
conda_binary: str | None = None
|
|
277
274
|
conda_env: str
|
|
278
275
|
platform: str
|
|
@@ -291,7 +288,6 @@ class TomteConfig(CommonAppConfig):
|
|
|
291
288
|
|
|
292
289
|
class RnafusionConfig(CommonAppConfig):
|
|
293
290
|
binary_path: str
|
|
294
|
-
compute_env: str
|
|
295
291
|
conda_binary: str | None = None
|
|
296
292
|
conda_env: str
|
|
297
293
|
platform: str
|
|
@@ -313,7 +309,6 @@ class TaxprofilerConfig(CommonAppConfig):
|
|
|
313
309
|
binary_path: str
|
|
314
310
|
conda_binary: str | None = None
|
|
315
311
|
conda_env: str
|
|
316
|
-
compute_env: str
|
|
317
312
|
platform: str
|
|
318
313
|
params: str
|
|
319
314
|
config: str
|
|
@@ -3,25 +3,6 @@ from pathlib import Path
|
|
|
3
3
|
from pydantic import BaseModel, field_validator
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
class NfCommandArgs(BaseModel):
|
|
7
|
-
"""Model for arguments and options supported."""
|
|
8
|
-
|
|
9
|
-
log: str | Path | None = None
|
|
10
|
-
resume: bool | None = None
|
|
11
|
-
profile: str | None = None
|
|
12
|
-
stub_run: bool | None = None
|
|
13
|
-
config: str | Path | None = None
|
|
14
|
-
name: str | None = None
|
|
15
|
-
revision: str | None = None
|
|
16
|
-
wait: str | None = None
|
|
17
|
-
id: str | None = None
|
|
18
|
-
with_tower: bool | None = None
|
|
19
|
-
use_nextflow: bool | None = None
|
|
20
|
-
compute_env: str | None = None
|
|
21
|
-
work_dir: str | Path | None = None
|
|
22
|
-
params_file: str | Path | None = None
|
|
23
|
-
|
|
24
|
-
|
|
25
6
|
class FileDeliverable(BaseModel):
|
|
26
7
|
"""Specification for a general deliverables file."""
|
|
27
8
|
|
|
@@ -31,6 +31,11 @@ class BaseView(ModelView):
|
|
|
31
31
|
return redirect(url_for("google.login", next=request.url))
|
|
32
32
|
|
|
33
33
|
|
|
34
|
+
def view_hifi_yield_in_gb(unused1, unused2, model, unused3):
|
|
35
|
+
del unused1, unused2, unused3
|
|
36
|
+
return Markup(f"{round(model.hifi_yield/1E9, 1)} Gb") if model.hifi_yield else ""
|
|
37
|
+
|
|
38
|
+
|
|
34
39
|
def view_priority(unused1, unused2, model, unused3):
|
|
35
40
|
"""column formatter for priority"""
|
|
36
41
|
del unused1, unused2, unused3
|
|
@@ -780,6 +785,7 @@ class SampleView(BaseView):
|
|
|
780
785
|
column_formatters = {
|
|
781
786
|
"application_version": view_application_link_via_application_version,
|
|
782
787
|
"customer": view_customer_link,
|
|
788
|
+
"hifi_yield": view_hifi_yield_in_gb,
|
|
783
789
|
"internal_id": view_case_sample_link,
|
|
784
790
|
"invoice": InvoiceView.view_invoice_link,
|
|
785
791
|
"original_ticket": view_ticket_link,
|
|
@@ -58,13 +58,6 @@ class Process:
|
|
|
58
58
|
self._stdout = ""
|
|
59
59
|
self._stderr = ""
|
|
60
60
|
|
|
61
|
-
def export_variables(self, export: dict[str, str]) -> None:
|
|
62
|
-
"""Export variables prior to execution."""
|
|
63
|
-
if export:
|
|
64
|
-
self.base_call.insert(
|
|
65
|
-
0, " ".join([f"export {variable}={value};" for variable, value in export.items()])
|
|
66
|
-
)
|
|
67
|
-
|
|
68
61
|
def run_command(self, parameters: list = None, dry_run: bool = False) -> int:
|
|
69
62
|
"""Execute a command in the shell.
|
|
70
63
|
If environment is supplied - shell=True has to be supplied to enable passing as a string for executing multiple
|
|
@@ -107,15 +100,6 @@ class Process:
|
|
|
107
100
|
|
|
108
101
|
return res.returncode
|
|
109
102
|
|
|
110
|
-
def get_command(self, parameters: list = None) -> str:
|
|
111
|
-
"""Returns a command string given a list of parameters."""
|
|
112
|
-
|
|
113
|
-
command: list[str] = copy.deepcopy(self.base_call)
|
|
114
|
-
if parameters:
|
|
115
|
-
command.extend(parameters)
|
|
116
|
-
|
|
117
|
-
return " ".join(command)
|
|
118
|
-
|
|
119
103
|
@property
|
|
120
104
|
def stdout(self):
|
|
121
105
|
"""Fetch stdout"""
|
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "cg"
|
|
7
|
-
version = "83.16.
|
|
7
|
+
version = "83.16.4"
|
|
8
8
|
description = "Clinical Genomics command center"
|
|
9
9
|
readme = {file = "README.md", content-type = "text/markdown"}
|
|
10
10
|
homepage = "https://github.com/Clinical-Genomics/cg"
|
cg-83.16.2/cg/__init__.py
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"""Nextflow related constants."""
|
|
2
|
-
|
|
3
|
-
from enum import IntEnum
|
|
4
|
-
from cg.constants import Workflow
|
|
5
|
-
|
|
6
|
-
NFX_WORK_DIR = "work"
|
|
7
|
-
NFX_SAMPLE_HEADER = "sample"
|
|
8
|
-
NFX_READ1_HEADER = "fastq_1"
|
|
9
|
-
NFX_READ2_HEADER = "fastq_2"
|
|
10
|
-
NFX_SAMPLESHEET_READS_HEADERS = [NFX_READ1_HEADER, NFX_READ2_HEADER]
|
|
11
|
-
NFX_SAMPLESHEET_HEADERS = [NFX_SAMPLE_HEADER] + NFX_SAMPLESHEET_READS_HEADERS
|
|
12
|
-
DELIVER_FILE_HEADERS = ["format", "id", "path", "path_index", "step", "tag"]
|
|
13
|
-
NXF_PID_FILE_ENV = "NXF_PID_FILE"
|
|
14
|
-
NXF_JVM_ARGS_ENV = "NXF_JVM_ARGS"
|
|
15
|
-
JAVA_MEMORY_HEADJOB = "-Xmx5g"
|
|
16
|
-
NEXTFLOW_WORKFLOWS: list = [
|
|
17
|
-
Workflow.RAREDISEASE,
|
|
18
|
-
Workflow.RNAFUSION,
|
|
19
|
-
Workflow.TAXPROFILER,
|
|
20
|
-
Workflow.TOMTE,
|
|
21
|
-
]
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class SlurmHeadJobDefaults(IntEnum):
|
|
25
|
-
"""Default parameters for slurm head jobs."""
|
|
26
|
-
|
|
27
|
-
HOURS: int = 96
|
|
28
|
-
MEMORY: int = 10
|
|
29
|
-
NUMBER_TASKS: int = 1
|