miga-base 0.7.26.0 → 1.0.0.1

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 (337) hide show
  1. checksums.yaml +4 -4
  2. data/lib/miga/_data/aai-intax.blast.tsv.gz +0 -0
  3. data/lib/miga/_data/aai-intax.diamond.tsv.gz +0 -0
  4. data/lib/miga/_data/aai-novel.blast.tsv.gz +0 -0
  5. data/lib/miga/_data/aai-novel.diamond.tsv.gz +0 -0
  6. data/lib/miga/cli/action/classify_wf.rb +2 -2
  7. data/lib/miga/cli/action/derep_wf.rb +1 -1
  8. data/lib/miga/cli/action/doctor.rb +57 -14
  9. data/lib/miga/cli/action/doctor/base.rb +47 -23
  10. data/lib/miga/cli/action/init.rb +11 -7
  11. data/lib/miga/cli/action/init/files_helper.rb +1 -0
  12. data/lib/miga/cli/action/ncbi_get.rb +3 -3
  13. data/lib/miga/cli/action/tax_dist.rb +2 -2
  14. data/lib/miga/cli/action/wf.rb +5 -4
  15. data/lib/miga/common.rb +1 -0
  16. data/lib/miga/daemon.rb +11 -4
  17. data/lib/miga/dataset/result.rb +10 -6
  18. data/lib/miga/json.rb +5 -4
  19. data/lib/miga/metadata.rb +5 -1
  20. data/lib/miga/parallel.rb +36 -0
  21. data/lib/miga/project.rb +8 -8
  22. data/lib/miga/project/base.rb +4 -4
  23. data/lib/miga/project/result.rb +2 -2
  24. data/lib/miga/sqlite.rb +10 -2
  25. data/lib/miga/version.rb +23 -9
  26. data/scripts/aai_distances.bash +16 -18
  27. data/scripts/ani_distances.bash +16 -17
  28. data/scripts/assembly.bash +31 -16
  29. data/scripts/haai_distances.bash +3 -27
  30. data/scripts/miga.bash +6 -4
  31. data/scripts/p.bash +1 -1
  32. data/scripts/read_quality.bash +9 -18
  33. data/scripts/trimmed_fasta.bash +14 -30
  34. data/scripts/trimmed_reads.bash +36 -36
  35. data/test/parallel_test.rb +31 -0
  36. data/test/project_test.rb +2 -1
  37. data/test/remote_dataset_test.rb +1 -1
  38. data/utils/FastAAI/00.Libraries/01.SCG_HMMs/Archaea_SCG.hmm +41964 -0
  39. data/utils/FastAAI/00.Libraries/01.SCG_HMMs/Bacteria_SCG.hmm +32439 -0
  40. data/utils/FastAAI/00.Libraries/01.SCG_HMMs/Complete_SCG_DB.hmm +62056 -0
  41. data/utils/FastAAI/FastAAI/FastAAI +1336 -0
  42. data/utils/FastAAI/README.md +84 -0
  43. data/utils/FastAAI/kAAI_v1.0_virus.py +1296 -0
  44. data/utils/distance/commands.rb +1 -0
  45. data/utils/distance/database.rb +0 -1
  46. data/utils/distance/runner.rb +2 -4
  47. data/utils/enveomics/Docs/recplot2.md +244 -0
  48. data/utils/enveomics/Examples/aai-matrix.bash +66 -0
  49. data/utils/enveomics/Examples/ani-matrix.bash +66 -0
  50. data/utils/enveomics/Examples/essential-phylogeny.bash +105 -0
  51. data/utils/enveomics/Examples/unus-genome-phylogeny.bash +100 -0
  52. data/utils/enveomics/LICENSE.txt +73 -0
  53. data/utils/enveomics/Makefile +52 -0
  54. data/utils/enveomics/Manifest/Tasks/aasubs.json +103 -0
  55. data/utils/enveomics/Manifest/Tasks/blasttab.json +786 -0
  56. data/utils/enveomics/Manifest/Tasks/distances.json +161 -0
  57. data/utils/enveomics/Manifest/Tasks/fasta.json +802 -0
  58. data/utils/enveomics/Manifest/Tasks/fastq.json +291 -0
  59. data/utils/enveomics/Manifest/Tasks/graphics.json +126 -0
  60. data/utils/enveomics/Manifest/Tasks/mapping.json +137 -0
  61. data/utils/enveomics/Manifest/Tasks/ogs.json +382 -0
  62. data/utils/enveomics/Manifest/Tasks/other.json +906 -0
  63. data/utils/enveomics/Manifest/Tasks/remote.json +355 -0
  64. data/utils/enveomics/Manifest/Tasks/sequence-identity.json +638 -0
  65. data/utils/enveomics/Manifest/Tasks/tables.json +308 -0
  66. data/utils/enveomics/Manifest/Tasks/trees.json +68 -0
  67. data/utils/enveomics/Manifest/Tasks/variants.json +111 -0
  68. data/utils/enveomics/Manifest/categories.json +165 -0
  69. data/utils/enveomics/Manifest/examples.json +154 -0
  70. data/utils/enveomics/Manifest/tasks.json +4 -0
  71. data/utils/enveomics/Pipelines/assembly.pbs/CONFIG.mock.bash +69 -0
  72. data/utils/enveomics/Pipelines/assembly.pbs/FastA.N50.pl +1 -0
  73. data/utils/enveomics/Pipelines/assembly.pbs/FastA.filterN.pl +1 -0
  74. data/utils/enveomics/Pipelines/assembly.pbs/FastA.length.pl +1 -0
  75. data/utils/enveomics/Pipelines/assembly.pbs/README.md +189 -0
  76. data/utils/enveomics/Pipelines/assembly.pbs/RUNME-2.bash +112 -0
  77. data/utils/enveomics/Pipelines/assembly.pbs/RUNME-3.bash +23 -0
  78. data/utils/enveomics/Pipelines/assembly.pbs/RUNME-4.bash +44 -0
  79. data/utils/enveomics/Pipelines/assembly.pbs/RUNME.bash +50 -0
  80. data/utils/enveomics/Pipelines/assembly.pbs/kSelector.R +37 -0
  81. data/utils/enveomics/Pipelines/assembly.pbs/newbler.pbs +68 -0
  82. data/utils/enveomics/Pipelines/assembly.pbs/newbler_preparator.pl +49 -0
  83. data/utils/enveomics/Pipelines/assembly.pbs/soap.pbs +80 -0
  84. data/utils/enveomics/Pipelines/assembly.pbs/stats.pbs +57 -0
  85. data/utils/enveomics/Pipelines/assembly.pbs/velvet.pbs +63 -0
  86. data/utils/enveomics/Pipelines/blast.pbs/01.pbs.bash +38 -0
  87. data/utils/enveomics/Pipelines/blast.pbs/02.pbs.bash +73 -0
  88. data/utils/enveomics/Pipelines/blast.pbs/03.pbs.bash +21 -0
  89. data/utils/enveomics/Pipelines/blast.pbs/BlastTab.recover_job.pl +72 -0
  90. data/utils/enveomics/Pipelines/blast.pbs/CONFIG.mock.bash +98 -0
  91. data/utils/enveomics/Pipelines/blast.pbs/FastA.split.pl +1 -0
  92. data/utils/enveomics/Pipelines/blast.pbs/README.md +127 -0
  93. data/utils/enveomics/Pipelines/blast.pbs/RUNME.bash +109 -0
  94. data/utils/enveomics/Pipelines/blast.pbs/TASK.check.bash +128 -0
  95. data/utils/enveomics/Pipelines/blast.pbs/TASK.dry.bash +16 -0
  96. data/utils/enveomics/Pipelines/blast.pbs/TASK.eo.bash +22 -0
  97. data/utils/enveomics/Pipelines/blast.pbs/TASK.pause.bash +26 -0
  98. data/utils/enveomics/Pipelines/blast.pbs/TASK.run.bash +89 -0
  99. data/utils/enveomics/Pipelines/blast.pbs/sentinel.pbs.bash +29 -0
  100. data/utils/enveomics/Pipelines/idba.pbs/README.md +49 -0
  101. data/utils/enveomics/Pipelines/idba.pbs/RUNME.bash +95 -0
  102. data/utils/enveomics/Pipelines/idba.pbs/run.pbs +56 -0
  103. data/utils/enveomics/Pipelines/trim.pbs/README.md +54 -0
  104. data/utils/enveomics/Pipelines/trim.pbs/RUNME.bash +70 -0
  105. data/utils/enveomics/Pipelines/trim.pbs/run.pbs +130 -0
  106. data/utils/enveomics/README.md +42 -0
  107. data/utils/enveomics/Scripts/AAsubs.log2ratio.rb +171 -0
  108. data/utils/enveomics/Scripts/Aln.cat.rb +221 -0
  109. data/utils/enveomics/Scripts/Aln.convert.pl +35 -0
  110. data/utils/enveomics/Scripts/AlphaDiversity.pl +152 -0
  111. data/utils/enveomics/Scripts/BedGraph.tad.rb +93 -0
  112. data/utils/enveomics/Scripts/BedGraph.window.rb +71 -0
  113. data/utils/enveomics/Scripts/BlastPairwise.AAsubs.pl +102 -0
  114. data/utils/enveomics/Scripts/BlastTab.addlen.rb +63 -0
  115. data/utils/enveomics/Scripts/BlastTab.advance.bash +48 -0
  116. data/utils/enveomics/Scripts/BlastTab.best_hit_sorted.pl +55 -0
  117. data/utils/enveomics/Scripts/BlastTab.catsbj.pl +104 -0
  118. data/utils/enveomics/Scripts/BlastTab.cogCat.rb +76 -0
  119. data/utils/enveomics/Scripts/BlastTab.filter.pl +47 -0
  120. data/utils/enveomics/Scripts/BlastTab.kegg_pep2path_rest.pl +194 -0
  121. data/utils/enveomics/Scripts/BlastTab.metaxaPrep.pl +104 -0
  122. data/utils/enveomics/Scripts/BlastTab.pairedHits.rb +157 -0
  123. data/utils/enveomics/Scripts/BlastTab.recplot2.R +48 -0
  124. data/utils/enveomics/Scripts/BlastTab.seqdepth.pl +86 -0
  125. data/utils/enveomics/Scripts/BlastTab.seqdepth_ZIP.pl +119 -0
  126. data/utils/enveomics/Scripts/BlastTab.seqdepth_nomedian.pl +86 -0
  127. data/utils/enveomics/Scripts/BlastTab.subsample.pl +47 -0
  128. data/utils/enveomics/Scripts/BlastTab.sumPerHit.pl +114 -0
  129. data/utils/enveomics/Scripts/BlastTab.taxid2taxrank.pl +90 -0
  130. data/utils/enveomics/Scripts/BlastTab.topHits_sorted.rb +101 -0
  131. data/utils/enveomics/Scripts/Chao1.pl +97 -0
  132. data/utils/enveomics/Scripts/CharTable.classify.rb +234 -0
  133. data/utils/enveomics/Scripts/EBIseq2tax.rb +83 -0
  134. data/utils/enveomics/Scripts/FastA.N50.pl +60 -0
  135. data/utils/enveomics/Scripts/FastA.extract.rb +152 -0
  136. data/utils/enveomics/Scripts/FastA.filter.pl +52 -0
  137. data/utils/enveomics/Scripts/FastA.filterLen.pl +28 -0
  138. data/utils/enveomics/Scripts/FastA.filterN.pl +60 -0
  139. data/utils/enveomics/Scripts/FastA.fragment.rb +100 -0
  140. data/utils/enveomics/Scripts/FastA.gc.pl +42 -0
  141. data/utils/enveomics/Scripts/FastA.interpose.pl +93 -0
  142. data/utils/enveomics/Scripts/FastA.length.pl +38 -0
  143. data/utils/enveomics/Scripts/FastA.mask.rb +89 -0
  144. data/utils/enveomics/Scripts/FastA.per_file.pl +36 -0
  145. data/utils/enveomics/Scripts/FastA.qlen.pl +57 -0
  146. data/utils/enveomics/Scripts/FastA.rename.pl +65 -0
  147. data/utils/enveomics/Scripts/FastA.revcom.pl +23 -0
  148. data/utils/enveomics/Scripts/FastA.sample.rb +98 -0
  149. data/utils/enveomics/Scripts/FastA.slider.pl +85 -0
  150. data/utils/enveomics/Scripts/FastA.split.pl +55 -0
  151. data/utils/enveomics/Scripts/FastA.split.rb +79 -0
  152. data/utils/enveomics/Scripts/FastA.subsample.pl +131 -0
  153. data/utils/enveomics/Scripts/FastA.tag.rb +65 -0
  154. data/utils/enveomics/Scripts/FastA.toFastQ.rb +69 -0
  155. data/utils/enveomics/Scripts/FastA.wrap.rb +48 -0
  156. data/utils/enveomics/Scripts/FastQ.filter.pl +54 -0
  157. data/utils/enveomics/Scripts/FastQ.interpose.pl +90 -0
  158. data/utils/enveomics/Scripts/FastQ.maskQual.rb +89 -0
  159. data/utils/enveomics/Scripts/FastQ.offset.pl +90 -0
  160. data/utils/enveomics/Scripts/FastQ.split.pl +53 -0
  161. data/utils/enveomics/Scripts/FastQ.tag.rb +70 -0
  162. data/utils/enveomics/Scripts/FastQ.test-error.rb +81 -0
  163. data/utils/enveomics/Scripts/FastQ.toFastA.awk +24 -0
  164. data/utils/enveomics/Scripts/GFF.catsbj.pl +127 -0
  165. data/utils/enveomics/Scripts/GenBank.add_fields.rb +84 -0
  166. data/utils/enveomics/Scripts/HMM.essential.rb +351 -0
  167. data/utils/enveomics/Scripts/HMM.haai.rb +168 -0
  168. data/utils/enveomics/Scripts/HMMsearch.extractIds.rb +83 -0
  169. data/utils/enveomics/Scripts/JPlace.distances.rb +88 -0
  170. data/utils/enveomics/Scripts/JPlace.to_iToL.rb +320 -0
  171. data/utils/enveomics/Scripts/M5nr.getSequences.rb +81 -0
  172. data/utils/enveomics/Scripts/MeTaxa.distribution.pl +198 -0
  173. data/utils/enveomics/Scripts/MyTaxa.fragsByTax.pl +35 -0
  174. data/utils/enveomics/Scripts/MyTaxa.seq-taxrank.rb +49 -0
  175. data/utils/enveomics/Scripts/NCBIacc2tax.rb +92 -0
  176. data/utils/enveomics/Scripts/Newick.autoprune.R +27 -0
  177. data/utils/enveomics/Scripts/RAxML-EPA.to_iToL.pl +228 -0
  178. data/utils/enveomics/Scripts/RecPlot2.compareIdentities.R +32 -0
  179. data/utils/enveomics/Scripts/RefSeq.download.bash +48 -0
  180. data/utils/enveomics/Scripts/SRA.download.bash +55 -0
  181. data/utils/enveomics/Scripts/TRIBS.plot-test.R +36 -0
  182. data/utils/enveomics/Scripts/TRIBS.test.R +39 -0
  183. data/utils/enveomics/Scripts/Table.barplot.R +31 -0
  184. data/utils/enveomics/Scripts/Table.df2dist.R +30 -0
  185. data/utils/enveomics/Scripts/Table.filter.pl +61 -0
  186. data/utils/enveomics/Scripts/Table.merge.pl +77 -0
  187. data/utils/enveomics/Scripts/Table.prefScore.R +60 -0
  188. data/utils/enveomics/Scripts/Table.replace.rb +69 -0
  189. data/utils/enveomics/Scripts/Table.round.rb +63 -0
  190. data/utils/enveomics/Scripts/Table.split.pl +57 -0
  191. data/utils/enveomics/Scripts/Taxonomy.silva2ncbi.rb +227 -0
  192. data/utils/enveomics/Scripts/VCF.KaKs.rb +147 -0
  193. data/utils/enveomics/Scripts/VCF.SNPs.rb +88 -0
  194. data/utils/enveomics/Scripts/aai.rb +419 -0
  195. data/utils/enveomics/Scripts/ani.rb +362 -0
  196. data/utils/enveomics/Scripts/anir.rb +137 -0
  197. data/utils/enveomics/Scripts/clust.rand.rb +102 -0
  198. data/utils/enveomics/Scripts/gi2tax.rb +103 -0
  199. data/utils/enveomics/Scripts/in_silico_GA_GI.pl +96 -0
  200. data/utils/enveomics/Scripts/lib/data/dupont_2012_essential.hmm.gz +0 -0
  201. data/utils/enveomics/Scripts/lib/data/lee_2019_essential.hmm.gz +0 -0
  202. data/utils/enveomics/Scripts/lib/enveomics.R +1 -0
  203. data/utils/enveomics/Scripts/lib/enveomics_rb/anir.rb +293 -0
  204. data/utils/enveomics/Scripts/lib/enveomics_rb/bm_set.rb +175 -0
  205. data/utils/enveomics/Scripts/lib/enveomics_rb/enveomics.rb +24 -0
  206. data/utils/enveomics/Scripts/lib/enveomics_rb/errors.rb +17 -0
  207. data/utils/enveomics/Scripts/lib/enveomics_rb/gmm_em.rb +30 -0
  208. data/utils/enveomics/Scripts/lib/enveomics_rb/jplace.rb +253 -0
  209. data/utils/enveomics/Scripts/lib/enveomics_rb/match.rb +63 -0
  210. data/utils/enveomics/Scripts/lib/enveomics_rb/og.rb +182 -0
  211. data/utils/enveomics/Scripts/lib/enveomics_rb/rbm.rb +49 -0
  212. data/utils/enveomics/Scripts/lib/enveomics_rb/remote_data.rb +74 -0
  213. data/utils/enveomics/Scripts/lib/enveomics_rb/seq_range.rb +237 -0
  214. data/utils/enveomics/Scripts/lib/enveomics_rb/stats.rb +3 -0
  215. data/utils/enveomics/Scripts/lib/enveomics_rb/stats/rand.rb +31 -0
  216. data/utils/enveomics/Scripts/lib/enveomics_rb/stats/sample.rb +152 -0
  217. data/utils/enveomics/Scripts/lib/enveomics_rb/utils.rb +73 -0
  218. data/utils/enveomics/Scripts/lib/enveomics_rb/vcf.rb +135 -0
  219. data/utils/enveomics/Scripts/ogs.annotate.rb +88 -0
  220. data/utils/enveomics/Scripts/ogs.core-pan.rb +160 -0
  221. data/utils/enveomics/Scripts/ogs.extract.rb +125 -0
  222. data/utils/enveomics/Scripts/ogs.mcl.rb +186 -0
  223. data/utils/enveomics/Scripts/ogs.rb +104 -0
  224. data/utils/enveomics/Scripts/ogs.stats.rb +131 -0
  225. data/utils/enveomics/Scripts/rbm-legacy.rb +172 -0
  226. data/utils/enveomics/Scripts/rbm.rb +100 -0
  227. data/utils/enveomics/Scripts/sam.filter.rb +148 -0
  228. data/utils/enveomics/Tests/Makefile +10 -0
  229. data/utils/enveomics/Tests/Mgen_M2288.faa +3189 -0
  230. data/utils/enveomics/Tests/Mgen_M2288.fna +8282 -0
  231. data/utils/enveomics/Tests/Mgen_M2321.fna +8288 -0
  232. data/utils/enveomics/Tests/Nequ_Kin4M.faa +2970 -0
  233. data/utils/enveomics/Tests/Xanthomonas_oryzae-PilA.tribs.Rdata +0 -0
  234. data/utils/enveomics/Tests/Xanthomonas_oryzae-PilA.txt +7 -0
  235. data/utils/enveomics/Tests/Xanthomonas_oryzae.aai-mat.tsv +17 -0
  236. data/utils/enveomics/Tests/Xanthomonas_oryzae.aai.tsv +137 -0
  237. data/utils/enveomics/Tests/a_mg.cds-go.blast.tsv +123 -0
  238. data/utils/enveomics/Tests/a_mg.reads-cds.blast.tsv +200 -0
  239. data/utils/enveomics/Tests/a_mg.reads-cds.counts.tsv +55 -0
  240. data/utils/enveomics/Tests/alkB.nwk +1 -0
  241. data/utils/enveomics/Tests/anthrax-cansnp-data.tsv +13 -0
  242. data/utils/enveomics/Tests/anthrax-cansnp-key.tsv +17 -0
  243. data/utils/enveomics/Tests/hiv1.faa +59 -0
  244. data/utils/enveomics/Tests/hiv1.fna +134 -0
  245. data/utils/enveomics/Tests/hiv2.faa +70 -0
  246. data/utils/enveomics/Tests/hiv_mix-hiv1.blast.tsv +233 -0
  247. data/utils/enveomics/Tests/hiv_mix-hiv1.blast.tsv.lim +1 -0
  248. data/utils/enveomics/Tests/hiv_mix-hiv1.blast.tsv.rec +233 -0
  249. data/utils/enveomics/Tests/phyla_counts.tsv +10 -0
  250. data/utils/enveomics/Tests/primate_lentivirus.ogs +11 -0
  251. data/utils/enveomics/Tests/primate_lentivirus.rbm/hiv1-hiv1.rbm +9 -0
  252. data/utils/enveomics/Tests/primate_lentivirus.rbm/hiv1-hiv2.rbm +8 -0
  253. data/utils/enveomics/Tests/primate_lentivirus.rbm/hiv1-siv.rbm +6 -0
  254. data/utils/enveomics/Tests/primate_lentivirus.rbm/hiv2-hiv2.rbm +9 -0
  255. data/utils/enveomics/Tests/primate_lentivirus.rbm/hiv2-siv.rbm +6 -0
  256. data/utils/enveomics/Tests/primate_lentivirus.rbm/siv-siv.rbm +6 -0
  257. data/utils/enveomics/build_enveomics_r.bash +45 -0
  258. data/utils/enveomics/enveomics.R/DESCRIPTION +31 -0
  259. data/utils/enveomics/enveomics.R/NAMESPACE +39 -0
  260. data/utils/enveomics/enveomics.R/R/autoprune.R +155 -0
  261. data/utils/enveomics/enveomics.R/R/barplot.R +184 -0
  262. data/utils/enveomics/enveomics.R/R/cliopts.R +135 -0
  263. data/utils/enveomics/enveomics.R/R/df2dist.R +154 -0
  264. data/utils/enveomics/enveomics.R/R/growthcurve.R +331 -0
  265. data/utils/enveomics/enveomics.R/R/prefscore.R +79 -0
  266. data/utils/enveomics/enveomics.R/R/recplot.R +354 -0
  267. data/utils/enveomics/enveomics.R/R/recplot2.R +1631 -0
  268. data/utils/enveomics/enveomics.R/R/tribs.R +583 -0
  269. data/utils/enveomics/enveomics.R/R/utils.R +80 -0
  270. data/utils/enveomics/enveomics.R/README.md +81 -0
  271. data/utils/enveomics/enveomics.R/data/growth.curves.rda +0 -0
  272. data/utils/enveomics/enveomics.R/data/phyla.counts.rda +0 -0
  273. data/utils/enveomics/enveomics.R/man/cash-enve.GrowthCurve-method.Rd +16 -0
  274. data/utils/enveomics/enveomics.R/man/cash-enve.RecPlot2-method.Rd +16 -0
  275. data/utils/enveomics/enveomics.R/man/cash-enve.RecPlot2.Peak-method.Rd +16 -0
  276. data/utils/enveomics/enveomics.R/man/enve.GrowthCurve-class.Rd +25 -0
  277. data/utils/enveomics/enveomics.R/man/enve.TRIBS-class.Rd +46 -0
  278. data/utils/enveomics/enveomics.R/man/enve.TRIBS.merge.Rd +23 -0
  279. data/utils/enveomics/enveomics.R/man/enve.TRIBStest-class.Rd +47 -0
  280. data/utils/enveomics/enveomics.R/man/enve.__prune.iter.Rd +23 -0
  281. data/utils/enveomics/enveomics.R/man/enve.__prune.reduce.Rd +23 -0
  282. data/utils/enveomics/enveomics.R/man/enve.__tribs.Rd +40 -0
  283. data/utils/enveomics/enveomics.R/man/enve.barplot.Rd +103 -0
  284. data/utils/enveomics/enveomics.R/man/enve.cliopts.Rd +67 -0
  285. data/utils/enveomics/enveomics.R/man/enve.col.alpha.Rd +24 -0
  286. data/utils/enveomics/enveomics.R/man/enve.col2alpha.Rd +19 -0
  287. data/utils/enveomics/enveomics.R/man/enve.df2dist.Rd +45 -0
  288. data/utils/enveomics/enveomics.R/man/enve.df2dist.group.Rd +44 -0
  289. data/utils/enveomics/enveomics.R/man/enve.df2dist.list.Rd +47 -0
  290. data/utils/enveomics/enveomics.R/man/enve.growthcurve.Rd +75 -0
  291. data/utils/enveomics/enveomics.R/man/enve.prefscore.Rd +50 -0
  292. data/utils/enveomics/enveomics.R/man/enve.prune.dist.Rd +44 -0
  293. data/utils/enveomics/enveomics.R/man/enve.recplot.Rd +139 -0
  294. data/utils/enveomics/enveomics.R/man/enve.recplot2-class.Rd +45 -0
  295. data/utils/enveomics/enveomics.R/man/enve.recplot2.ANIr.Rd +24 -0
  296. data/utils/enveomics/enveomics.R/man/enve.recplot2.Rd +77 -0
  297. data/utils/enveomics/enveomics.R/man/enve.recplot2.__counts.Rd +25 -0
  298. data/utils/enveomics/enveomics.R/man/enve.recplot2.__peakHist.Rd +21 -0
  299. data/utils/enveomics/enveomics.R/man/enve.recplot2.__whichClosestPeak.Rd +19 -0
  300. data/utils/enveomics/enveomics.R/man/enve.recplot2.changeCutoff.Rd +19 -0
  301. data/utils/enveomics/enveomics.R/man/enve.recplot2.compareIdentities.Rd +47 -0
  302. data/utils/enveomics/enveomics.R/man/enve.recplot2.coordinates.Rd +29 -0
  303. data/utils/enveomics/enveomics.R/man/enve.recplot2.corePeak.Rd +18 -0
  304. data/utils/enveomics/enveomics.R/man/enve.recplot2.extractWindows.Rd +45 -0
  305. data/utils/enveomics/enveomics.R/man/enve.recplot2.findPeaks.Rd +36 -0
  306. data/utils/enveomics/enveomics.R/man/enve.recplot2.findPeaks.__em_e.Rd +19 -0
  307. data/utils/enveomics/enveomics.R/man/enve.recplot2.findPeaks.__em_m.Rd +19 -0
  308. data/utils/enveomics/enveomics.R/man/enve.recplot2.findPeaks.__emauto_one.Rd +27 -0
  309. data/utils/enveomics/enveomics.R/man/enve.recplot2.findPeaks.__mow_one.Rd +52 -0
  310. data/utils/enveomics/enveomics.R/man/enve.recplot2.findPeaks.__mower.Rd +17 -0
  311. data/utils/enveomics/enveomics.R/man/enve.recplot2.findPeaks.em.Rd +51 -0
  312. data/utils/enveomics/enveomics.R/man/enve.recplot2.findPeaks.emauto.Rd +43 -0
  313. data/utils/enveomics/enveomics.R/man/enve.recplot2.findPeaks.mower.Rd +82 -0
  314. data/utils/enveomics/enveomics.R/man/enve.recplot2.peak-class.Rd +59 -0
  315. data/utils/enveomics/enveomics.R/man/enve.recplot2.seqdepth.Rd +27 -0
  316. data/utils/enveomics/enveomics.R/man/enve.recplot2.windowDepthThreshold.Rd +36 -0
  317. data/utils/enveomics/enveomics.R/man/enve.selvector.Rd +23 -0
  318. data/utils/enveomics/enveomics.R/man/enve.tribs.Rd +68 -0
  319. data/utils/enveomics/enveomics.R/man/enve.tribs.test.Rd +28 -0
  320. data/utils/enveomics/enveomics.R/man/enve.truncate.Rd +27 -0
  321. data/utils/enveomics/enveomics.R/man/growth.curves.Rd +14 -0
  322. data/utils/enveomics/enveomics.R/man/phyla.counts.Rd +13 -0
  323. data/utils/enveomics/enveomics.R/man/plot.enve.GrowthCurve.Rd +78 -0
  324. data/utils/enveomics/enveomics.R/man/plot.enve.TRIBS.Rd +46 -0
  325. data/utils/enveomics/enveomics.R/man/plot.enve.TRIBStest.Rd +45 -0
  326. data/utils/enveomics/enveomics.R/man/plot.enve.recplot2.Rd +125 -0
  327. data/utils/enveomics/enveomics.R/man/summary.enve.GrowthCurve.Rd +19 -0
  328. data/utils/enveomics/enveomics.R/man/summary.enve.TRIBS.Rd +19 -0
  329. data/utils/enveomics/enveomics.R/man/summary.enve.TRIBStest.Rd +19 -0
  330. data/utils/enveomics/globals.mk +8 -0
  331. data/utils/enveomics/manifest.json +9 -0
  332. data/utils/multitrim/Multitrim How-To.pdf +0 -0
  333. data/utils/multitrim/README.md +67 -0
  334. data/utils/multitrim/multitrim.py +1555 -0
  335. data/utils/multitrim/multitrim.yml +13 -0
  336. data/utils/requirements.txt +4 -3
  337. metadata +304 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dda80476da72166bd5eb6bc22a5ae7afc94285a58afe312633a06115e7336d80
4
- data.tar.gz: 176c5a3c167232bb221b778b2bb3762c6795893171740dbff83b899d68034cd9
3
+ metadata.gz: b4d9aad1ec5368e6cce82c4385a1d40839e948115e7749709a51e9c517d762f0
4
+ data.tar.gz: dc7b6500cbd85a1c50ef92fd41c0436dbbc16273ad245f730f8c2beb684db587
5
5
  SHA512:
6
- metadata.gz: 90b69b23c515e7f8ce2508b5c719856112e2b874876c81bc18767fa5b384d3d6b2e1b819b313f7afbc6d9260ddbaf9b143bd3503c641eed29f1738197837c13b
7
- data.tar.gz: f25b7224d1b37c386e0d4776a40be0a05496bfa9fd9715c59722794e298405280b3043ac26f7cbd5d033090673776b93a7744610aa24fd0bf7331329f0561e64
6
+ metadata.gz: 5973a0b393ff61b1065b74ae36f580be0e80467c8c5b281e82541539b9a97d37b553d82d4d284ec041be72937f7de1274cfa94f2f1c8593a3dcb4c97d3820eff
7
+ data.tar.gz: 60388895b6d864154ff94cd70ae7959f2ac80688a6f46c1d092fc8b08c7597ef3814bdf947bcc05a9832a9a54136c61a4a1970c4aefa3b05d57ad9c6bb670c1d
@@ -50,7 +50,7 @@ class MiGA::Cli::Action::ClassifyWf < MiGA::Cli::Action
50
50
  # Input data
51
51
  ref_db = reference_db
52
52
  norun = %w[
53
- project_stats haai_distances aai_distances ani_distances clade_finding
53
+ haai_distances aai_distances ani_distances clade_finding
54
54
  ]
55
55
  p_metadata = Hash[norun.map { |i| ["run_#{i}", false] }]
56
56
  p = create_project(
@@ -59,7 +59,7 @@ class MiGA::Cli::Action::ClassifyWf < MiGA::Cli::Action
59
59
  run_ssu: false, run_mytaxa_scan: false, run_distances: false
60
60
  )
61
61
  p.set_option(:ref_project, ref_db.path)
62
- p.set_option(:tax_pvalue, cli[:pvalue], true)
62
+ p.set_option(:tax_pvalue, cli[:pvalue])
63
63
  # Run
64
64
  run_daemon
65
65
  summarize(%w[cds assembly essential_genes]) if cli[:summaries]
@@ -52,7 +52,7 @@ class MiGA::Cli::Action::DerepWf < MiGA::Cli::Action
52
52
  # Input data
53
53
  p = create_project(
54
54
  :assembly,
55
- { run_project_stats: false, run_clades: false },
55
+ { run_clades: false },
56
56
  { run_mytaxa_scan: false, run_ssu: false }
57
57
  )
58
58
  p.set_option(:gsp_metric, cli[:metric].to_s)
@@ -93,7 +93,7 @@ class MiGA::Cli::Action::Doctor < MiGA::Cli::Action
93
93
  k += 1
94
94
  cli.advance('Datasets:', k, n, false) if i == 0
95
95
  next unless k % cli[:threads] == i
96
- each_database_file(d) do |db_file, metric, result|
96
+ each_database_file(d) do |db_file, metric, result, _rank|
97
97
  check_sqlite3_database(db_file, metric) do
98
98
  cli.say(
99
99
  " > Removing malformed database from #{d.name}:#{result} "
@@ -116,27 +116,70 @@ class MiGA::Cli::Action::Doctor < MiGA::Cli::Action
116
116
  # Perform bidirectional operation with MiGA::Cli +cli+
117
117
  def check_bidir(cli)
118
118
  cli.say 'Checking if reference distances are bidirectional'
119
- ref_ds = cli.load_project.each_dataset.select(&:ref?)
119
+ project = cli.load_project
120
+ ref_ds = project.each_dataset.select(&:ref?)
120
121
  ref_names = ref_ds.map(&:name)
121
122
  n = ref_ds.size
122
- (0 .. cli[:threads] - 1).map do |i|
123
- Process.fork do
124
- k = 0
125
- ref_ds.each do |d|
126
- k += 1
127
- cli.advance('Datasets:', k, n, false) if i == 0
128
- next unless k % cli[:threads] == i
129
123
 
130
- saved = saved_targets(d)
131
- next if saved.nil?
124
+ # Read data first (threaded)
125
+ tmp = File.join(project.path, 'doctor-bidirectional.tmp')
126
+ FileUtils.mkdir_p(tmp)
127
+ MiGA::Parallel.process(cli[:threads]) do |thr|
128
+ file = File.join(tmp, "#{thr}.json")
129
+ fh = File.open(file, 'w')
130
+ [:aai, :ani].each do |metric|
131
+ fh.puts "# #{metric}"
132
+ ref_ds.each_with_index do |ds, idx|
133
+ if idx % cli[:threads] == thr
134
+ cli.advance('Reading:', idx + 1, n, false) if thr == 0
135
+ row = read_bidirectional(ds, metric)
136
+ fh.puts "#{ds.name} #{JSON.fast_generate(row)}" unless row.empty?
137
+ end
138
+ end
139
+ end
140
+ fh.puts '# end'
141
+ fh.flush # necessary for large threaded runs
142
+ fh.close
143
+ if thr == 0
144
+ cli.advance('Reading:', n, n, false)
145
+ cli.say
146
+ end
147
+ end
132
148
 
133
- (ref_names - saved).each do |k|
134
- save_bidirectional(cli.load_project.dataset(k), d)
149
+ # Merge pieces per thread
150
+ dist = { aai: {}, ani: {} }
151
+ cli[:threads].times do |i|
152
+ cli.advance('Merging:', i + 1, cli[:threads], false)
153
+ file = File.join(tmp, "#{i}.json")
154
+ File.open(file, 'r') do |fh|
155
+ metric = nil
156
+ fh.each do |ln|
157
+ qry, row = ln.chomp.split(' ', 2)
158
+ if qry == '#'
159
+ metric = row.to_sym
160
+ else
161
+ raise "Unrecognized metric: #{metric}" unless dist[metric]
162
+ JSON.parse(row).each do |sbj, val|
163
+ dist[metric][qry] ||= {}
164
+ if dist[metric][sbj]&.include?(qry)
165
+ dist[metric][sbj].delete(qry) # Already bidirectional
166
+ else
167
+ dist[metric][qry][sbj] = val
168
+ end
169
+ end
135
170
  end
136
171
  end
172
+ raise "Incomplete thread dump: #{file}" unless metric == :end
137
173
  end
138
174
  end
139
- Process.waitall
175
+ cli.say
176
+ FileUtils.rm_rf(tmp)
177
+
178
+ # Write missing values (threaded)
179
+ MiGA::Parallel.distribute(ref_ds, cli[:threads]) do |ds, idx, thr|
180
+ cli.advance('Datasets:', idx + 1, n, false) if thr == 0
181
+ save_bidirectional(ds, dist)
182
+ end
140
183
  cli.say
141
184
  end
142
185
 
@@ -16,22 +16,28 @@ module MiGA::Cli::Action::Doctor::Base
16
16
  end
17
17
 
18
18
  def each_database_file(dataset, &blk)
19
- ref_db = { '01.haai' => :aai, '02.aai' => :aai, '03.ani' => :ani }
20
- qry_db = { '.haai.db' => :aai, '.aai.db' => :aai, '.ani.db' => :ani }
19
+ ref_db = {
20
+ haai: ['01.haai', :aai], aai: ['02.aai', :aai], ani: ['03.ani', :ani]
21
+ }
22
+ qry_db = {
23
+ haai: ['.haai.db', :aai], aai: ['.aai.db', :aai], ani: ['.ani.db', :ani]
24
+ }
21
25
  base = File.join(dataset.project.path, 'data', '09.distances')
22
26
  result = :distances
23
27
  if dataset.ref?
24
28
  file_db = "#{dataset.name}.db"
25
- ref_db.each do |dir, metric|
29
+ ref_db.each do |rank, v|
30
+ dir, metric = *v
26
31
  file = File.join(base, dir, file_db)
27
- blk[file, metric, result] if File.exist? file
32
+ blk[file, metric, result, rank] if File.exist? file
28
33
  end
29
34
  base = File.join(base, '05.taxonomy')
30
35
  result = :taxonomy
31
36
  end
32
- qry_db.each do |ext, metric|
37
+ qry_db.each do |rank, v|
38
+ ext, metric = *v
33
39
  file = File.join(base, "#{dataset.name}#{ext}")
34
- blk[file, metric, result] if File.exist? file
40
+ blk[file, metric, result, rank] if File.exist? file
35
41
  end
36
42
  end
37
43
 
@@ -109,25 +115,43 @@ module MiGA::Cli::Action::Doctor::Base
109
115
  end
110
116
 
111
117
  ##
112
- # Saves all the distance estimates in +a+ -> +b+ into the +b+ databases
113
- # (as +b+ -> +a+), where both +a+ and +b+ are MiGA::Dataset objects
114
- def save_bidirectional(a, b)
115
- each_database_file(a) do |db_file, metric, result|
116
- data = nil
117
- data = MiGA::SQLite.new(db_file).run(
118
- "select seq1, seq2, #{metric}, sd, n, omega " +
119
- "from #{metric} where seq2 = ? limit 1", b.name
120
- ).first
121
- next if data.nil? || data.empty?
118
+ # Reads all the distance estimates in +a+ -> * for +metric+ and
119
+ # returns them as a hash +{"b_name" => [val, sd, ...], ...}+
120
+ def read_bidirectional(a, metric)
121
+ db_file = a.result(:distances)&.file_path("#{metric}_db") or return {}
122
+ sql = "select seq2, #{metric}, sd, n, omega from #{metric}"
123
+ data = MiGA::SQLite.new(db_file).run(sql) || []
124
+ Hash[
125
+ data.map do |row|
126
+ k, v = row.shift(2)
127
+ [k, row.all?(&:zero?) ? v : [v] + row]
128
+ end
129
+ ]
130
+ end
122
131
 
123
- db_file_b = File.join(File.dirname(db_file), "#{b.name}.db")
124
- next unless File.exist?(db_file_b)
132
+ ##
133
+ # Saves all the distance estimates in * -> +a+ into the +a+ databases
134
+ # (as +a+ -> *), where +a+ is a MiGA::Dataset object, with currently
135
+ # saved values read from the hash +dist+
136
+ def save_bidirectional(a, dist)
137
+ each_database_file(a) do |db_file, metric, result, rank|
138
+ next if rank == :haai # No need for hAAI to be bidirectional
125
139
 
126
- data[0], data[1] = data[1], data[0]
127
- MiGA::SQLite.new(db_file_b).run(
128
- "insert into #{metric} (seq1, seq2, #{metric}, sd, n, omega) " +
129
- "values(?, ?, ?, ?, ?, ?)", data
130
- )
140
+ b2a = dist[rank].map { |b_name, v| b_name if v[a.name] }.compact
141
+ a2b = dist[rank][a.name]&.keys || []
142
+ SQLite3::Database.new(db_file) do |db|
143
+ sql = <<~SQL
144
+ insert into #{metric}(seq1, seq2, #{metric}, sd, n, omega) \
145
+ values(?, ?, ?, ?, ?, ?);
146
+ SQL
147
+ db.execute('BEGIN TRANSACTION;')
148
+ (b2a - a2b).each do |b_name|
149
+ val = dist[rank][b_name][a.name]
150
+ val = [val, 0, 0, 0] unless val.is_a?(Array)
151
+ db.execute(sql, [a.name, b_name] + val)
152
+ end
153
+ db.execute('COMMIT;')
154
+ end
131
155
  end
132
156
  end
133
157
  end
@@ -112,12 +112,15 @@ class MiGA::Cli::Action::Init < MiGA::Cli::Action
112
112
 
113
113
  def check_software_requirements(rc_fh)
114
114
  cli.puts 'Looking for requirements:'
115
- ask_for_optional(:mytaxa, 'MyTaxa')
116
- rc_fh.puts "export MIGA_MYTAXA='#{cli[:mytaxa] ? 'yes' : 'no'}'"
117
- ask_for_optional(:rdp, 'RDP classifier')
118
- rc_fh.puts "export MIGA_RDP='#{cli[:rdp] ? 'yes' : 'no'}'"
119
- ask_for_optional(:reads, 'read processing')
120
- rc_fh.puts "export MIGA_READS='#{cli[:reads] ? 'yes' : 'no'}'"
115
+ opt_groups = {
116
+ mytaxa: 'MyTaxa',
117
+ rdp: 'RDP classifier',
118
+ reads: 'read processing'
119
+ }
120
+ opt_groups.each do |k, v|
121
+ ask_for_optional(k, v)
122
+ rc_fh.puts "export MIGA_#{k.to_s.upcase}='#{cli[k] ? 'yes' : 'no'}'"
123
+ end
121
124
  paths = {}
122
125
  rc_fh.puts 'MIGA_PATH=""'
123
126
  req_path = File.expand_path('utils/requirements.txt', MiGA.root_path)
@@ -196,8 +199,9 @@ class MiGA::Cli::Action::Init < MiGA::Cli::Action
196
199
  cli.puts 'yes'
197
200
  else
198
201
  cli.puts 'no, installing'
199
- cli.print '' + install_library(cli, paths, language, library)
202
+ out = install_library(cli, paths, language, library)
200
203
  unless test_library(cli, paths, language, library)
204
+ cli.puts out
201
205
  raise "Cannot install #{language.to_s.capitalize} library: #{library}"
202
206
  end
203
207
  end
@@ -83,6 +83,7 @@ module MiGA::Cli::Action::Init::FilesHelper
83
83
  cli.puts 'yes'
84
84
  elsif File.exist?(mt_db)
85
85
  cli.puts 'yes, sym-linking'
86
+ FileUtils.mkdir_p(miga_db)
86
87
  File.symlink(mt_db, home_db)
87
88
  else
88
89
  cli.puts 'no, downloading'
@@ -18,7 +18,7 @@ class MiGA::Cli::Action::NcbiGet < MiGA::Cli::Action
18
18
  cli.opt_object(opt, [:project])
19
19
  opt.on(
20
20
  '-T', '--taxon STRING',
21
- '(Mandatory unless --reference) Taxon name (e.g., a species binomial)'
21
+ '(Mandatory) Taxon name (e.g., a species binomial)'
22
22
  ) { |v| cli[:taxon] = v }
23
23
  opt.on(
24
24
  '-m', '--metadata STRING',
@@ -137,7 +137,7 @@ class MiGA::Cli::Action::NcbiGet < MiGA::Cli::Action
137
137
  end
138
138
 
139
139
  def sanitize_cli
140
- cli.ensure_par(taxon: '-T') unless cli[:reference]
140
+ cli.ensure_par(taxon: '-T')
141
141
  tasks = %w[reference complete chromosome scaffold contig]
142
142
  unless tasks.any? { |i| cli[i.to_sym] }
143
143
  raise 'No action requested: pick at least one type of genome'
@@ -204,7 +204,7 @@ class MiGA::Cli::Action::NcbiGet < MiGA::Cli::Action
204
204
  'from(GenomeAssemblies).' \
205
205
  'usingschema(/schema/GenomeAssemblies).' \
206
206
  'matching(tab==["Prokaryotes"] and q=="' \
207
- "#{cli[:taxon].tr('"', "'")}\"",
207
+ "#{cli[:taxon]&.tr('"', "'")}\"",
208
208
  fields: 'organism|organism,assembly|assembly,replicons|replicons,' \
209
209
  'level|level,ftp_path_genbank|ftp_path_genbank,' \
210
210
  'release_date|release_date,strain|strain',
@@ -99,13 +99,13 @@ class MiGA::Cli::Action::TaxDist < MiGA::Cli::Action
99
99
  ds_name = []
100
100
  File.open(tab, 'r') do |fh|
101
101
  fh.each_line do |ln|
102
- if ln =~ /^ {#{(rank_i - 1) * 2}}\S+:\S+:/
102
+ if ln =~ /^ {0,#{(rank_i - 1) * 2}}\S+:\S+:/
103
103
  in_rank = nil
104
104
  ds_name = []
105
105
  elsif ln =~ /^ {#{rank_i * 2}}(#{rank}:(\S+)):/
106
106
  in_rank = $2 == '?' ? nil : $1
107
107
  ds_name = []
108
- elsif ln =~ /^ *# (\S+)/ and not in_rank.nil?
108
+ elsif ln =~ /^ *# (\S+)/ && !in_rank.nil?
109
109
  ds_i = $1
110
110
  ds_name << ds_i
111
111
  ds_name.each do |ds_j|
@@ -81,21 +81,22 @@ module MiGA::Cli::Action::Wf
81
81
  cli[:aai_p] = 'blast+'
82
82
  cli[:ani_p] = 'blast+'
83
83
  end
84
- opt.on('--fast', 'Alias to: --aai-p diamond --ani-p fastani') do
84
+ opt.on('--fast', 'Alias to: --aai-p diamond --ani-p fastani (default)') do
85
85
  cli[:aai_p] = 'diamond'
86
86
  cli[:ani_p] = 'fastani'
87
87
  end
88
88
  opt.on(
89
89
  '--haai-p STRING',
90
- 'hAAI search engine. One of: blast+ (default), fastaai, blat, diamond, no'
90
+ 'hAAI search engine. One of: blast+, fastaai, blat, diamond, fastaai, no',
91
+ 'The default is "no" for clade projects and "fastaai" otherwise'
91
92
  ) { |v| cli[:haai_p] = v }
92
93
  opt.on(
93
94
  '--aai-p STRING',
94
- 'AAI search engine. One of: blast+ (default), blat, diamond'
95
+ 'AAI search engine. One of: blast+, blat, diamond (default)'
95
96
  ) { |v| cli[:aai_p] = v }
96
97
  opt.on(
97
98
  '--ani-p STRING',
98
- 'ANI search engine. One of: blast+ (default), blat, fastani'
99
+ 'ANI search engine. One of: blast+, blat, fastani (default)'
99
100
  ) { |v| cli[:ani_p] = v }
100
101
  end
101
102
 
data/lib/miga/common.rb CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  require 'miga/version'
5
5
  require 'miga/json'
6
+ require 'miga/parallel'
6
7
  require 'miga/common/base'
7
8
  require 'miga/common/path'
8
9
  require 'miga/common/format'
data/lib/miga/daemon.rb CHANGED
@@ -73,10 +73,10 @@ class MiGA::Daemon < MiGA::MiGA
73
73
  say 'MiGA:%s launched' % project.name
74
74
  say '-----------------------------------'
75
75
  miga_say "Saving log to: #{output_file}" unless show_log?
76
- queue_maintenance
77
- load_status
78
76
  say 'Configuration options:'
79
77
  say @runopts.to_s
78
+ load_status
79
+ queue_maintenance(true)
80
80
  end
81
81
 
82
82
  ##
@@ -87,6 +87,7 @@ class MiGA::Daemon < MiGA::MiGA
87
87
  check_datasets or check_project
88
88
  if shutdown_when_done? && (jobs_running.size + jobs_to_run.size).zero?
89
89
  say 'Nothing else to do, shutting down'
90
+ exit_cleanup
90
91
  return false
91
92
  end
92
93
  flush!
@@ -102,13 +103,19 @@ class MiGA::Daemon < MiGA::MiGA
102
103
 
103
104
  ##
104
105
  # Queue maintenance tasks as an analysis job
105
- def queue_maintenance
106
- return if bypass_maintenance? || shutdown_when_done?
106
+ def queue_maintenance(force = false)
107
+ return if bypass_maintenance? || (!force && shutdown_when_done?)
107
108
 
108
109
  say 'Queueing maintenance tasks'
109
110
  queue_job(:maintenance)
110
111
  end
111
112
 
113
+ ##
114
+ # Remove temporary files on completion
115
+ def exit_cleanup
116
+ FileUtils.rm_f(File.join(daemon_home, 'status.json'))
117
+ end
118
+
112
119
  ##
113
120
  # Send +msg+ to +say+ as long as +level+ is at most +verbosity+
114
121
  def l_say(level, *msg)
@@ -181,26 +181,30 @@ module MiGA::Dataset::Result
181
181
  add_files_to_ds_result(
182
182
  MiGA::Result.new("#{base}.json"), name,
183
183
  if result_files_exist?(base, '.2.clipped.fastq')
184
- {
185
- pair1: '.1.clipped.fastq',
186
- pair2: '.2.clipped.fastq',
187
- single: '.1.clipped.single.fastq'
188
- }
184
+ { pair1: '.1.clipped.fastq', pair2: '.2.clipped.fastq' }
189
185
  else
190
186
  { single: '.1.clipped.fastq' }
191
187
  end
192
188
  ).tap do |r|
189
+ # Legacy files
193
190
  r.add_file(:trimming_sumary, "#{name}.1.fastq.trimmed.summary.txt")
191
+ r.add_file(:single, "#{name}.1.clipped.single.fastq")
194
192
  end
195
193
  end
196
194
 
197
195
  ##
198
196
  # Add result type +:read_quality+ at +base+ (no +_opts+ supported)
199
197
  def add_result_read_quality(base, _opts)
200
- return nil unless result_files_exist?(base, %w[.solexaqa .fastqc])
198
+ return nil unless
199
+ result_files_exist?(base, %w[.post.1.html]) ||
200
+ result_files_exist?(base, %w[.solexaqa .fastqc])
201
201
 
202
202
  add_files_to_ds_result(
203
203
  MiGA::Result.new("#{base}.json"), name,
204
+ pre_qc_1: '.pre.1.html', pre_qc_2: '.pre.2.html',
205
+ post_qc_1: '.post.1.html', post_qc_2: '.post.2.html',
206
+ adapter_detection: '.adapters.txt',
207
+ # Legacy files
204
208
  solexaqa: '.solexaqa', fastqc: '.fastqc'
205
209
  )
206
210
  end
data/lib/miga/json.rb CHANGED
@@ -1,5 +1,4 @@
1
- # @package MiGA
2
- # @license Artistic-2.0
1
+ # frozen_string_literal: true
3
2
 
4
3
  require 'json'
5
4
 
@@ -45,8 +44,10 @@ class MiGA::Json < MiGA::MiGA
45
44
  raise "Empty descriptor: #{opts[:contents] ? "''" : path}" if cont.empty?
46
45
 
47
46
  # Parse JSON
48
- params = { symbolize_names: opts[:symbolize],
49
- create_additions: opts[:additions] }
47
+ params = {
48
+ symbolize_names: opts[:symbolize],
49
+ create_additions: opts[:additions]
50
+ }
50
51
  y = JSON.parse(cont, params)
51
52
 
52
53
  # Add defaults