celescope 2.3.0.dev0__tar.gz → 2.3.0.dev2__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.
- {celescope-2.3.0.dev0/celescope.egg-info → celescope-2.3.0.dev2}/PKG-INFO +1 -1
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/__init__.py +1 -1
- celescope-2.3.0.dev2/celescope/bulk_rna/starsolo.py +286 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/chemistry_dict.py +4 -1
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/bulk_rna/base.html +1 -1
- celescope-2.3.0.dev2/celescope/templates/html/bulk_rna/cells.html +18 -0
- celescope-2.3.0.dev2/celescope/templates/html/utils/table_script/bulk_rna.html +10 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/matrix.py +15 -3
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/split_fastq.py +11 -4
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/utils.py +15 -5
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2/celescope.egg-info}/PKG-INFO +1 -1
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope.egg-info/SOURCES.txt +1 -0
- celescope-2.3.0.dev0/celescope/bulk_rna/starsolo.py +0 -135
- celescope-2.3.0.dev0/celescope/templates/html/utils/table_script/bulk_rna.html +0 -32
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/LICENSE +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/MANIFEST.in +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/README.md +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_rna/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_rna/multi_bulk_rna.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_vdj/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_vdj/consensus.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_vdj/count_vdj.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_vdj/mapping_vdj.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_vdj/multi_bulk_vdj.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/analysis_virus.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/count.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/count_virus.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/featureCounts.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/filter_virus.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/mkref.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/multi_capture_virus.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/star_virus.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/celescope.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/citeseq/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/citeseq/analysis_cite.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/citeseq/count_cite.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/citeseq/mapping_tag.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/citeseq/multi_citeseq.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/Clindex/tag_barcode.fasta +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/Clindex/tag_linker.fasta +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/HLA/hla_reference_rna.fasta +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-1/bc1.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-1/bc2.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-1/bc3.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-2/bc1.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-2/bc2.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-2/bc3.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-3/bc1.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-3/bc2.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-3/bc3.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V1/bc.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V1/linker1.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V1/linker2.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V2/bc1.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V2/bc2.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V2/bc3.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V2/linker1.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V2/linker2.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V3/bc1.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V3/bc2.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V3/bc3.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V3/linker1.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V3/linker2.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/bulk_rna-V1/bc.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/bulk_rna-V2/bc.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/bulk_rna-bulk_vdj_match/bc.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/bulk_vdj/bc.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/bulk_vdj/linker.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/flv/bc.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/flv/linker +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/flv_rna/bc.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/flv_rna/linker_4types +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/fusion/blood_1/BCR_ABL1_PML_RARA_all.fasta +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/fusion/blood_1/BCR_ABL1_PML_RARA_all_pos.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/fusion/blood_1/mkref.sh +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/rRNA/human_ribo.fasta +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/snp/panel/CHIP.bed +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/snp/panel/blood_1.bed +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/snp/panel/lung_1.bed +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/sweetseq/sweetseq_barcode.fasta +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/sweetseq/sweetseq_linker.fasta +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/dynaseq/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/dynaseq/conversion.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/dynaseq/multi_dynaseq.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/dynaseq/replacement.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/dynaseq/substitution.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/flv_trust4/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/flv_trust4/annotation.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/flv_trust4/assemble.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/flv_trust4/mapping.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/flv_trust4/multi_flv_trust4.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/flv_trust4/summarize.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/analysis_fusion.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/count_fusion.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/filter_fusion.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/mkref.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/multi_fusion.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/star_fusion.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/hla/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/hla/mapping_hla.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/hla/multi_hla.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/pathseq/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/pathseq/analysis_pathseq.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/pathseq/count_pathseq.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/pathseq/multi_pathseq.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/pathseq/pathseq.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/pathseq/starsolo.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna/analysis.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna/mkref.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna/multi_rna.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna/star.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna_5p3p/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna_5p3p/convert.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna_5p3p/multi_rna_5p3p.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/snp/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/snp/analysis_snp.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/snp/filter_snp.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/snp/mkref.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/snp/multi_snp.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/snp/variant_calling.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/sweetseq/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/sweetseq/analysis_tag.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/sweetseq/count_tag.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/sweetseq/mapping_tag.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/sweetseq/multi_sweetseq.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tag/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tag/analysis_tag.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tag/count_tag.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tag/mapping_tag.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tag/multi_tag.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tag/split_tag.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/bootstrap.min.css +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/buttons.dataTables.min.css +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/dataTables.jqueryui.min.css +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/config.json +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/css/animation.css +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/css/fontello-codes.css +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/css/fontello-embedded.css +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/css/fontello-ie7-codes.css +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/css/fontello-ie7.css +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/css/fontello.css +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/font/fontello.eot +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/font/fontello.svg +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/font/fontello.ttf +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/font/fontello.woff +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/font/fontello.woff2 +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/jquery-ui-git.css +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/jquery-ui.css +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/jquery.dataTables.css +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/bulk_vdj/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/bulk_vdj/count_vdj.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/capture_rna/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/capture_rna/count_capture_rna_summary.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/capture_virus/analysis_virus.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/capture_virus/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/citeseq/analysis_cite.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/citeseq/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/common/img1.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/common/logo.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/dynaseq/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/dynaseq/conversion.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/dynaseq/replacement.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/dynaseq/substitution.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/flv_trust4/annotation.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/flv_trust4/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/flv_trust4/summarize.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/fusion/analysis_fusion.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/fusion/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/hla/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/mut/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/pathseq/analysis_pathseq.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/pathseq/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna/analysis.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna/count.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna/star.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna_5p3p/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna_virus/analysis_rna_virus_summary.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna_virus/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/snp/analysis_snp.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/snp/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/sweetseq/analysis_tag.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/sweetseq/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/tag/analysis_tag.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/tag/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/tcr_fl/analysis_tag_summary.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/tcr_fl/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/tcr_fl/count_tag_summary.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/tcr_fl/mapping_tag_summary.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/analysis.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/col1_metrics.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/col2_metrics.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/end.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/head.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/help_info.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/preprocessing.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/start.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/step.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_dict.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_script/bulk_vdj.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_script/dynaseq.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_script/pathseq.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_script/rna.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_script/snp.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_script/vdj.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/vdj/base.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/vdj/count_vdj.html +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/img/img1.png +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/img/logo2.png +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/bootstrap.min.js +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/buttons.flash.min.js +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/buttons.html5.min.js +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/buttons.print.min.js +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/dataTables.buttons.min.js +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/dataTables.jqueryui.min.js +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/jquery.dataTables.js +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/jquery.dataTables.min.js +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/jquery.min.3.3.1.js +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/jquery.min.js +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/jszip.min.js +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/plotly-2.12.1.min.js +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/analysis_wrapper.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/barcode.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/capture/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/capture/analysis.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/capture/count_bam.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/capture/filter.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/capture/threshold.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/cells.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/consensus.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/count.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/cutadapt.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/debug.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/emptydrop_cr/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/emptydrop_cr/cell_calling_3.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/emptydrop_cr/get_plot_elements.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/emptydrop_cr/sgt.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/emptydrop_cr/stats.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/featureCounts.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/make_ref.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/merge_table.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/multi.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/parse_chemistry.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/plotly_plot.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/prep.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/prep_map.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/reference.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/report.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/sample.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/star_mixin.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/starsolo.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/step.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/tag/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/tag/analysis_tag.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/tag/count_tag.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/tag/mapping_tag.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/target_metrics.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/AddSequenceToCDR3File.pl +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/GetFullLengthAssembly.pl +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/Immune_marker.json +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/barcoderep-filter.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/IGH.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/IGK.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/IGL.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/IMGT+C.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/TRA.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/TRB.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/bcrtcr.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/BCR.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/IGH.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/IGK.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/IGL.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/IMGT+C.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/TCR.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/TRA.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/TRB.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/bcrtcr.fa +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/trust-airr.pl +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/trust-barcoderep-to-10X.pl +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/trust-barcoderep.pl +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/trust-cluster.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/trust-simplerep.pl +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/trust-stats.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/utils/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/utils/mapping_vdj.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/utils/mkgtf.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/vdj/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/vdj/count_vdj.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/vdj/mapping_vdj.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/vdj/mkref.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/vdj/multi_vdj.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope.egg-info/dependency_links.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope.egg-info/entry_points.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope.egg-info/requires.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope.egg-info/top_level.txt +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/add_tag.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/add_zero_count_genes.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/extract_read.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/generate_docs.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/release_local.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/split_fastq.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/setup.cfg +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/setup.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/conftest.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/test_function.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/test_multi.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/unittests/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/unittests/snp/__init__.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/unittests/snp/test_snp.py +0 -0
- {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/unittests/snp/test_variant_calling.py +0 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
import numpy as np
|
|
5
|
+
import pandas as pd
|
|
6
|
+
|
|
7
|
+
from celescope.__init__ import HELP_DICT
|
|
8
|
+
from celescope.tools.__init__ import COUNTS_FILE_NAME
|
|
9
|
+
from celescope.chemistry_dict import chemistry_dict
|
|
10
|
+
from celescope.tools.emptydrop_cr import get_plot_elements
|
|
11
|
+
from celescope.tools.starsolo import (
|
|
12
|
+
Demultiplexing,
|
|
13
|
+
Mapping,
|
|
14
|
+
create_solo_args,
|
|
15
|
+
)
|
|
16
|
+
from celescope.tools.starsolo import (
|
|
17
|
+
Starsolo as tools_Starsolo,
|
|
18
|
+
)
|
|
19
|
+
from celescope.tools.matrix import CountMatrix
|
|
20
|
+
from celescope.tools import utils
|
|
21
|
+
from celescope.tools.step import Step, s_common
|
|
22
|
+
|
|
23
|
+
SAM_attributes = "NH HI nM AS CR UR CB UB GX GN "
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def get_well_barcode(
|
|
27
|
+
bc_file: str,
|
|
28
|
+
) -> dict[int, str]:
|
|
29
|
+
barcodes = utils.one_col_to_list(bc_file)
|
|
30
|
+
return {i: x for i, x in enumerate(barcodes, start=1)}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def get_barcode_sample(
|
|
34
|
+
bc_file: str,
|
|
35
|
+
well_sample_file: str,
|
|
36
|
+
) -> dict[str, str]:
|
|
37
|
+
well_barcode = get_well_barcode(bc_file)
|
|
38
|
+
well_sample = utils.two_col_to_dict(well_sample_file)
|
|
39
|
+
barcode_sample = {
|
|
40
|
+
well_barcode[well]: sample for well, sample in well_sample.items()
|
|
41
|
+
}
|
|
42
|
+
return barcode_sample
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class Starsolo(tools_Starsolo):
|
|
46
|
+
def __init__(self, args, display_title=None):
|
|
47
|
+
super().__init__(args, display_title=display_title)
|
|
48
|
+
self.well_barcode = get_well_barcode(self.bc[0])
|
|
49
|
+
self.barcode_sample = get_barcode_sample(self.bc[0], args.well_sample)
|
|
50
|
+
|
|
51
|
+
self.tsv_matrix_file = f"{self.out_prefix}_matrix.tsv.gz"
|
|
52
|
+
self.outs.append(self.tsv_matrix_file)
|
|
53
|
+
|
|
54
|
+
def run_starsolo(self):
|
|
55
|
+
cmd = create_solo_args(
|
|
56
|
+
pattern_args=self.pattern_args,
|
|
57
|
+
whitelist_args=self.whitelist_args,
|
|
58
|
+
outFileNamePrefix=self.out_prefix + "_",
|
|
59
|
+
fq1=self.args.fq1,
|
|
60
|
+
fq2=self.args.fq2,
|
|
61
|
+
genomeDir=self.args.genomeDir,
|
|
62
|
+
soloCellFilter=self.args.soloCellFilter,
|
|
63
|
+
runThreadN=self.args.thread,
|
|
64
|
+
clip3pAdapterSeq=self.args.adapter_3p,
|
|
65
|
+
outFilterMatchNmin=self.args.outFilterMatchNmin,
|
|
66
|
+
soloFeatures=self.args.soloFeatures,
|
|
67
|
+
outSAMattributes=self.outSAMattributes,
|
|
68
|
+
soloCBmatchWLtype=self.args.soloCBmatchWLtype,
|
|
69
|
+
extra_starsolo_args=self.extra_starsolo_args,
|
|
70
|
+
)
|
|
71
|
+
if self.chemistry == "bulk_rna-bulk_vdj_match":
|
|
72
|
+
cmd += "--soloStrand Reverse \\\n"
|
|
73
|
+
sys.stderr.write(cmd)
|
|
74
|
+
subprocess.check_call(cmd, shell=True)
|
|
75
|
+
cmd = f"chmod -R 755 {self.solo_out_dir}"
|
|
76
|
+
sys.stderr.write(cmd)
|
|
77
|
+
subprocess.check_call(cmd, shell=True)
|
|
78
|
+
|
|
79
|
+
@utils.add_log
|
|
80
|
+
def keep_barcodes(self):
|
|
81
|
+
"""take in raw matrix, only keep barcodes in the input file, and convert barcodes to sample names"""
|
|
82
|
+
matrix = CountMatrix.from_matrix_dir(self.raw_matrix)
|
|
83
|
+
|
|
84
|
+
for barcode in self.barcode_sample:
|
|
85
|
+
if barcode not in matrix.get_barcodes():
|
|
86
|
+
sys.stderr.write(
|
|
87
|
+
f"WARNING: barcode:{barcode} {self.barcode_sample[barcode]} not found in raw matrix!\n"
|
|
88
|
+
)
|
|
89
|
+
self.barcode_sample.pop(barcode)
|
|
90
|
+
filtered = matrix.slice_matrix_bc(self.barcode_sample.keys())
|
|
91
|
+
filtered.to_matrix_dir(self.filtered_matrix)
|
|
92
|
+
samples = [self.barcode_sample[bc] for bc in filtered.get_barcodes()]
|
|
93
|
+
converted = CountMatrix(filtered.get_features(), samples, filtered.get_matrix())
|
|
94
|
+
df = converted.to_df()
|
|
95
|
+
df.to_csv(self.tsv_matrix_file, sep="\t")
|
|
96
|
+
return filtered
|
|
97
|
+
|
|
98
|
+
def run(self):
|
|
99
|
+
self.run_starsolo()
|
|
100
|
+
filtered = self.keep_barcodes()
|
|
101
|
+
self.gzip_matrix()
|
|
102
|
+
q30_cb, q30_umi = self.get_Q30_cb_UMI()
|
|
103
|
+
return q30_cb, q30_umi, filtered, self.barcode_sample, self.well_barcode
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
class Cells(Step):
|
|
107
|
+
def __init__(self, args, display_title=None):
|
|
108
|
+
super().__init__(args, display_title=display_title)
|
|
109
|
+
solo_dir = f"{self.outdir}/{self.sample}_Solo.out/GeneFull_Ex50pAS"
|
|
110
|
+
self.summary_file = f"{solo_dir}/Summary.csv"
|
|
111
|
+
self.counts_file = f"{self.outs_dir}/{COUNTS_FILE_NAME}"
|
|
112
|
+
|
|
113
|
+
@utils.add_log
|
|
114
|
+
def parse_summary(self):
|
|
115
|
+
df = pd.read_csv(self.summary_file, index_col=0, header=None)
|
|
116
|
+
s = df.iloc[:, 0]
|
|
117
|
+
saturation = float(s["Sequencing Saturation"])
|
|
118
|
+
n_reads = int(s["Number of Reads"])
|
|
119
|
+
q30_RNA = float(s["Q30 Bases in RNA read"])
|
|
120
|
+
|
|
121
|
+
return n_reads, q30_RNA, saturation
|
|
122
|
+
|
|
123
|
+
def run(self, filtered: CountMatrix, barcode_sample: dict, well_barcode: dict):
|
|
124
|
+
df_counts = pd.read_csv(self.counts_file, index_col=0, header=0, sep="\t")
|
|
125
|
+
reads_total = df_counts["countedU"].sum()
|
|
126
|
+
bcs = filtered.get_barcodes()
|
|
127
|
+
n_cells = len(bcs)
|
|
128
|
+
reads_cell = df_counts.loc[bcs, "countedU"].sum()
|
|
129
|
+
fraction_reads_in_cells = float(reads_cell / reads_total)
|
|
130
|
+
mean_used_reads_per_cell = int(reads_cell // len(bcs))
|
|
131
|
+
median_umi_per_cell = int(df_counts.loc[bcs, "UMI"].median())
|
|
132
|
+
|
|
133
|
+
bc_geneNum, total_genes = filtered.get_bc_geneNum()
|
|
134
|
+
median_genes_per_cell = int(np.median(list(bc_geneNum.values())))
|
|
135
|
+
|
|
136
|
+
df_counts.loc[:, "mark"] = "UB"
|
|
137
|
+
df_counts.loc[bcs, "mark"] = "CB"
|
|
138
|
+
df_counts.to_csv(self.counts_file, sep="\t", index=True)
|
|
139
|
+
|
|
140
|
+
self.add_metric(
|
|
141
|
+
"Number of Wells",
|
|
142
|
+
n_cells,
|
|
143
|
+
help_info="number of barcodes with at least one UMI",
|
|
144
|
+
)
|
|
145
|
+
self.add_metric(
|
|
146
|
+
"Fraction of Reads in Wells",
|
|
147
|
+
fraction_reads_in_cells,
|
|
148
|
+
value_type="fraction",
|
|
149
|
+
help_info="Fraction of reads which were mapped to a barcode",
|
|
150
|
+
)
|
|
151
|
+
self.add_metric(
|
|
152
|
+
"Mean Reads per Well",
|
|
153
|
+
mean_used_reads_per_cell,
|
|
154
|
+
help_info="Mean number of reads per barcode",
|
|
155
|
+
)
|
|
156
|
+
self.add_metric(
|
|
157
|
+
"Median UMI per Well",
|
|
158
|
+
median_umi_per_cell,
|
|
159
|
+
help_info="Median UMI count per barcode",
|
|
160
|
+
)
|
|
161
|
+
self.add_metric(
|
|
162
|
+
"Median Genes per Well",
|
|
163
|
+
median_genes_per_cell,
|
|
164
|
+
help_info="Median number of genes per barcode",
|
|
165
|
+
)
|
|
166
|
+
self.add_data(chart=get_plot_elements.plot_barcode_rank(self.counts_file))
|
|
167
|
+
|
|
168
|
+
n_reads, q30_RNA, saturation = self.parse_summary()
|
|
169
|
+
self.add_metric(
|
|
170
|
+
"Saturation",
|
|
171
|
+
saturation,
|
|
172
|
+
value_type="fraction",
|
|
173
|
+
help_info="the fraction of read originating from an already-observed UMI.",
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
# table
|
|
177
|
+
df_cells = df_counts[df_counts["mark"] == "CB"]
|
|
178
|
+
df_cells["Sample"] = df_cells.index.map(lambda x: barcode_sample[x])
|
|
179
|
+
df_cells["Genes"] = df_cells.index.map(lambda x: bc_geneNum[x])
|
|
180
|
+
df_cells["Barcode"] = df_cells.index
|
|
181
|
+
barcode_well = {v: k for k, v in well_barcode.items()}
|
|
182
|
+
df_cells["Well"] = df_cells["Barcode"].map(lambda x: barcode_well[x])
|
|
183
|
+
df_cells = df_cells.loc[:, ["Well", "Sample", "Barcode", "UMI", "Genes"]]
|
|
184
|
+
|
|
185
|
+
table_dict = self.get_table_dict(
|
|
186
|
+
title="Metrics for a Single Well",
|
|
187
|
+
table_id=self.assay,
|
|
188
|
+
df_table=df_cells,
|
|
189
|
+
)
|
|
190
|
+
self.add_data(table_dict=table_dict)
|
|
191
|
+
|
|
192
|
+
return n_reads, q30_RNA
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
def starsolo(args):
|
|
196
|
+
with Starsolo(args) as runner:
|
|
197
|
+
q30_cb, q30_umi, filtered, barcode_sample, well_barcode = runner.run()
|
|
198
|
+
|
|
199
|
+
with Mapping(args) as runner:
|
|
200
|
+
valid_reads, corrected = runner.run()
|
|
201
|
+
|
|
202
|
+
with Cells(args, display_title="Wells") as runner:
|
|
203
|
+
n_reads, q30_RNA = runner.run(filtered, barcode_sample, well_barcode)
|
|
204
|
+
|
|
205
|
+
with Demultiplexing(args) as runner:
|
|
206
|
+
runner.run(valid_reads, n_reads, corrected, q30_cb, q30_umi, q30_RNA)
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
def get_opts_starsolo(parser, sub_program=True):
|
|
210
|
+
parser.add_argument(
|
|
211
|
+
"--chemistry",
|
|
212
|
+
help=HELP_DICT["chemistry"],
|
|
213
|
+
choices=list(chemistry_dict.keys()),
|
|
214
|
+
default="auto",
|
|
215
|
+
)
|
|
216
|
+
parser.add_argument(
|
|
217
|
+
"--pattern",
|
|
218
|
+
help="""The pattern of R1 reads, e.g. `C8L16C8L16C8L1U12T18`. The number after the letter represents the number
|
|
219
|
+
of bases.
|
|
220
|
+
- `C`: cell barcode
|
|
221
|
+
- `L`: linker(common sequences)
|
|
222
|
+
- `U`: UMI
|
|
223
|
+
- `T`: poly T""",
|
|
224
|
+
)
|
|
225
|
+
parser.add_argument(
|
|
226
|
+
"--whitelist",
|
|
227
|
+
help="whitelist file path.",
|
|
228
|
+
)
|
|
229
|
+
parser.add_argument(
|
|
230
|
+
"--adapter_3p",
|
|
231
|
+
help="Adapter sequence to clip from 3 prime. Multiple sequences are seperated by space",
|
|
232
|
+
default="AAAAAAAAAAAA",
|
|
233
|
+
)
|
|
234
|
+
parser.add_argument(
|
|
235
|
+
"--genomeDir",
|
|
236
|
+
help=HELP_DICT["genomeDir"],
|
|
237
|
+
)
|
|
238
|
+
parser.add_argument(
|
|
239
|
+
"--outFilterMatchNmin",
|
|
240
|
+
help="""Alignment will be output only if the number of matched bases
|
|
241
|
+
is higher than or equal to this value.""",
|
|
242
|
+
default=50,
|
|
243
|
+
)
|
|
244
|
+
parser.add_argument(
|
|
245
|
+
"--soloCellFilter",
|
|
246
|
+
help="The same as the argument in STARsolo",
|
|
247
|
+
default="None",
|
|
248
|
+
)
|
|
249
|
+
parser.add_argument(
|
|
250
|
+
"--starMem", help="Maximum memory that STAR can use.", default=32
|
|
251
|
+
)
|
|
252
|
+
parser.add_argument("--STAR_param", help=HELP_DICT["additional_param"], default="")
|
|
253
|
+
parser.add_argument(
|
|
254
|
+
"--SAM_attributes",
|
|
255
|
+
help=f"Additional attributes(other than {SAM_attributes}) to be added to SAM file",
|
|
256
|
+
default="",
|
|
257
|
+
)
|
|
258
|
+
parser.add_argument(
|
|
259
|
+
"--soloFeatures",
|
|
260
|
+
help="The same as the argument in STARsolo",
|
|
261
|
+
default="GeneFull_Ex50pAS Gene",
|
|
262
|
+
)
|
|
263
|
+
parser.add_argument(
|
|
264
|
+
"--soloCBmatchWLtype",
|
|
265
|
+
help="The same as the argument in STARsolo. Please note `EditDist 2` only works with `--soloType CB UMI Complex`. ",
|
|
266
|
+
default="1MM",
|
|
267
|
+
)
|
|
268
|
+
parser.add_argument(
|
|
269
|
+
"--well_sample",
|
|
270
|
+
help="tsv file of well numbers and sample names. The first column is well numbers and the second column is sample names.",
|
|
271
|
+
required=True,
|
|
272
|
+
)
|
|
273
|
+
if sub_program:
|
|
274
|
+
parser.add_argument(
|
|
275
|
+
"--fq1",
|
|
276
|
+
help="R1 fastq file. Multiple files are separated by comma.",
|
|
277
|
+
required=True,
|
|
278
|
+
)
|
|
279
|
+
parser.add_argument(
|
|
280
|
+
"--fq2",
|
|
281
|
+
help="R2 fastq file. Multiple files are separated by comma.",
|
|
282
|
+
required=True,
|
|
283
|
+
)
|
|
284
|
+
parser = s_common(parser)
|
|
285
|
+
|
|
286
|
+
return parser
|
|
@@ -7,7 +7,10 @@ chemistry_dict = {
|
|
|
7
7
|
"customized": {
|
|
8
8
|
"pattern": "" # user defined
|
|
9
9
|
},
|
|
10
|
-
"GEXSCOPE-MicroBead": {
|
|
10
|
+
"GEXSCOPE-MicroBead": {
|
|
11
|
+
"pattern": "C12U8",
|
|
12
|
+
"bc": [],
|
|
13
|
+
},
|
|
11
14
|
"GEXSCOPE-V1": {
|
|
12
15
|
"pattern": "C8L16C8L16C8L1U12",
|
|
13
16
|
"bc": ["bc.txt", "bc.txt", "bc.txt"],
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<div class="abc" style="float: left; margin-left: 15%; margin-right:15%; width: 70%" >
|
|
2
|
+
<h2>{{ step_summary.display_title}} <i class="icon-help-circled" onClick="toggle1(this.parentNode.parentNode)" style="cursor:pointer;"></i></h2>
|
|
3
|
+
<div class="box">
|
|
4
|
+
{% include "html/utils/help_info.html" %}
|
|
5
|
+
{% include "html/utils/col1_metrics.html" %}
|
|
6
|
+
|
|
7
|
+
<div id="myDivUMI" style="float: left; margin-left: 3%; margin-top: 1%;margin-right:0%; width: 47%">
|
|
8
|
+
{{ step_summary.chart|safe }}
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div class="clear" ></div>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div class="abc" style="float: left; margin-left: 15%; margin-right:15%; width: 70%" >
|
|
16
|
+
{% include "html/utils/table_dict.html" %}
|
|
17
|
+
<div class="clear" ></div>
|
|
18
|
+
</div>
|
|
@@ -234,9 +234,11 @@ class CountMatrix:
|
|
|
234
234
|
gene_index, bc_index = self.__matrix.nonzero()
|
|
235
235
|
total_genes = len(set(gene_index))
|
|
236
236
|
bc_gene = defaultdict(set)
|
|
237
|
-
for gene,
|
|
238
|
-
bc_gene[
|
|
239
|
-
return {
|
|
237
|
+
for gene, bc_i in zip(gene_index, bc_index):
|
|
238
|
+
bc_gene[bc_i].add(gene)
|
|
239
|
+
return {
|
|
240
|
+
self.__barcodes[bc_i]: len(bc_gene[bc_i]) for bc_i in bc_gene
|
|
241
|
+
}, total_genes
|
|
240
242
|
|
|
241
243
|
def get_barcodes(self):
|
|
242
244
|
return self.__barcodes
|
|
@@ -271,3 +273,13 @@ class CountMatrix:
|
|
|
271
273
|
matrix[barcode_indices[barcode], feature_indices[feature]] = count
|
|
272
274
|
|
|
273
275
|
return matrix.tocsr()
|
|
276
|
+
|
|
277
|
+
def to_df(self, gene_id=True):
|
|
278
|
+
"""
|
|
279
|
+
Returns:
|
|
280
|
+
df: pd.DataFrame
|
|
281
|
+
"""
|
|
282
|
+
index = self.__features.gene_id if gene_id else self.__features.gene_name
|
|
283
|
+
return pd.DataFrame.sparse.from_spmatrix(
|
|
284
|
+
self.__matrix, index=index, columns=self.__barcodes
|
|
285
|
+
)
|
|
@@ -6,6 +6,7 @@ import celescope.tools.parse_chemistry as parse_chemistry
|
|
|
6
6
|
import pysam
|
|
7
7
|
from celescope.chemistry_dict import chemistry_dict
|
|
8
8
|
from celescope.__init__ import HELP_DICT
|
|
9
|
+
from celescope.bulk_rna.starsolo import get_barcode_sample
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
UMI_SEPARATOR = ":"
|
|
@@ -17,7 +18,6 @@ class Split_fastq(Step):
|
|
|
17
18
|
|
|
18
19
|
self.fq1_list = args.fq1.split(",")
|
|
19
20
|
self.fq2_list = args.fq2.split(",")
|
|
20
|
-
self.barcodes = set(utils.one_col_to_list(args.barcodes))
|
|
21
21
|
|
|
22
22
|
chemistry = parse_chemistry.get_chemistry(
|
|
23
23
|
self.assay, args.chemistry, self.fq1_list
|
|
@@ -29,12 +29,14 @@ class Split_fastq(Step):
|
|
|
29
29
|
parse_chemistry.create_mismatch_origin_dicts_from_whitelists(bc, 1)
|
|
30
30
|
)
|
|
31
31
|
|
|
32
|
+
self.barcode_sample = get_barcode_sample(bc[0], args.well_sample)
|
|
33
|
+
|
|
32
34
|
@utils.add_log
|
|
33
35
|
def split(self):
|
|
34
36
|
self.fh_dict = {}
|
|
35
|
-
for barcode in self.
|
|
37
|
+
for barcode, sample in self.barcode_sample.items():
|
|
36
38
|
self.fh_dict[barcode] = utils.generic_open(
|
|
37
|
-
f"{self.
|
|
39
|
+
f"{self.outdir}/{sample}.fq.gz", "wt"
|
|
38
40
|
)
|
|
39
41
|
|
|
40
42
|
for fq1, fq2 in zip(self.fq1_list, self.fq2_list):
|
|
@@ -45,7 +47,7 @@ class Split_fastq(Step):
|
|
|
45
47
|
valid, corrected, corrected_bc = parse_chemistry.check_seq_mismatch(
|
|
46
48
|
bc_list, self.raw_list, self.mismatch_list
|
|
47
49
|
)
|
|
48
|
-
if valid and corrected_bc in self.
|
|
50
|
+
if valid and corrected_bc in self.barcode_sample:
|
|
49
51
|
umi = e1.sequence[self.pattern_dict["U"][0]]
|
|
50
52
|
name = e1.name + UMI_SEPARATOR + umi
|
|
51
53
|
self.fh_dict[corrected_bc].write(
|
|
@@ -81,6 +83,11 @@ def get_opts_split_fastq(parser, sub_program):
|
|
|
81
83
|
"--whitelist",
|
|
82
84
|
help="Cell barcode whitelist file path, one cell barcode per line.",
|
|
83
85
|
)
|
|
86
|
+
parser.add_argument(
|
|
87
|
+
"--well_sample",
|
|
88
|
+
help="tsv file of well numbers and sample names. The first column is well numbers and the second column is sample names.",
|
|
89
|
+
required=True,
|
|
90
|
+
)
|
|
84
91
|
if sub_program:
|
|
85
92
|
parser.add_argument(
|
|
86
93
|
"--fq1",
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import glob
|
|
2
2
|
import gzip
|
|
3
3
|
import importlib
|
|
4
|
+
import json
|
|
4
5
|
import logging
|
|
5
6
|
import os
|
|
6
7
|
import re
|
|
7
8
|
import subprocess
|
|
9
|
+
import sys
|
|
8
10
|
import time
|
|
9
11
|
import unittest
|
|
10
|
-
import
|
|
11
|
-
import sys
|
|
12
|
-
from collections import Counter, defaultdict
|
|
12
|
+
from collections import Counter, OrderedDict, defaultdict
|
|
13
13
|
from datetime import timedelta
|
|
14
14
|
from functools import wraps
|
|
15
15
|
|
|
16
16
|
import pandas as pd
|
|
17
17
|
import pysam
|
|
18
18
|
|
|
19
|
+
from celescope.__init__ import ROOT_PATH
|
|
19
20
|
from celescope.tools.__init__ import (
|
|
20
|
-
FILTERED_MATRIX_DIR_SUFFIX,
|
|
21
21
|
BARCODE_FILE_NAME,
|
|
22
|
+
FILTERED_MATRIX_DIR_SUFFIX,
|
|
22
23
|
OUTS_DIR,
|
|
23
24
|
)
|
|
24
|
-
from celescope.__init__ import ROOT_PATH
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
def add_log(func):
|
|
@@ -160,6 +160,16 @@ def one_col_to_list(file) -> list:
|
|
|
160
160
|
return [item.strip() for item in col1]
|
|
161
161
|
|
|
162
162
|
|
|
163
|
+
def two_col_to_dict(file):
|
|
164
|
+
"""
|
|
165
|
+
Read file with two columns.
|
|
166
|
+
Returns dict
|
|
167
|
+
"""
|
|
168
|
+
df = pd.read_csv(file, header=None, sep="\t")
|
|
169
|
+
df = df.dropna()
|
|
170
|
+
return OrderedDict(zip(df[0], df[1]))
|
|
171
|
+
|
|
172
|
+
|
|
163
173
|
def get_bed_file_path(panel):
|
|
164
174
|
bed_file_path = f"{ROOT_PATH}/data/snp/panel/{panel}.bed"
|
|
165
175
|
if not os.path.exists(bed_file_path):
|
|
@@ -149,6 +149,7 @@ celescope/templates/css/fontello-323401c3/font/fontello.ttf
|
|
|
149
149
|
celescope/templates/css/fontello-323401c3/font/fontello.woff
|
|
150
150
|
celescope/templates/css/fontello-323401c3/font/fontello.woff2
|
|
151
151
|
celescope/templates/html/bulk_rna/base.html
|
|
152
|
+
celescope/templates/html/bulk_rna/cells.html
|
|
152
153
|
celescope/templates/html/bulk_vdj/base.html
|
|
153
154
|
celescope/templates/html/bulk_vdj/count_vdj.html
|
|
154
155
|
celescope/templates/html/capture_rna/base.html
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import subprocess
|
|
2
|
-
import sys
|
|
3
|
-
from celescope.tools.starsolo import (
|
|
4
|
-
Starsolo as tools_Starsolo,
|
|
5
|
-
create_solo_args,
|
|
6
|
-
Mapping,
|
|
7
|
-
Cells,
|
|
8
|
-
Demultiplexing,
|
|
9
|
-
)
|
|
10
|
-
from celescope.tools.step import s_common
|
|
11
|
-
from celescope.__init__ import HELP_DICT
|
|
12
|
-
from celescope.chemistry_dict import chemistry_dict
|
|
13
|
-
|
|
14
|
-
SAM_attributes = "NH HI nM AS CR UR CB UB GX GN "
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class Starsolo(tools_Starsolo):
|
|
18
|
-
def __init__(self, args, display_title=None):
|
|
19
|
-
super().__init__(args, display_title=display_title)
|
|
20
|
-
|
|
21
|
-
def run_starsolo(self):
|
|
22
|
-
cmd = create_solo_args(
|
|
23
|
-
pattern_args=self.pattern_args,
|
|
24
|
-
whitelist_args=self.whitelist_args,
|
|
25
|
-
outFileNamePrefix=self.out_prefix + "_",
|
|
26
|
-
fq1=self.args.fq1,
|
|
27
|
-
fq2=self.args.fq2,
|
|
28
|
-
genomeDir=self.args.genomeDir,
|
|
29
|
-
soloCellFilter=self.args.soloCellFilter,
|
|
30
|
-
runThreadN=self.args.thread,
|
|
31
|
-
clip3pAdapterSeq=self.args.adapter_3p,
|
|
32
|
-
outFilterMatchNmin=self.args.outFilterMatchNmin,
|
|
33
|
-
soloFeatures=self.args.soloFeatures,
|
|
34
|
-
outSAMattributes=self.outSAMattributes,
|
|
35
|
-
soloCBmatchWLtype=self.args.soloCBmatchWLtype,
|
|
36
|
-
extra_starsolo_args=self.extra_starsolo_args,
|
|
37
|
-
)
|
|
38
|
-
if self.chemistry == "bulk_rna-bulk_vdj_match":
|
|
39
|
-
cmd += "--soloStrand Reverse \\\n"
|
|
40
|
-
sys.stderr.write(cmd)
|
|
41
|
-
subprocess.check_call(cmd, shell=True)
|
|
42
|
-
cmd = f"chmod -R 755 {self.solo_out_dir}"
|
|
43
|
-
sys.stderr.write(cmd)
|
|
44
|
-
subprocess.check_call(cmd, shell=True)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def starsolo(args):
|
|
48
|
-
with Starsolo(args) as runner:
|
|
49
|
-
q30_cb, q30_umi, chemistry = runner.run()
|
|
50
|
-
|
|
51
|
-
with Mapping(args) as runner:
|
|
52
|
-
valid_reads, corrected = runner.run()
|
|
53
|
-
|
|
54
|
-
with Cells(args) as runner:
|
|
55
|
-
n_reads, q30_RNA = runner.run(chemistry, valid_reads)
|
|
56
|
-
|
|
57
|
-
with Demultiplexing(args) as runner:
|
|
58
|
-
runner.run(valid_reads, n_reads, corrected, q30_cb, q30_umi, q30_RNA)
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
def get_opts_starsolo(parser, sub_program=True):
|
|
62
|
-
parser.add_argument(
|
|
63
|
-
"--chemistry",
|
|
64
|
-
help=HELP_DICT["chemistry"],
|
|
65
|
-
choices=list(chemistry_dict.keys()),
|
|
66
|
-
default="auto",
|
|
67
|
-
)
|
|
68
|
-
parser.add_argument(
|
|
69
|
-
"--pattern",
|
|
70
|
-
help="""The pattern of R1 reads, e.g. `C8L16C8L16C8L1U12T18`. The number after the letter represents the number
|
|
71
|
-
of bases.
|
|
72
|
-
- `C`: cell barcode
|
|
73
|
-
- `L`: linker(common sequences)
|
|
74
|
-
- `U`: UMI
|
|
75
|
-
- `T`: poly T""",
|
|
76
|
-
)
|
|
77
|
-
parser.add_argument(
|
|
78
|
-
"--whitelist",
|
|
79
|
-
help="Cell barcode whitelist file path, one cell barcode per line. Multiple whitelist files are seperated by space.",
|
|
80
|
-
)
|
|
81
|
-
parser.add_argument(
|
|
82
|
-
"--adapter_3p",
|
|
83
|
-
help="Adapter sequence to clip from 3 prime. Multiple sequences are seperated by space",
|
|
84
|
-
default="AAAAAAAAAAAA",
|
|
85
|
-
)
|
|
86
|
-
parser.add_argument(
|
|
87
|
-
"--genomeDir",
|
|
88
|
-
help=HELP_DICT["genomeDir"],
|
|
89
|
-
)
|
|
90
|
-
parser.add_argument(
|
|
91
|
-
"--outFilterMatchNmin",
|
|
92
|
-
help="""Alignment will be output only if the number of matched bases
|
|
93
|
-
is higher than or equal to this value.""",
|
|
94
|
-
default=50,
|
|
95
|
-
)
|
|
96
|
-
# 96 wells
|
|
97
|
-
parser.add_argument(
|
|
98
|
-
"--soloCellFilter",
|
|
99
|
-
help="The same as the argument in STARsolo",
|
|
100
|
-
default="CellRanger2.2 384 0.99 10",
|
|
101
|
-
)
|
|
102
|
-
parser.add_argument(
|
|
103
|
-
"--starMem", help="Maximum memory that STAR can use.", default=32
|
|
104
|
-
)
|
|
105
|
-
parser.add_argument("--STAR_param", help=HELP_DICT["additional_param"], default="")
|
|
106
|
-
parser.add_argument(
|
|
107
|
-
"--SAM_attributes",
|
|
108
|
-
help=f"Additional attributes(other than {SAM_attributes}) to be added to SAM file",
|
|
109
|
-
default="",
|
|
110
|
-
)
|
|
111
|
-
parser.add_argument(
|
|
112
|
-
"--soloFeatures",
|
|
113
|
-
help="The same as the argument in STARsolo",
|
|
114
|
-
default="GeneFull_Ex50pAS Gene",
|
|
115
|
-
)
|
|
116
|
-
parser.add_argument(
|
|
117
|
-
"--soloCBmatchWLtype",
|
|
118
|
-
help="The same as the argument in STARsolo. Please note `EditDist 2` only works with `--soloType CB UMI Complex`. ",
|
|
119
|
-
default="1MM",
|
|
120
|
-
)
|
|
121
|
-
|
|
122
|
-
if sub_program:
|
|
123
|
-
parser.add_argument(
|
|
124
|
-
"--fq1",
|
|
125
|
-
help="R1 fastq file. Multiple files are separated by comma.",
|
|
126
|
-
required=True,
|
|
127
|
-
)
|
|
128
|
-
parser.add_argument(
|
|
129
|
-
"--fq2",
|
|
130
|
-
help="R2 fastq file. Multiple files are separated by comma.",
|
|
131
|
-
required=True,
|
|
132
|
-
)
|
|
133
|
-
parser = s_common(parser)
|
|
134
|
-
|
|
135
|
-
return parser
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
|
|
3
|
-
$(document).ready(function () {
|
|
4
|
-
var table = $('#bulk_rna').DataTable({
|
|
5
|
-
dom: 'Bfrtip',
|
|
6
|
-
buttons: ['excel'],
|
|
7
|
-
"aaSorting": []
|
|
8
|
-
});
|
|
9
|
-
var indexOfMyCol = 0 ;
|
|
10
|
-
var collator = new Intl.Collator(undefined, {numeric: true, sensitivity: 'base'});
|
|
11
|
-
$("#bulk_rna thead th").each( function ( i ) {
|
|
12
|
-
if (i==indexOfMyCol){
|
|
13
|
-
|
|
14
|
-
var select = $('<select><option value=""></option></select>')
|
|
15
|
-
.appendTo( $(this).empty() )
|
|
16
|
-
.on( 'change', function () {
|
|
17
|
-
var pattern = ""
|
|
18
|
-
if ($(this).val()!="") {
|
|
19
|
-
pattern= pattern="^"+$(this).val() +"$"
|
|
20
|
-
}
|
|
21
|
-
table.column( i )
|
|
22
|
-
.search(input=pattern, regex=true, smart=false)
|
|
23
|
-
.draw();
|
|
24
|
-
} );
|
|
25
|
-
|
|
26
|
-
table.column( i).data().unique().sort(collator.compare).each( function ( d, j ) {
|
|
27
|
-
select.append( '<option value="'+d+'">'+d+'</option>' )
|
|
28
|
-
} );
|
|
29
|
-
}
|
|
30
|
-
} );
|
|
31
|
-
});
|
|
32
|
-
</script>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|