FunVIP 0.3.24__tar.gz → 0.3.24.2__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 (223) hide show
  1. {funvip-0.3.24 → funvip-0.3.24.2}/FunVIP.egg-info/PKG-INFO +1 -1
  2. {funvip-0.3.24 → funvip-0.3.24.2}/PKG-INFO +1 -1
  3. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/main.py +3 -3
  4. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/cluster.py +49 -110
  5. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/ext.py +10 -1
  6. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/hasher.py +32 -1
  7. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/initialize.py +21 -1
  8. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/tree.py +2 -0
  9. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/tree_interpretation.py +3 -0
  10. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/tree_interpretation_pipe.py +42 -15
  11. {funvip-0.3.24 → funvip-0.3.24.2}/pyproject.toml +1 -1
  12. {funvip-0.3.24 → funvip-0.3.24.2}/FunVIP.egg-info/SOURCES.txt +0 -0
  13. {funvip-0.3.24 → funvip-0.3.24.2}/FunVIP.egg-info/dependency_links.txt +0 -0
  14. {funvip-0.3.24 → funvip-0.3.24.2}/FunVIP.egg-info/entry_points.txt +0 -0
  15. {funvip-0.3.24 → funvip-0.3.24.2}/FunVIP.egg-info/requires.txt +0 -0
  16. {funvip-0.3.24 → funvip-0.3.24.2}/FunVIP.egg-info/top_level.txt +0 -0
  17. {funvip-0.3.24 → funvip-0.3.24.2}/LICENSE +0 -0
  18. {funvip-0.3.24 → funvip-0.3.24.2}/MANIFEST.in +0 -0
  19. {funvip-0.3.24 → funvip-0.3.24.2}/README.md +0 -0
  20. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/FunVIP_GUI.py +0 -0
  21. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/__init__.py +0 -0
  22. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/data/Option_manager.xlsx +0 -0
  23. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/data/__init__.py +0 -0
  24. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/data/genus_line.txt +0 -0
  25. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/Uninstall-ncbi-blast-2.12.0+.exe +0 -0
  26. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/blastn.exe +0 -0
  27. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/cleanup-blastdb-volumes.py +0 -0
  28. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/get_species_taxids.sh +0 -0
  29. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/legacy_blast.pl +0 -0
  30. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/makeblastdb.exe +0 -0
  31. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/nghttp2.dll +0 -0
  32. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/update_blastdb.pl +0 -0
  33. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/doc/README.txt +0 -0
  34. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/FastTree_Windows/FastTree.exe +0 -0
  35. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/Documentation/Gblocks_documentation.html +0 -0
  36. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/Gblocks.exe +0 -0
  37. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/cox2.pir +0 -0
  38. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/cytb.pir +0 -0
  39. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/nad3.pir +0 -0
  40. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/nad5.pir +0 -0
  41. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/nad3.pir +0 -0
  42. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/paths +0 -0
  43. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/MAFFT_LICENSE +0 -0
  44. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/MAFFT_Windows.zip +0 -0
  45. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/RAxML_Windows/GPL-3.0.txt +0 -0
  46. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/RAxML_Windows/README +0 -0
  47. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/RAxML_Windows/raxmlHPC-PTHREADS-AVX2.exe +0 -0
  48. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/__init__.py +0 -0
  49. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/bin/iqtree2-click.exe +0 -0
  50. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/bin/iqtree2.exe +0 -0
  51. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/bin/libiomp5md.dll +0 -0
  52. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/example.cf +0 -0
  53. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/example.nex +0 -0
  54. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/example.phy +0 -0
  55. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/models.nex +0 -0
  56. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/LICENSE.md +0 -0
  57. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/README.md +0 -0
  58. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/busybox.exe +0 -0
  59. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/cygbz2-1.dll +0 -0
  60. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/cyggcc_s-seh-1.dll +0 -0
  61. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/cyggomp-1.dll +0 -0
  62. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/cygstdc++-6.dll +0 -0
  63. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/cygwin1.dll +0 -0
  64. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/cygz.dll +0 -0
  65. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/mmseqs.exe +0 -0
  66. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/examples/QUERY.fasta +0 -0
  67. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM10.out +0 -0
  68. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM100.out +0 -0
  69. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM110.out +0 -0
  70. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM120.out +0 -0
  71. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM130.out +0 -0
  72. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM140.out +0 -0
  73. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM150.out +0 -0
  74. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM160.out +0 -0
  75. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM170.out +0 -0
  76. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM180.out +0 -0
  77. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM190.out +0 -0
  78. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM20.out +0 -0
  79. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM30.out +0 -0
  80. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM40.out +0 -0
  81. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM50.out +0 -0
  82. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM60.out +0 -0
  83. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM70.out +0 -0
  84. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM80.out +0 -0
  85. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM90.out +0 -0
  86. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/VTML10.out +0 -0
  87. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/VTML120.out +0 -0
  88. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/VTML160.out +0 -0
  89. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/VTML20.out +0 -0
  90. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/VTML40.out +0 -0
  91. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/VTML80.out +0 -0
  92. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum100.out +0 -0
  93. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum30.out +0 -0
  94. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum35.out +0 -0
  95. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum40.out +0 -0
  96. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum45.out +0 -0
  97. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum50.out +0 -0
  98. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum55.out +0 -0
  99. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum60.out +0 -0
  100. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum62.out +0 -0
  101. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum65.out +0 -0
  102. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum70.out +0 -0
  103. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum75.out +0 -0
  104. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum80.out +0 -0
  105. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum85.out +0 -0
  106. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum90.out +0 -0
  107. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum95.out +0 -0
  108. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/nucleotide.out +0 -0
  109. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/mmseqs.bat +0 -0
  110. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/util/bash-completion.sh +0 -0
  111. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/AUTHORS +0 -0
  112. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/CHANGELOG +0 -0
  113. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/LICENSE +0 -0
  114. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/README +0 -0
  115. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/bin/libgcc_s_dw2-1.dll +0 -0
  116. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/bin/libstdc++-6.dll +0 -0
  117. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/bin/trimal.exe +0 -0
  118. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/check_codon_alignments.py +0 -0
  119. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/compare_trimmed_msas.sh +0 -0
  120. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/generateRandomAlignmentsUsingAsSeedRealAlignments.py +0 -0
  121. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/generate_trimmed_msas.sh +0 -0
  122. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/get_sequence_representative_from_alignment.py +0 -0
  123. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/get_sequences_gaps_ratio.py +0 -0
  124. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/remove_shorter_sequences.py +0 -0
  125. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/selective_trimming_for_dNdS_analyses.based_neighbours.py +0 -0
  126. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/set_manual_boundaries.py +0 -0
  127. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/alignment.cpp +0 -0
  128. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/alignment.h +0 -0
  129. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/alignment.o +0 -0
  130. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/autAlignment.cpp +0 -0
  131. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/autAlignment.o +0 -0
  132. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/compareFiles.cpp +0 -0
  133. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/compareFiles.h +0 -0
  134. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/compareFiles.o +0 -0
  135. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/defines.h +0 -0
  136. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/main.cpp +0 -0
  137. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/makefile +0 -0
  138. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/makefile.MacOS +0 -0
  139. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/readAl.cpp +0 -0
  140. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/readal.exe +0 -0
  141. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/rwAlignment.cpp +0 -0
  142. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/rwAlignment.o +0 -0
  143. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/sequencesMatrix.cpp +0 -0
  144. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/sequencesMatrix.h +0 -0
  145. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/sequencesMatrix.o +0 -0
  146. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/similarityMatrix.cpp +0 -0
  147. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/similarityMatrix.h +0 -0
  148. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/similarityMatrix.o +0 -0
  149. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statAl.cpp +0 -0
  150. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statal.exe +0 -0
  151. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsConservation.cpp +0 -0
  152. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsConservation.h +0 -0
  153. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsConservation.o +0 -0
  154. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsFiles.cpp +0 -0
  155. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsFiles.h +0 -0
  156. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsGaps.cpp +0 -0
  157. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsGaps.h +0 -0
  158. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsGaps.o +0 -0
  159. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/utils.cpp +0 -0
  160. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/utils.h +0 -0
  161. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/utils.o +0 -0
  162. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/values.h +0 -0
  163. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/preset/.gitignore +0 -0
  164. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/preset/accurate.yaml +0 -0
  165. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/preset/fast.yaml +0 -0
  166. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/.gitignore +0 -0
  167. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__init__.py +0 -0
  168. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/CATV_pipe.cpython-310.pyc +0 -0
  169. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/CAT_V.cpython-310.pyc +0 -0
  170. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/CAT_V.cpython-39.pyc +0 -0
  171. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/CAT_V_pipe.cpython-39.pyc +0 -0
  172. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/__init__.cpython-310.pyc +0 -0
  173. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/__init__.cpython-39.pyc +0 -0
  174. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/align.cpython-310.pyc +0 -0
  175. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/cluster.cpython-39.pyc +0 -0
  176. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/dataset.cpython-39.pyc +0 -0
  177. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/ext.cpython-310.pyc +0 -0
  178. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/ext.cpython-39.pyc +0 -0
  179. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/hasher.cpython-39.pyc +0 -0
  180. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/initialize.cpython-39.pyc +0 -0
  181. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/io.cpython-310.pyc +0 -0
  182. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/io.cpython-39.pyc +0 -0
  183. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/logger.cpython-39.pyc +0 -0
  184. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/modeltest.cpython-39.pyc +0 -0
  185. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/multigene.cpython-39.pyc +0 -0
  186. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/ncbi.cpython-39.pyc +0 -0
  187. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/opt_generator.cpython-39.pyc +0 -0
  188. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/reporter.cpython-39.pyc +0 -0
  189. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/search.cpython-39.pyc +0 -0
  190. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/tool.cpython-39.pyc +0 -0
  191. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/validation.cpython-39.pyc +0 -0
  192. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/visualize.cpython-39.pyc +0 -0
  193. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/align.py +0 -0
  194. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/command.py +0 -0
  195. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/concatenate.py +0 -0
  196. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/dataset.py +0 -0
  197. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/logger.py +0 -0
  198. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/logics.py +0 -0
  199. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/modeltest.py +0 -0
  200. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/ncbi.py +0 -0
  201. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/opt_generator.py +0 -0
  202. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/reporter.py +0 -0
  203. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/save.py +0 -0
  204. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/search.py +0 -0
  205. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/templates/template.html +0 -0
  206. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/tool.py +0 -0
  207. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/trim.py +0 -0
  208. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/validate_input.py +0 -0
  209. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/validate_option.py +0 -0
  210. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/validation.py +0 -0
  211. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/version.py +0 -0
  212. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/visualize.py +0 -0
  213. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/penicillium/DB/DB_Penicillium.xlsx +0 -0
  214. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/penicillium/Options.config +0 -0
  215. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/penicillium/Query/Query.xlsx +0 -0
  216. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/penicillium/preset.yaml +0 -0
  217. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/sanghuangporus/DB/FunVIP_Sanghuangporus_db.xlsx +0 -0
  218. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/sanghuangporus/Query/FunVIP_Sanghuangporus_query.xlsx +0 -0
  219. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/sanghuangporus/preset.yaml +0 -0
  220. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/terrei/DB/FunVIP_Aspergillus_db.xlsx +0 -0
  221. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/terrei/Query/FunVIP_Aspergillus_query.xlsx +0 -0
  222. {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/terrei/preset.yaml +0 -0
  223. {funvip-0.3.24 → funvip-0.3.24.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: FunVIP
3
- Version: 0.3.24
3
+ Version: 0.3.24.2
4
4
  Summary: Fungal Validation & Identification Pipeline
5
5
  Author-email: Changwan Seo <wan101010@snu.ac.kr>
6
6
  License: GPL-3.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: FunVIP
3
- Version: 0.3.24
3
+ Version: 0.3.24.2
4
4
  Summary: Fungal Validation & Identification Pipeline
5
5
  Author-email: Changwan Seo <wan101010@snu.ac.kr>
6
6
  License: GPL-3.0
@@ -52,9 +52,9 @@ def main():
52
52
  # Argument parsing in commandline mode
53
53
  args = CommandParser().get_args()
54
54
 
55
- ############################################################################
56
- # Start of initializing blocks should not be moved for function!!! #
57
- ############################################################################
55
+ #############################################################################
56
+ # Start of initializing blocks should not be moved for function!!! #
57
+ #############################################################################
58
58
 
59
59
  # initialize working directories, and opts
60
60
  opt, path, list_info, list_warning, list_error = initialize.initialize(
@@ -15,6 +15,23 @@ import logging
15
15
  import gc
16
16
  from funvip.src.ext import mmseqs
17
17
 
18
+ import sys
19
+
20
+
21
+ def cluster_unpack(args):
22
+ return cluster(*args)
23
+
24
+
25
+ def batched_generator(generator, batch_size):
26
+ batch = []
27
+ for item in generator:
28
+ batch.append(item)
29
+ if len(batch) == batch_size:
30
+ yield batch
31
+ batch = []
32
+ if batch:
33
+ yield batch
34
+
18
35
 
19
36
  # return list of original group of given FI
20
37
  def get_naive_group(V):
@@ -97,87 +114,6 @@ def assign_gene(result_dict, V, cutoff=0.99):
97
114
  return V
98
115
 
99
116
 
100
- # cluster each of FI object and assign group
101
- """
102
- def cluster(FI, V_list_group, V_cSR, path, opt):
103
- list_group = deepcopy(V_list_group)
104
-
105
- # Reduce search df space by selecting only FI related ones
106
- df_group = V_cSR.groupby(V_cSR["qseqid"])
107
- list_id = list(set(V_cSR["qseqid"]))
108
- df_search = df_group.get_group(FI.hash)
109
-
110
- # If no evidence available, return it
111
- if df_search is None:
112
- # if confident is True, no adjusted_group for db is normal situation
113
- if opt.confident is False and FI.datatype is "db":
114
- logging.warning(f"No adjusted_group assigned to {FI}")
115
- FI.adjusted_group = FI.group
116
- return FI, None
117
-
118
- # for db sequence with group, retain it
119
- elif not (FI.group == "") and FI.datatype == "db": # or type(FI.group) != str):
120
- FI.adjusted_group = FI.group
121
- return FI, FI.adjusted_group
122
-
123
- # update group if sequence does not have group
124
- else:
125
- # sorting has peformed after split for better performance
126
- sorted_df_search = df_search.sort_values(by=["bitscore"], ascending=False)
127
-
128
- # Garbage collection
129
- del df_search
130
- gc.collect()
131
-
132
- # reset index to easily get maximum
133
- sorted_df_search.reset_index(inplace=True, drop=True)
134
- # get result stasifies over cutoff
135
- cutoff_df = sorted_df_search[
136
- sorted_df_search["bitscore"]
137
- > sorted_df_search["bitscore"][0] * opt.cluster.cutoff
138
- ]
139
-
140
- # Garbage collection
141
- del sorted_df_search
142
- gc.collect()
143
-
144
- group_count = len(set(cutoff_df["subject_group"]))
145
- list_group = list(set(cutoff_df["subject_group"]))
146
-
147
- # if first time of group update
148
- if FI.adjusted_group == "":
149
- # if only 1 group available, take it
150
- if group_count == 1:
151
- FI.adjusted_group = list_group[0]
152
- # if no group matched, warn it
153
- elif group_count == 0:
154
- logging.warning(
155
- f"Query seq in {FI.id} cannot be assigned to group. Check sequence"
156
- )
157
- elif group_count >= 2:
158
- logging.warning(
159
- f"Query seq in {FI.id} has multiple matches to group, {list_group}."
160
- )
161
- FI.adjusted_group = list_group[0]
162
- else:
163
- logging.error("DEVELOPMENTAL ERROR IN GROUP ASSIGN")
164
- raise Exception
165
-
166
- logging.info(f"{FI.id} has clustered to {FI.adjusted_group}")
167
-
168
- # if group already updated
169
- else:
170
- if not (FI.adjusted_group == ""):
171
- if not (FI.adjusted_group in list_group):
172
- logging.warning(f"Clustering result colliding in {FI.id}")
173
-
174
- if len(list_group) > 0:
175
- return FI, list_group[0]
176
- else:
177
- return FI, None
178
- """
179
-
180
-
181
117
  def cluster(FI, V_list_group, V_cSR, path, opt):
182
118
  # Reduce memory by focusing on relevant rows
183
119
  df_search = V_cSR[V_cSR["qseqid"] == FI.hash]
@@ -404,7 +340,7 @@ def append_outgroup(V_list_FI, df_search, gene, group, path, opt):
404
340
 
405
341
 
406
342
  def group_cluster_opt_generator(V, opt, path):
407
- opt_cluster = []
343
+ # opt_cluster = []
408
344
 
409
345
  # cluster(FO, df_search, V, path, opt)
410
346
  if len(V.list_qr_gene) == 0:
@@ -415,22 +351,24 @@ def group_cluster_opt_generator(V, opt, path):
415
351
 
416
352
  # For concatenated analysis
417
353
  else:
418
- # cluster group by concatenated search result
419
- list_id = list(set(V.cSR["qseqid"]))
420
-
421
- for FI in V.list_FI:
422
- if FI.hash in list_id:
423
- opt_cluster.append(
424
- (
425
- FI,
426
- V.list_group,
427
- V.cSR[["qseqid", "bitscore", "subject_group"]],
428
- path,
429
- opt,
430
- )
431
- )
432
-
433
- return opt_cluster
354
+ # Use a set for faster membership testing
355
+ set_id = set(V.cSR["qseqid"])
356
+
357
+ # Pre-select the relevant DataFrame slice once
358
+ cSR_subset = V.cSR[["qseqid", "bitscore", "subject_group"]]
359
+
360
+ # Filter `V.list_FI` to relevant entries
361
+ relevant_FIs = (FI for FI in V.list_FI if FI.hash in set_id)
362
+
363
+ # Yield results as a generator
364
+ for FI in relevant_FIs:
365
+ yield (
366
+ FI,
367
+ V.list_group, # Assuming V.list_group is small and static
368
+ cSR_subset, # Pre-selected DataFrame slice
369
+ path,
370
+ opt,
371
+ )
434
372
 
435
373
 
436
374
  # opts ready for multithreading in outgroup append
@@ -468,16 +406,25 @@ def pipe_cluster(V, opt, path):
468
406
  if opt.method.search in ("blast", "mmseqs"):
469
407
  logging.info("group clustering")
470
408
 
409
+ rslt_cluster = []
410
+
471
411
  # cluster opt generation for multiprocessing
472
412
  # (FI, V, path, opt)
473
413
  opt_cluster = group_cluster_opt_generator(V, opt, path)
474
414
 
415
+ # print(f"opt_cluster : {sys.getsizeof(opt_cluster)}")
416
+
417
+ batch_size = opt.thread * 100
418
+ opt_cluster_batches = batched_generator(opt_cluster, batch_size)
419
+
475
420
  # run multiprocessing start
476
421
  if opt.verbose < 3:
477
- p = mp.Pool(opt.thread)
478
- rslt_cluster = p.starmap(cluster, opt_cluster)
479
- p.close()
480
- p.join()
422
+ for batch in opt_cluster_batches:
423
+ batch_list = list(batch)
424
+
425
+ with mp.Pool(opt.thread) as p:
426
+ rslt_cluster.extend(p.starmap(cluster, batch_list))
427
+
481
428
  else:
482
429
  # non-multithreading mode for debugging
483
430
  rslt_cluster = [cluster(*o) for o in opt_cluster]
@@ -581,14 +528,6 @@ def pipe_append_outgroup(V, path, opt):
581
528
  V.dict_dataset[group][gene].list_db_FI += ambiguous_group
582
529
  # Add outgroup and db in to dict_hash_FI
583
530
 
584
- # Should find out why this does not work at the end
585
- """
586
- for FI in outgroup + ambiguous_group:
587
- # If already in dict_hash_FI, they have priority
588
- if not (FI.hash in V.dict_hash_FI):
589
- V.dict_hash_FI[FI.hash] = FI
590
- """
591
-
592
531
  groups = deepcopy(list(V.dict_dataset.keys()))
593
532
 
594
533
  for group in groups:
@@ -310,6 +310,7 @@ def RAxML(
310
310
  bootstrap=100,
311
311
  partition=None,
312
312
  model="-m GTRGAMMA",
313
+ version="old",
313
314
  ):
314
315
  if model == "skip":
315
316
  model = ""
@@ -328,7 +329,15 @@ def RAxML(
328
329
  elif platform == "darwin":
329
330
  CMD = f"raxmlHPC-PTHREADS -s '{fasta}' -n '{out}' -p 1 -T {thread} -f a -# {bootstrap} -x 1 {model}"
330
331
  else:
331
- CMD = f"raxmlHPC-PTHREADS-AVX -s '{fasta}' -n '{out}' -p 1 -T {thread} -f a -# {bootstrap} -x 1 {model}"
332
+ if version == "old":
333
+ CMD = f"raxmlHPC-PTHREADS-AVX -s '{fasta}' -n '{out}' -p 1 -T {thread} -f a -# {bootstrap} -x 1 {model}"
334
+ elif version == "new":
335
+ CMD = f"raxmlHPC-PTHREADS-AVX2 -s '{fasta}' -n '{out}' -p 1 -T {thread} -f a -# {bootstrap} -x 1 {model}"
336
+ else:
337
+ logging.error(
338
+ f"DEVELOPMENTAL ERROR - unexpected RAxML version, {version} in ext.py"
339
+ )
340
+ raise Exception
332
341
 
333
342
  if not (partition is None):
334
343
  CMD += f" -q {partition}"
@@ -22,9 +22,19 @@ def encode(funinfo_list: list, newick: bool = False) -> dict:
22
22
  hash_dict = {}
23
23
 
24
24
  if newick is False:
25
+ return {funinfo.hash: f"{funinfo.id}" for funinfo in funinfo_list}
26
+
27
+ """
25
28
  for funinfo in funinfo_list:
26
29
  hash_dict[funinfo.hash] = f"{funinfo.id}"
30
+ """
27
31
  else:
32
+ return {
33
+ funinfo.hash: f"{funinfo.id}_{funinfo.genus}_{getattr(funinfo, 'species', funinfo.ori_species)}"
34
+ for funinfo in funinfo_list
35
+ }
36
+
37
+ """
28
38
  for funinfo in funinfo_list:
29
39
  try:
30
40
  hash_dict[
@@ -34,11 +44,31 @@ def encode(funinfo_list: list, newick: bool = False) -> dict:
34
44
  hash_dict[
35
45
  funinfo.hash
36
46
  ] = f"{funinfo.id}_{funinfo.genus}_{funinfo.ori_species}"
47
+ """
37
48
 
38
- return hash_dict
49
+ # return hash_dict
39
50
 
40
51
 
41
52
  # Decode given file with given hash_dict
53
+
54
+
55
+ def decode(hash_dict: dict, file: str, out: str, newick: bool = True) -> None:
56
+ with open(file, "rt") as fp:
57
+ content = fp.read()
58
+
59
+ hash_dict = {
60
+ re.escape(k): (newick_legal(v) if newick else v) for k, v in hash_dict.items()
61
+ }
62
+ pattern = re.compile("|".join(hash_dict.keys()))
63
+
64
+ # Perform the substitution
65
+ decoded_content = pattern.sub(lambda m: hash_dict[re.escape(m.group(0))], content)
66
+
67
+ with open(out, "w") as fw:
68
+ fw.write(decoded_content)
69
+
70
+
71
+ """
42
72
  def decode(hash_dict: dict, file: str, out: str, newick: bool = True) -> None:
43
73
  with open(file, "rt") as fp:
44
74
  line = fp.read()
@@ -54,6 +84,7 @@ def decode(hash_dict: dict, file: str, out: str, newick: bool = True) -> None:
54
84
 
55
85
  with open(out, "w") as fw:
56
86
  fw.write(line)
87
+ """
57
88
 
58
89
 
59
90
  # Decode given dataframe with given hash_dict
@@ -139,6 +139,9 @@ def check(
139
139
  # Use print instead of logging here, because logging has not been defined here
140
140
  class Path:
141
141
  def __init__(self, root):
142
+ # For RAxML updates
143
+ self.raxml_version = "old"
144
+
142
145
  # For universal data used in every run
143
146
  self.sys_path = os.path.abspath(f"{os.path.dirname(__file__)}/../")
144
147
 
@@ -174,7 +177,6 @@ class Path:
174
177
  }
175
178
  else:
176
179
  check_commands = {
177
- "RAxML": "raxmlHPC-PTHREADS-AVX -h",
178
180
  "Modeltest-NG": "modeltest-ng --help",
179
181
  "IQTREE": "iqtree -h",
180
182
  "MMseqs2": "mmseqs -h",
@@ -192,6 +194,24 @@ class Path:
192
194
  print(f"[ERROR] {program} not installed!")
193
195
  install_flag = 1
194
196
 
197
+ # For RAxML, there are two versions
198
+ # I don't know why, but apt install RAxML can use raxmlHPC-PTHREADS-AVX,
199
+ # while conda install RAxML can use raxmlHPC -PTHREADS-AVX / raxmlHPC-PTHREADS-AVX2 (blank between raxmlHPC and -PTHREADS-AVX)
200
+ # However, if using 'raxmlHPC -PTHREADS-AVX', the computer cannot utilize full threads
201
+ return_code_1 = subprocess.call(
202
+ "raxmlHPC-PTHREADS-AVX -h", shell=True, stdout=open(os.devnull, "wb")
203
+ )
204
+ return_code_2 = subprocess.call(
205
+ "raxmlHPC-PTHREADS-AVX2 -h", shell=True, stdout=open(os.devnull, "wb")
206
+ )
207
+
208
+ if return_code_1 != 0 and return_code_2 != 0:
209
+ print(f"[ERROR] RAxML not installed!")
210
+ install_flag = 1
211
+
212
+ if return_code_2 == 0:
213
+ self.raxml_version = "new"
214
+
195
215
  if install_flag == 1:
196
216
  if sys.platform == "darwin":
197
217
  print(
@@ -90,6 +90,7 @@ def pipe_tree(V, path, opt, model_dict):
90
90
  thread=opt.thread,
91
91
  bootstrap=opt.bootstrap,
92
92
  model=model_dict[group][gene],
93
+ version=path.raxml_version,
93
94
  )
94
95
 
95
96
  elif opt.method.tree.lower() == "iqtree":
@@ -131,6 +132,7 @@ def pipe_tree(V, path, opt, model_dict):
131
132
  bootstrap=opt.bootstrap,
132
133
  partition=f"{path.out_alignment}/{opt.runname}_{group}.partition",
133
134
  model=model_dict[group][gene],
135
+ version=path.raxml_version,
134
136
  )
135
137
 
136
138
  elif opt.method.tree.lower() == "iqtree":
@@ -640,8 +640,11 @@ class Tree_information:
640
640
  end = n
641
641
  break
642
642
 
643
+ """
643
644
  for n in range(start, end + 1):
644
645
  valid_index.append(n)
646
+ """
647
+ valid_index.extend(range(start, end + 1))
645
648
 
646
649
  previous_index += len_dict[gene]
647
650
 
@@ -19,27 +19,34 @@ def pipe_module_tree_interpretation(
19
19
  out,
20
20
  group,
21
21
  gene,
22
- V,
22
+ V_tup_genus,
23
+ funinfo_dict,
24
+ funinfo_list,
25
+ hash_dict,
26
+ query_list,
27
+ outgroup,
28
+ partition,
23
29
  path,
24
30
  opt,
25
31
  ):
26
32
  # To reduce memory usage in multithreaded performance, copy necessary objects and then remove V
33
+
34
+ """
27
35
  funinfo_dict = V.dict_hash_FI
28
36
  funinfo_list = V.list_FI
29
37
  hash_dict = V.dict_hash_name
30
38
  query_list = V.dict_dataset[group][gene].list_qr_FI
31
39
  outgroup = V.dict_dataset[group][gene].list_og_FI
32
40
  partition = V.partition[group]
41
+ """
33
42
 
34
43
  # for unexpectively included sequence during clustering
35
44
  db_list = list(
36
- set([FI for FI in V.list_FI if FI.datatype == "db"])
45
+ set([FI for FI in funinfo_list if FI.datatype == "db"])
37
46
  - set(outgroup)
38
47
  - set(query_list)
39
48
  )
40
- genus_list = V.tup_genus
41
-
42
- del V
49
+ genus_list = V_tup_genus
43
50
 
44
51
  # For get_genus_species
45
52
  initialize_path(path)
@@ -440,15 +447,18 @@ def synchronize(V, path, tree_info_list):
440
447
  ### Visualization after synchronization
441
448
  def pipe_module_tree_visualization(
442
449
  tree_info,
443
- V,
450
+ V_tup_genus,
451
+ V_dict_hash_FI,
444
452
  path,
445
453
  opt,
446
454
  ):
447
455
  ######### Fix collapse_dict.keys()
456
+ # V.tup_genus
457
+ # V.dict_hash_FI
448
458
 
449
459
  group = tree_info.group
450
460
  gene = tree_info.gene
451
- genus_list = list(V.tup_genus)
461
+ genus_list = list(V_tup_genus)
452
462
  genus_list.append("AMBIGUOUSGENUS")
453
463
  genus_list = tuple(genus_list)
454
464
 
@@ -487,9 +497,9 @@ def pipe_module_tree_visualization(
487
497
  # Get each of the leaf result to report
488
498
  for leaf in collapse_info.leaf_list:
489
499
  report = Singlereport()
490
- report.id = V.dict_hash_FI[leaf[0]].original_id
491
- report.hash = V.dict_hash_FI[leaf[0]].hash
492
- report.update_group(V.dict_hash_FI[leaf[0]].adjusted_group)
500
+ report.id = V_dict_hash_FI[leaf[0]].original_id
501
+ report.hash = V_dict_hash_FI[leaf[0]].hash
502
+ report.update_group(V_dict_hash_FI[leaf[0]].adjusted_group)
493
503
  report.update_group_analysis(group)
494
504
  report.update_gene(gene)
495
505
  report.update_species_original(
@@ -508,9 +518,9 @@ def pipe_module_tree_visualization(
508
518
  for n, collapse_info in enumerate(tree_info.collapse_dict[taxon]):
509
519
  for leaf in collapse_info.leaf_list:
510
520
  report = Singlereport()
511
- report.id = V.dict_hash_FI[leaf[0]].original_id
512
- report.hash = V.dict_hash_FI[leaf[0]].hash
513
- report.update_group(V.dict_hash_FI[leaf[0]].adjusted_group)
521
+ report.id = V_dict_hash_FI[leaf[0]].original_id
522
+ report.hash = V_dict_hash_FI[leaf[0]].hash
523
+ report.update_group(V_dict_hash_FI[leaf[0]].adjusted_group)
514
524
  report.update_group_analysis(group)
515
525
  report.update_gene(gene)
516
526
  report.update_species_original(
@@ -536,8 +546,17 @@ def pipe_tree_interpretation(V, path, opt):
536
546
  for gene in V.dict_hash_FI[key].bygene_species:
537
547
  V.dict_hash_FI[key].bygene_species[gene] = V.dict_hash_FI[key].ori_species
538
548
 
549
+ # common variable preparation
550
+ funinfo_dict = V.dict_hash_FI
551
+ funinfo_list = V.list_FI
552
+ hash_dict = V.dict_hash_name
553
+
554
+ # make option variables
539
555
  for group in V.dict_dataset:
556
+ partition = V.partition[group]
540
557
  for gene in V.dict_dataset[group]:
558
+ query_list = V.dict_dataset[group][gene].list_qr_FI
559
+ outgroup = V.dict_dataset[group][gene].list_og_FI
541
560
  logging.debug(f"pipe_tree_interpretation {group} {gene}")
542
561
  # Condition 1 : draw all trees
543
562
  cond1 = opt.queryonly is False
@@ -566,7 +585,13 @@ def pipe_tree_interpretation(V, path, opt):
566
585
  f"{opt.runname}_{group}_{gene}",
567
586
  group,
568
587
  gene,
569
- V,
588
+ V.tup_genus,
589
+ funinfo_dict,
590
+ funinfo_list,
591
+ hash_dict,
592
+ query_list,
593
+ outgroup,
594
+ partition,
570
595
  path,
571
596
  opt,
572
597
  )
@@ -604,7 +629,9 @@ def pipe_tree_interpretation(V, path, opt):
604
629
  # Generate visualization option to run
605
630
  tree_visualization_opt = []
606
631
  for tree_info in tree_info_list:
607
- tree_visualization_opt.append((tree_info, V, path, opt))
632
+ tree_visualization_opt.append(
633
+ (tree_info, V.tup_genus, V.dict_hash_FI, path, opt)
634
+ )
608
635
 
609
636
  ## Tree visualization
610
637
  if opt.verbose < 3:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "FunVIP"
3
- version = "0.3.24"
3
+ version = "0.3.24.2"
4
4
  description = "Fungal Validation & Identification Pipeline"
5
5
  authors = [{name = "Changwan Seo", email = "wan101010@snu.ac.kr"}]
6
6
  urls = { "Homepage" = "https://github.com/Changwanseo/FunVIP" }
File without changes
File without changes
File without changes
File without changes
File without changes