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.
Files changed (318) hide show
  1. {celescope-2.3.0.dev0/celescope.egg-info → celescope-2.3.0.dev2}/PKG-INFO +1 -1
  2. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/__init__.py +1 -1
  3. celescope-2.3.0.dev2/celescope/bulk_rna/starsolo.py +286 -0
  4. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/chemistry_dict.py +4 -1
  5. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/bulk_rna/base.html +1 -1
  6. celescope-2.3.0.dev2/celescope/templates/html/bulk_rna/cells.html +18 -0
  7. celescope-2.3.0.dev2/celescope/templates/html/utils/table_script/bulk_rna.html +10 -0
  8. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/matrix.py +15 -3
  9. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/split_fastq.py +11 -4
  10. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/utils.py +15 -5
  11. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2/celescope.egg-info}/PKG-INFO +1 -1
  12. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope.egg-info/SOURCES.txt +1 -0
  13. celescope-2.3.0.dev0/celescope/bulk_rna/starsolo.py +0 -135
  14. celescope-2.3.0.dev0/celescope/templates/html/utils/table_script/bulk_rna.html +0 -32
  15. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/LICENSE +0 -0
  16. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/MANIFEST.in +0 -0
  17. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/README.md +0 -0
  18. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_rna/__init__.py +0 -0
  19. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_rna/multi_bulk_rna.py +0 -0
  20. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_vdj/__init__.py +0 -0
  21. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_vdj/consensus.py +0 -0
  22. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_vdj/count_vdj.py +0 -0
  23. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_vdj/mapping_vdj.py +0 -0
  24. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/bulk_vdj/multi_bulk_vdj.py +0 -0
  25. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/__init__.py +0 -0
  26. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/analysis_virus.py +0 -0
  27. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/count.py +0 -0
  28. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/count_virus.py +0 -0
  29. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/featureCounts.py +0 -0
  30. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/filter_virus.py +0 -0
  31. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/mkref.py +0 -0
  32. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/multi_capture_virus.py +0 -0
  33. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/capture_virus/star_virus.py +0 -0
  34. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/celescope.py +0 -0
  35. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/citeseq/__init__.py +0 -0
  36. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/citeseq/analysis_cite.py +0 -0
  37. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/citeseq/count_cite.py +0 -0
  38. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/citeseq/mapping_tag.py +0 -0
  39. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/citeseq/multi_citeseq.py +0 -0
  40. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/Clindex/tag_barcode.fasta +0 -0
  41. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/Clindex/tag_linker.fasta +0 -0
  42. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/HLA/hla_reference_rna.fasta +0 -0
  43. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/__init__.py +0 -0
  44. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-1/bc1.txt +0 -0
  45. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-1/bc2.txt +0 -0
  46. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-1/bc3.txt +0 -0
  47. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-2/bc1.txt +0 -0
  48. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-2/bc2.txt +0 -0
  49. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-2/bc3.txt +0 -0
  50. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-3/bc1.txt +0 -0
  51. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-3/bc2.txt +0 -0
  52. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/5p3p-3/bc3.txt +0 -0
  53. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V1/bc.txt +0 -0
  54. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V1/linker1.txt +0 -0
  55. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V1/linker2.txt +0 -0
  56. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V2/bc1.txt +0 -0
  57. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V2/bc2.txt +0 -0
  58. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V2/bc3.txt +0 -0
  59. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V2/linker1.txt +0 -0
  60. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V2/linker2.txt +0 -0
  61. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V3/bc1.txt +0 -0
  62. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V3/bc2.txt +0 -0
  63. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V3/bc3.txt +0 -0
  64. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V3/linker1.txt +0 -0
  65. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/GEXSCOPE-V3/linker2.txt +0 -0
  66. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/__init__.py +0 -0
  67. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/bulk_rna-V1/bc.txt +0 -0
  68. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/bulk_rna-V2/bc.txt +0 -0
  69. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/bulk_rna-bulk_vdj_match/bc.txt +0 -0
  70. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/bulk_vdj/bc.txt +0 -0
  71. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/bulk_vdj/linker.txt +0 -0
  72. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/flv/bc.txt +0 -0
  73. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/flv/linker +0 -0
  74. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/flv_rna/bc.txt +0 -0
  75. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/chemistry/flv_rna/linker_4types +0 -0
  76. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/fusion/blood_1/BCR_ABL1_PML_RARA_all.fasta +0 -0
  77. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/fusion/blood_1/BCR_ABL1_PML_RARA_all_pos.txt +0 -0
  78. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/fusion/blood_1/mkref.sh +0 -0
  79. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/rRNA/human_ribo.fasta +0 -0
  80. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/snp/panel/CHIP.bed +0 -0
  81. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/snp/panel/blood_1.bed +0 -0
  82. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/snp/panel/lung_1.bed +0 -0
  83. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/sweetseq/sweetseq_barcode.fasta +0 -0
  84. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/data/sweetseq/sweetseq_linker.fasta +0 -0
  85. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/dynaseq/__init__.py +0 -0
  86. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/dynaseq/conversion.py +0 -0
  87. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/dynaseq/multi_dynaseq.py +0 -0
  88. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/dynaseq/replacement.py +0 -0
  89. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/dynaseq/substitution.py +0 -0
  90. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/flv_trust4/__init__.py +0 -0
  91. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/flv_trust4/annotation.py +0 -0
  92. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/flv_trust4/assemble.py +0 -0
  93. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/flv_trust4/mapping.py +0 -0
  94. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/flv_trust4/multi_flv_trust4.py +0 -0
  95. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/flv_trust4/summarize.py +0 -0
  96. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/__init__.py +0 -0
  97. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/analysis_fusion.py +0 -0
  98. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/count_fusion.py +0 -0
  99. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/filter_fusion.py +0 -0
  100. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/mkref.py +0 -0
  101. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/multi_fusion.py +0 -0
  102. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/fusion/star_fusion.py +0 -0
  103. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/hla/__init__.py +0 -0
  104. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/hla/mapping_hla.py +0 -0
  105. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/hla/multi_hla.py +0 -0
  106. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/pathseq/__init__.py +0 -0
  107. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/pathseq/analysis_pathseq.py +0 -0
  108. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/pathseq/count_pathseq.py +0 -0
  109. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/pathseq/multi_pathseq.py +0 -0
  110. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/pathseq/pathseq.py +0 -0
  111. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/pathseq/starsolo.py +0 -0
  112. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna/__init__.py +0 -0
  113. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna/analysis.py +0 -0
  114. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna/mkref.py +0 -0
  115. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna/multi_rna.py +0 -0
  116. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna/star.py +0 -0
  117. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna_5p3p/__init__.py +0 -0
  118. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna_5p3p/convert.py +0 -0
  119. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/rna_5p3p/multi_rna_5p3p.py +0 -0
  120. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/snp/__init__.py +0 -0
  121. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/snp/analysis_snp.py +0 -0
  122. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/snp/filter_snp.py +0 -0
  123. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/snp/mkref.py +0 -0
  124. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/snp/multi_snp.py +0 -0
  125. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/snp/variant_calling.py +0 -0
  126. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/sweetseq/__init__.py +0 -0
  127. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/sweetseq/analysis_tag.py +0 -0
  128. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/sweetseq/count_tag.py +0 -0
  129. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/sweetseq/mapping_tag.py +0 -0
  130. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/sweetseq/multi_sweetseq.py +0 -0
  131. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tag/__init__.py +0 -0
  132. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tag/analysis_tag.py +0 -0
  133. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tag/count_tag.py +0 -0
  134. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tag/mapping_tag.py +0 -0
  135. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tag/multi_tag.py +0 -0
  136. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tag/split_tag.py +0 -0
  137. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/bootstrap.min.css +0 -0
  138. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/buttons.dataTables.min.css +0 -0
  139. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/dataTables.jqueryui.min.css +0 -0
  140. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/config.json +0 -0
  141. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/css/animation.css +0 -0
  142. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/css/fontello-codes.css +0 -0
  143. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/css/fontello-embedded.css +0 -0
  144. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/css/fontello-ie7-codes.css +0 -0
  145. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/css/fontello-ie7.css +0 -0
  146. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/css/fontello.css +0 -0
  147. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/font/fontello.eot +0 -0
  148. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/font/fontello.svg +0 -0
  149. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/font/fontello.ttf +0 -0
  150. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/font/fontello.woff +0 -0
  151. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/fontello-323401c3/font/fontello.woff2 +0 -0
  152. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/jquery-ui-git.css +0 -0
  153. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/jquery-ui.css +0 -0
  154. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/css/jquery.dataTables.css +0 -0
  155. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/bulk_vdj/base.html +0 -0
  156. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/bulk_vdj/count_vdj.html +0 -0
  157. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/capture_rna/base.html +0 -0
  158. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/capture_rna/count_capture_rna_summary.html +0 -0
  159. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/capture_virus/analysis_virus.html +0 -0
  160. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/capture_virus/base.html +0 -0
  161. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/citeseq/analysis_cite.html +0 -0
  162. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/citeseq/base.html +0 -0
  163. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/common/img1.html +0 -0
  164. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/common/logo.html +0 -0
  165. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/dynaseq/base.html +0 -0
  166. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/dynaseq/conversion.html +0 -0
  167. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/dynaseq/replacement.html +0 -0
  168. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/dynaseq/substitution.html +0 -0
  169. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/flv_trust4/annotation.html +0 -0
  170. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/flv_trust4/base.html +0 -0
  171. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/flv_trust4/summarize.html +0 -0
  172. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/fusion/analysis_fusion.html +0 -0
  173. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/fusion/base.html +0 -0
  174. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/hla/base.html +0 -0
  175. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/mut/base.html +0 -0
  176. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/pathseq/analysis_pathseq.html +0 -0
  177. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/pathseq/base.html +0 -0
  178. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna/analysis.html +0 -0
  179. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna/base.html +0 -0
  180. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna/count.html +0 -0
  181. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna/star.html +0 -0
  182. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna_5p3p/base.html +0 -0
  183. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna_virus/analysis_rna_virus_summary.html +0 -0
  184. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/rna_virus/base.html +0 -0
  185. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/snp/analysis_snp.html +0 -0
  186. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/snp/base.html +0 -0
  187. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/sweetseq/analysis_tag.html +0 -0
  188. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/sweetseq/base.html +0 -0
  189. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/tag/analysis_tag.html +0 -0
  190. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/tag/base.html +0 -0
  191. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/tcr_fl/analysis_tag_summary.html +0 -0
  192. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/tcr_fl/base.html +0 -0
  193. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/tcr_fl/count_tag_summary.html +0 -0
  194. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/tcr_fl/mapping_tag_summary.html +0 -0
  195. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/analysis.html +0 -0
  196. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/col1_metrics.html +0 -0
  197. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/col2_metrics.html +0 -0
  198. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/end.html +0 -0
  199. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/head.html +0 -0
  200. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/help_info.html +0 -0
  201. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/preprocessing.html +0 -0
  202. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/start.html +0 -0
  203. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/step.html +0 -0
  204. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_dict.html +0 -0
  205. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_script/bulk_vdj.html +0 -0
  206. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_script/dynaseq.html +0 -0
  207. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_script/pathseq.html +0 -0
  208. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_script/rna.html +0 -0
  209. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_script/snp.html +0 -0
  210. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/utils/table_script/vdj.html +0 -0
  211. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/vdj/base.html +0 -0
  212. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/html/vdj/count_vdj.html +0 -0
  213. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/img/img1.png +0 -0
  214. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/img/logo2.png +0 -0
  215. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/bootstrap.min.js +0 -0
  216. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/buttons.flash.min.js +0 -0
  217. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/buttons.html5.min.js +0 -0
  218. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/buttons.print.min.js +0 -0
  219. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/dataTables.buttons.min.js +0 -0
  220. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/dataTables.jqueryui.min.js +0 -0
  221. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/jquery.dataTables.js +0 -0
  222. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/jquery.dataTables.min.js +0 -0
  223. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/jquery.min.3.3.1.js +0 -0
  224. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/jquery.min.js +0 -0
  225. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/jszip.min.js +0 -0
  226. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/templates/js/plotly-2.12.1.min.js +0 -0
  227. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/__init__.py +0 -0
  228. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/analysis_wrapper.py +0 -0
  229. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/barcode.py +0 -0
  230. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/capture/__init__.py +0 -0
  231. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/capture/analysis.py +0 -0
  232. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/capture/count_bam.py +0 -0
  233. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/capture/filter.py +0 -0
  234. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/capture/threshold.py +0 -0
  235. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/cells.py +0 -0
  236. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/consensus.py +0 -0
  237. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/count.py +0 -0
  238. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/cutadapt.py +0 -0
  239. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/debug.py +0 -0
  240. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/emptydrop_cr/__init__.py +0 -0
  241. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/emptydrop_cr/cell_calling_3.py +0 -0
  242. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/emptydrop_cr/get_plot_elements.py +0 -0
  243. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/emptydrop_cr/sgt.py +0 -0
  244. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/emptydrop_cr/stats.py +0 -0
  245. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/featureCounts.py +0 -0
  246. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/make_ref.py +0 -0
  247. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/merge_table.py +0 -0
  248. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/multi.py +0 -0
  249. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/parse_chemistry.py +0 -0
  250. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/plotly_plot.py +0 -0
  251. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/prep.py +0 -0
  252. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/prep_map.py +0 -0
  253. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/reference.py +0 -0
  254. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/report.py +0 -0
  255. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/sample.py +0 -0
  256. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/star_mixin.py +0 -0
  257. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/starsolo.py +0 -0
  258. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/step.py +0 -0
  259. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/tag/__init__.py +0 -0
  260. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/tag/analysis_tag.py +0 -0
  261. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/tag/count_tag.py +0 -0
  262. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/tag/mapping_tag.py +0 -0
  263. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/target_metrics.py +0 -0
  264. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/AddSequenceToCDR3File.pl +0 -0
  265. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/GetFullLengthAssembly.pl +0 -0
  266. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/Immune_marker.json +0 -0
  267. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/barcoderep-filter.py +0 -0
  268. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/IGH.fa +0 -0
  269. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/IGK.fa +0 -0
  270. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/IGL.fa +0 -0
  271. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/IMGT+C.fa +0 -0
  272. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/TRA.fa +0 -0
  273. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/TRB.fa +0 -0
  274. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/human/bcrtcr.fa +0 -0
  275. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/BCR.fa +0 -0
  276. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/IGH.fa +0 -0
  277. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/IGK.fa +0 -0
  278. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/IGL.fa +0 -0
  279. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/IMGT+C.fa +0 -0
  280. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/TCR.fa +0 -0
  281. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/TRA.fa +0 -0
  282. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/TRB.fa +0 -0
  283. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/database/mouse/bcrtcr.fa +0 -0
  284. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/trust-airr.pl +0 -0
  285. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/trust-barcoderep-to-10X.pl +0 -0
  286. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/trust-barcoderep.pl +0 -0
  287. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/trust-cluster.py +0 -0
  288. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/trust-simplerep.pl +0 -0
  289. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/tools/trust4/trust-stats.py +0 -0
  290. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/utils/__init__.py +0 -0
  291. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/utils/mapping_vdj.py +0 -0
  292. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/utils/mkgtf.py +0 -0
  293. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/vdj/__init__.py +0 -0
  294. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/vdj/count_vdj.py +0 -0
  295. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/vdj/mapping_vdj.py +0 -0
  296. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/vdj/mkref.py +0 -0
  297. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope/vdj/multi_vdj.py +0 -0
  298. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope.egg-info/dependency_links.txt +0 -0
  299. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope.egg-info/entry_points.txt +0 -0
  300. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope.egg-info/requires.txt +0 -0
  301. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/celescope.egg-info/top_level.txt +0 -0
  302. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/__init__.py +0 -0
  303. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/add_tag.py +0 -0
  304. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/add_zero_count_genes.py +0 -0
  305. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/extract_read.py +0 -0
  306. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/generate_docs.py +0 -0
  307. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/release_local.py +0 -0
  308. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/scripts/split_fastq.py +0 -0
  309. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/setup.cfg +0 -0
  310. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/setup.py +0 -0
  311. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/__init__.py +0 -0
  312. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/conftest.py +0 -0
  313. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/test_function.py +0 -0
  314. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/test_multi.py +0 -0
  315. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/unittests/__init__.py +0 -0
  316. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/unittests/snp/__init__.py +0 -0
  317. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/unittests/snp/test_snp.py +0 -0
  318. {celescope-2.3.0.dev0 → celescope-2.3.0.dev2}/tests/unittests/snp/test_variant_calling.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: celescope
3
- Version: 2.3.0.dev0
3
+ Version: 2.3.0.dev2
4
4
  Summary: Single Cell Analysis Pipelines
5
5
  Home-page: https://github.com/singleron-RD/CeleScope
6
6
  Author: zhouyiqi
@@ -1,6 +1,6 @@
1
1
  import os
2
2
 
3
- __VERSION__ = "2.3.0dev"
3
+ __VERSION__ = "2.3.0dev2"
4
4
  __version__ = __VERSION__
5
5
 
6
6
  ASSAY_LIST = [
@@ -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": {"pattern": "C12U8"},
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"],
@@ -12,7 +12,7 @@
12
12
 
13
13
  {% if cells_summary is defined%}
14
14
  {% set step_summary = cells_summary %}
15
- {% include "html/rna/count.html" %}
15
+ {% include "html/bulk_rna/cells.html" %}
16
16
  {% endif %}
17
17
 
18
18
 
@@ -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>
@@ -0,0 +1,10 @@
1
+ <script>
2
+ $(document).ready(function () {
3
+ var table_id = {{ step_summary.table_dict['id']|safe }};
4
+ var table = $(table_id).DataTable({
5
+ dom: 'Bfrtip',
6
+ buttons: ['excel']
7
+ });
8
+ table.columns(0).order('asc').draw();
9
+ });
10
+ </script>
@@ -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, bc in zip(gene_index, bc_index):
238
- bc_gene[bc].add(gene)
239
- return {bc: len(bc_gene[bc]) for bc in bc_gene}, total_genes
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.barcodes:
37
+ for barcode, sample in self.barcode_sample.items():
36
38
  self.fh_dict[barcode] = utils.generic_open(
37
- f"{self.out_prefix}_{barcode}.fq.gz", "wt"
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.barcodes:
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 json
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):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: celescope
3
- Version: 2.3.0.dev0
3
+ Version: 2.3.0.dev2
4
4
  Summary: Single Cell Analysis Pipelines
5
5
  Home-page: https://github.com/singleron-RD/CeleScope
6
6
  Author: zhouyiqi
@@ -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