FunVIP 0.5.0__tar.gz → 0.5.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 (229) hide show
  1. funvip-0.5.2/FunVIP.egg-info/PKG-INFO +160 -0
  2. {funvip-0.5.0 → funvip-0.5.2}/FunVIP.egg-info/requires.txt +2 -1
  3. funvip-0.5.2/PKG-INFO +160 -0
  4. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/dataset.py +30 -19
  5. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/hasher.py +21 -1
  6. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/search.py +1 -0
  7. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/tree_interpretation.py +0 -1
  8. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/tree_interpretation_pipe.py +1 -1
  9. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/validate_input.py +20 -8
  10. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/visualize.py +7 -1
  11. {funvip-0.5.0 → funvip-0.5.2}/pyproject.toml +8 -2
  12. funvip-0.5.0/FunVIP.egg-info/PKG-INFO +0 -31
  13. funvip-0.5.0/PKG-INFO +0 -31
  14. {funvip-0.5.0 → funvip-0.5.2}/FunVIP.egg-info/SOURCES.txt +0 -0
  15. {funvip-0.5.0 → funvip-0.5.2}/FunVIP.egg-info/dependency_links.txt +0 -0
  16. {funvip-0.5.0 → funvip-0.5.2}/FunVIP.egg-info/entry_points.txt +0 -0
  17. {funvip-0.5.0 → funvip-0.5.2}/FunVIP.egg-info/top_level.txt +0 -0
  18. {funvip-0.5.0 → funvip-0.5.2}/LICENSE +0 -0
  19. {funvip-0.5.0 → funvip-0.5.2}/MANIFEST.in +0 -0
  20. {funvip-0.5.0 → funvip-0.5.2}/README.md +0 -0
  21. {funvip-0.5.0 → funvip-0.5.2}/funvip/FunVIP_GUI.py +0 -0
  22. {funvip-0.5.0 → funvip-0.5.2}/funvip/__init__.py +0 -0
  23. {funvip-0.5.0 → funvip-0.5.2}/funvip/data/Option_manager.xlsx +0 -0
  24. {funvip-0.5.0 → funvip-0.5.2}/funvip/data/__init__.py +0 -0
  25. {funvip-0.5.0 → funvip-0.5.2}/funvip/data/genus_line.txt +0 -0
  26. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/BLAST_Windows/Uninstall-ncbi-blast-2.12.0+.exe +0 -0
  27. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/BLAST_Windows/bin/blastn.exe +0 -0
  28. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/BLAST_Windows/bin/cleanup-blastdb-volumes.py +0 -0
  29. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/BLAST_Windows/bin/get_species_taxids.sh +0 -0
  30. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/BLAST_Windows/bin/legacy_blast.pl +0 -0
  31. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/BLAST_Windows/bin/makeblastdb.exe +0 -0
  32. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/BLAST_Windows/bin/nghttp2.dll +0 -0
  33. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/BLAST_Windows/bin/update_blastdb.pl +0 -0
  34. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/BLAST_Windows/doc/README.txt +0 -0
  35. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/FastTree_Windows/FastTree.exe +0 -0
  36. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/Documentation/Gblocks_documentation.html +0 -0
  37. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/Gblocks.exe +0 -0
  38. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/cox2.pir +0 -0
  39. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/cytb.pir +0 -0
  40. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/nad3.pir +0 -0
  41. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/nad5.pir +0 -0
  42. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/nad3.pir +0 -0
  43. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/paths +0 -0
  44. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/MAFFT_LICENSE +0 -0
  45. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/MAFFT_Windows.zip +0 -0
  46. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/RAxML_Windows/GPL-3.0.txt +0 -0
  47. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/RAxML_Windows/README +0 -0
  48. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/RAxML_Windows/raxmlHPC-PTHREADS-AVX2.exe +0 -0
  49. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/__init__.py +0 -0
  50. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/iqtree/bin/iqtree2-click.exe +0 -0
  51. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/iqtree/bin/iqtree2.exe +0 -0
  52. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/iqtree/bin/libiomp5md.dll +0 -0
  53. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/iqtree/example.cf +0 -0
  54. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/iqtree/example.nex +0 -0
  55. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/iqtree/example.phy +0 -0
  56. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/iqtree/models.nex +0 -0
  57. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/LICENSE.md +0 -0
  58. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/README.md +0 -0
  59. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/bin/busybox.exe +0 -0
  60. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/bin/cygbz2-1.dll +0 -0
  61. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/bin/cyggcc_s-seh-1.dll +0 -0
  62. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/bin/cyggomp-1.dll +0 -0
  63. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/bin/cygstdc++-6.dll +0 -0
  64. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/bin/cygwin1.dll +0 -0
  65. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/bin/cygz.dll +0 -0
  66. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/bin/mmseqs.exe +0 -0
  67. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/examples/QUERY.fasta +0 -0
  68. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM10.out +0 -0
  69. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM100.out +0 -0
  70. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM110.out +0 -0
  71. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM120.out +0 -0
  72. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM130.out +0 -0
  73. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM140.out +0 -0
  74. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM150.out +0 -0
  75. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM160.out +0 -0
  76. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM170.out +0 -0
  77. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM180.out +0 -0
  78. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM190.out +0 -0
  79. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM20.out +0 -0
  80. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM30.out +0 -0
  81. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM40.out +0 -0
  82. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM50.out +0 -0
  83. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM60.out +0 -0
  84. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM70.out +0 -0
  85. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM80.out +0 -0
  86. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/PAM90.out +0 -0
  87. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/VTML10.out +0 -0
  88. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/VTML120.out +0 -0
  89. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/VTML160.out +0 -0
  90. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/VTML20.out +0 -0
  91. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/VTML40.out +0 -0
  92. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/VTML80.out +0 -0
  93. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum100.out +0 -0
  94. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum30.out +0 -0
  95. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum35.out +0 -0
  96. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum40.out +0 -0
  97. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum45.out +0 -0
  98. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum50.out +0 -0
  99. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum55.out +0 -0
  100. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum60.out +0 -0
  101. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum62.out +0 -0
  102. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum65.out +0 -0
  103. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum70.out +0 -0
  104. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum75.out +0 -0
  105. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum80.out +0 -0
  106. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum85.out +0 -0
  107. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum90.out +0 -0
  108. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/blosum95.out +0 -0
  109. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/matrices/nucleotide.out +0 -0
  110. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/mmseqs.bat +0 -0
  111. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/mmseqs_Windows/util/bash-completion.sh +0 -0
  112. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/modeltest-ng_Windows/cyggcc_s-seh-1.dll +0 -0
  113. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/modeltest-ng_Windows/cygstdc++-6.dll +0 -0
  114. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/modeltest-ng_Windows/cygwin1.dll +0 -0
  115. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/modeltest-ng_Windows/modeltest-ng.exe +0 -0
  116. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/AUTHORS +0 -0
  117. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/CHANGELOG +0 -0
  118. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/LICENSE +0 -0
  119. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/README +0 -0
  120. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/bin/libgcc_s_dw2-1.dll +0 -0
  121. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/bin/libstdc++-6.dll +0 -0
  122. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/bin/trimal.exe +0 -0
  123. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/scripts/check_codon_alignments.py +0 -0
  124. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/scripts/compare_trimmed_msas.sh +0 -0
  125. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/scripts/generateRandomAlignmentsUsingAsSeedRealAlignments.py +0 -0
  126. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/scripts/generate_trimmed_msas.sh +0 -0
  127. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/scripts/get_sequence_representative_from_alignment.py +0 -0
  128. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/scripts/get_sequences_gaps_ratio.py +0 -0
  129. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/scripts/remove_shorter_sequences.py +0 -0
  130. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/scripts/selective_trimming_for_dNdS_analyses.based_neighbours.py +0 -0
  131. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/scripts/set_manual_boundaries.py +0 -0
  132. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/alignment.cpp +0 -0
  133. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/alignment.h +0 -0
  134. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/alignment.o +0 -0
  135. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/autAlignment.cpp +0 -0
  136. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/autAlignment.o +0 -0
  137. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/compareFiles.cpp +0 -0
  138. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/compareFiles.h +0 -0
  139. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/compareFiles.o +0 -0
  140. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/defines.h +0 -0
  141. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/main.cpp +0 -0
  142. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/makefile +0 -0
  143. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/makefile.MacOS +0 -0
  144. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/readAl.cpp +0 -0
  145. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/readal.exe +0 -0
  146. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/rwAlignment.cpp +0 -0
  147. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/rwAlignment.o +0 -0
  148. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/sequencesMatrix.cpp +0 -0
  149. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/sequencesMatrix.h +0 -0
  150. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/sequencesMatrix.o +0 -0
  151. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/similarityMatrix.cpp +0 -0
  152. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/similarityMatrix.h +0 -0
  153. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/similarityMatrix.o +0 -0
  154. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/statAl.cpp +0 -0
  155. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/statal.exe +0 -0
  156. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsConservation.cpp +0 -0
  157. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsConservation.h +0 -0
  158. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsConservation.o +0 -0
  159. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsFiles.cpp +0 -0
  160. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsFiles.h +0 -0
  161. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsGaps.cpp +0 -0
  162. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsGaps.h +0 -0
  163. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsGaps.o +0 -0
  164. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/utils.cpp +0 -0
  165. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/utils.h +0 -0
  166. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/utils.o +0 -0
  167. {funvip-0.5.0 → funvip-0.5.2}/funvip/external/trimal.v1.4/trimAl/source/values.h +0 -0
  168. {funvip-0.5.0 → funvip-0.5.2}/funvip/main.py +0 -0
  169. {funvip-0.5.0 → funvip-0.5.2}/funvip/preset/.gitignore +0 -0
  170. {funvip-0.5.0 → funvip-0.5.2}/funvip/preset/accurate.yaml +0 -0
  171. {funvip-0.5.0 → funvip-0.5.2}/funvip/preset/fast.yaml +0 -0
  172. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/.gitignore +0 -0
  173. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__init__.py +0 -0
  174. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/CATV_pipe.cpython-310.pyc +0 -0
  175. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/CAT_V.cpython-310.pyc +0 -0
  176. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/CAT_V.cpython-39.pyc +0 -0
  177. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/CAT_V_pipe.cpython-39.pyc +0 -0
  178. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/__init__.cpython-310.pyc +0 -0
  179. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/__init__.cpython-39.pyc +0 -0
  180. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/align.cpython-310.pyc +0 -0
  181. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/cluster.cpython-39.pyc +0 -0
  182. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/dataset.cpython-39.pyc +0 -0
  183. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/ext.cpython-310.pyc +0 -0
  184. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/ext.cpython-39.pyc +0 -0
  185. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/hasher.cpython-39.pyc +0 -0
  186. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/initialize.cpython-39.pyc +0 -0
  187. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/io.cpython-310.pyc +0 -0
  188. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/io.cpython-39.pyc +0 -0
  189. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/logger.cpython-39.pyc +0 -0
  190. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/modeltest.cpython-39.pyc +0 -0
  191. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/multigene.cpython-39.pyc +0 -0
  192. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/ncbi.cpython-39.pyc +0 -0
  193. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/opt_generator.cpython-39.pyc +0 -0
  194. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/reporter.cpython-39.pyc +0 -0
  195. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/search.cpython-39.pyc +0 -0
  196. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/tool.cpython-39.pyc +0 -0
  197. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/validation.cpython-39.pyc +0 -0
  198. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/__pycache__/visualize.cpython-39.pyc +0 -0
  199. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/align.py +0 -0
  200. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/cluster.py +0 -0
  201. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/command.py +0 -0
  202. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/concatenate.py +0 -0
  203. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/ext.py +0 -0
  204. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/initialize.py +0 -0
  205. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/logger.py +0 -0
  206. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/logics.py +0 -0
  207. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/modeltest.py +0 -0
  208. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/ncbi.py +0 -0
  209. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/opt_generator.py +0 -0
  210. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/reporter.py +0 -0
  211. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/save.py +0 -0
  212. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/templates/template.html +0 -0
  213. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/tool.py +0 -0
  214. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/tree.py +0 -0
  215. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/trim.py +0 -0
  216. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/validate_option.py +0 -0
  217. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/validation.py +0 -0
  218. {funvip-0.5.0 → funvip-0.5.2}/funvip/src/version.py +0 -0
  219. {funvip-0.5.0 → funvip-0.5.2}/funvip/test_dataset/penicillium/DB/DB_Penicillium.xlsx +0 -0
  220. {funvip-0.5.0 → funvip-0.5.2}/funvip/test_dataset/penicillium/Options.config +0 -0
  221. {funvip-0.5.0 → funvip-0.5.2}/funvip/test_dataset/penicillium/Query/Query.xlsx +0 -0
  222. {funvip-0.5.0 → funvip-0.5.2}/funvip/test_dataset/penicillium/preset.yaml +0 -0
  223. {funvip-0.5.0 → funvip-0.5.2}/funvip/test_dataset/sanghuangporus/DB/FunVIP_Sanghuangporus_db.xlsx +0 -0
  224. {funvip-0.5.0 → funvip-0.5.2}/funvip/test_dataset/sanghuangporus/Query/FunVIP_Sanghuangporus_query.xlsx +0 -0
  225. {funvip-0.5.0 → funvip-0.5.2}/funvip/test_dataset/sanghuangporus/preset.yaml +0 -0
  226. {funvip-0.5.0 → funvip-0.5.2}/funvip/test_dataset/terrei/DB/FunVIP_Aspergillus_db.xlsx +0 -0
  227. {funvip-0.5.0 → funvip-0.5.2}/funvip/test_dataset/terrei/Query/FunVIP_Aspergillus_query.xlsx +0 -0
  228. {funvip-0.5.0 → funvip-0.5.2}/funvip/test_dataset/terrei/preset.yaml +0 -0
  229. {funvip-0.5.0 → funvip-0.5.2}/setup.cfg +0 -0
@@ -0,0 +1,160 @@
1
+ Metadata-Version: 2.4
2
+ Name: FunVIP
3
+ Version: 0.5.2
4
+ Summary: Fungal Validation & Identification Pipeline
5
+ Author-email: Changwan Seo <wan101010@snu.ac.kr>
6
+ License: GPL-3.0
7
+ Project-URL: Homepage, https://github.com/Changwanseo/FunVIP
8
+ Requires-Python: <3.13,>=3.9
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE
11
+ Requires-Dist: biopython==1.84
12
+ Requires-Dist: ete3==3.1.3
13
+ Requires-Dist: Cython
14
+ Requires-Dist: contourpy<1.3
15
+ Requires-Dist: dendropy
16
+ Requires-Dist: GenMine<1.5.0,>=1.3.0
17
+ Requires-Dist: lxml
18
+ Requires-Dist: matplotlib
19
+ Requires-Dist: numpy<2.0.0
20
+ Requires-Dist: openpyxl==3.1.0
21
+ Requires-Dist: pandas==2.2.2
22
+ Requires-Dist: psutil
23
+ Requires-Dist: pyyaml
24
+ Requires-Dist: sip>=4.19.4
25
+ Requires-Dist: scikit-learn
26
+ Requires-Dist: scipy
27
+ Requires-Dist: tabulate
28
+ Requires-Dist: unidecode==1.2.0
29
+ Requires-Dist: xlrd==2.0.1
30
+ Requires-Dist: xlsxwriter
31
+ Requires-Dist: xmltodict==0.12.0
32
+ Requires-Dist: PyQt5>=5.15.0; sys_platform != "darwin"
33
+ Dynamic: license-file
34
+
35
+
36
+ # FunVIP [![DOI](https://zenodo.org/badge/588465720.svg)](https://zenodo.org/doi/10.5281/zenodo.10714946)
37
+
38
+
39
+ FunVIP is now published please cite:
40
+ #### Seo CW, Yoo S, Cho Y, Kim JS, Steinegger M, Lim YW. FunVIP: Fungal Validation and Identification Pipeline based on phylogenetic analysis. J. Microbiol. 2025;63(4):e2411017.
41
+ <br><br/>
42
+
43
+
44
+
45
+
46
+ ### **Fun**gal **V**alidation & **I**dentification **P**ipeline
47
+ #### An automatic tree-based sequence identification and validation pipeline for fungal (or maybe other) species
48
+
49
+
50
+
51
+ - Automatic tree-based identification
52
+ - Works with multiple genetic marker
53
+ - Database sequence validation algorithm implemented
54
+
55
+ ![figure1 - ver17A](https://github.com/user-attachments/assets/22a50a62-14e8-41a7-87a0-8f5a1f9c3f62)
56
+
57
+ Bug reports are always welcomed
58
+ <br><br/>
59
+
60
+
61
+
62
+ #### IMPORTANT NOTICE: The python dependency for Linux platform has changed from 3.12 to 3.11 for TCS inclusion. Please remake conda environment for FunVIP 0.3.25 update
63
+
64
+ ## Tutorial
65
+ * [Part 1 - Getting started!](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/tutorial.md)
66
+ * [Part 2 - Preparing database and query](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/tutorial2.md)
67
+ * [Advanced tips](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/advanced.md)
68
+ <br><br/>
69
+ ## Documentation
70
+ * See [Documentation](https://github.com/Changwanseo/FunVIP/blob/main/Documentation.md) for advanced usage !
71
+ <br><br/>
72
+ ## Requirements
73
+ - Conda or Mamba environment
74
+
75
+ \* See [here](https://conda.io/projects/conda/en/latest/user-guide/install/index.html) for how to install conda environment
76
+
77
+ \* Recently, Mamba is a lot faster than conda. See [here](https://github.com/conda-forge/miniforge?tab=readme-ov-file) to how to install mamba environment
78
+ <br><br/>
79
+ ## Installation
80
+ * [Windows](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/installation.md##Windows)
81
+ * [Mac - apple silicon](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/installation.md##Apple )
82
+ * [Linux](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/installation.md##Linux)
83
+ * [from source](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/installation.md##Installation)
84
+ <br><br/>
85
+ ## Usage
86
+ ```FunVIP --db {Your database file} --query {Your query file} --email {Your email} --gene {Your genes} --preset {fast or accurate}```
87
+ <br><br/>
88
+ ### Example
89
+ ```FunVIP --db Penicillium.xlsx --query Query.xlsx --email {Your email} --thread 8 --gene ITS BenA RPB2 CaM --preset fast```
90
+
91
+ \* See documentation for detailed usage
92
+ <br><br/>
93
+
94
+
95
+
96
+
97
+
98
+
99
+ ## How to make database?
100
+ ![figure1 - ver17B](https://github.com/user-attachments/assets/0043e6f6-7470-4c2b-bc96-b51f41c43ee4)
101
+
102
+
103
+
104
+
105
+ [See example database here](https://github.com/Changwanseo/FunVIP/blob/main/funvip/test_dataset/penicillium/DB/DB_Penicillium.xlsx)
106
+
107
+
108
+ <!--##
109
+ ## What query formats can be used?
110
+ #### Query formats can be either
111
+ fasta (```.fa```, ```.fna```, ```.fas```, ```.fasta```, ```.txt```) or
112
+ tabular (```.xlsx```, ```.csv```, ```.parquet```, ```.ftr```) form
113
+
114
+ - fasta form : Do not use ambiguous accessions in your fasta name. For example, accessions "A1234" and "A123" can be confused in pipeline. Section and genus name of the sequences will be automatically assigned according to your database. So if you want to fix it, use tabular form
115
+ - tabular form : your table should include ```ID```, and ```{gene names}``` (highly recommended for multigene analysis)-->
116
+
117
+ <!--## Tips for method selection
118
+ * SEARCH_METHOD : blast is faster for smaller dataset, while mmseqs are faster in huge dataset, but consumes a lot of memory
119
+ * ALIGNMENT_METHOD : currently mafft is only available.
120
+ * TRIMMING_METHOD : use trimal or gblocks, in your favor. gblocks usally cuts more, but can be differ by advanced option. Use none if you have enough time and resource for calculation
121
+ * MODEL_METHOD : model method is currently not working good enough please wait
122
+ * TREE_METHOD : fasttree is fastest, but least accurate (However, still a lot accurate than NJ tree). It is treated that iqtree is faster but slightly less accurate than raxml, but iqtree requires at least 1000 bootstrap. So in case of speed, raxml could be a little bit faster when low bootstrap selected-->
123
+
124
+ ## Results
125
+ * ```Section Assignment.xlsx``` : Your clustering result is here. You can find which of your sequences are clustered to which section
126
+ * ```Identification_result.xlsx``` : Your final identification result. Shows how your sequences were assigned to species level through tree-based identification
127
+ * ```report.xlsx``` : overall statistics about the tree. If your find taxon ends with numbers, these taxon are found to be paraphyletic, so should be checked
128
+ * ```/Tree/{section}_{gene}.svg``` : Final collapsed tree in svg format. Can be edited in vector graphics programs, or in powerpoint (by ungroup)
129
+ * ```/Tree/{section}_{gene}_original.svg ``` : Uncollapsed tree for inspection
130
+
131
+ * Example output tree of FunVIP
132
+ ![image](https://github.com/user-attachments/assets/7291c990-62d0-4579-8ae7-adc5d39a7fed)
133
+
134
+
135
+
136
+ ## Scheduling
137
+ 1. ~~Beta release part 1 (2023 Feburary ~ As paper published, ver 0.3)
138
+ Will be tested by our lab memebers to fix bugs and advance features~~
139
+ 2. Beta release part 2 (As paper published ~ When pipeline gets stabled, ver 0.4)
140
+ Will be tested by peer taxonomists
141
+ 3. Stable release (ver 1.0)
142
+
143
+ ## License
144
+ [GPL 3.0](https://github.com/Changwanseo/FunVIP/blob/main/LICENSE)
145
+
146
+
147
+ <!--
148
+ ## Installation with conda (May not work with Linux or Mac)
149
+ 1. ```conda create -n FunVO{ python=3.10```
150
+ 2. ```conda activate FunVIP```
151
+ 3. ```conda install -c cwseo FunVIP```
152
+ 4. run ```FunVIP --test Terrei --email [your email] ``` to check installation
153
+ If this one fails, use next one
154
+ -->
155
+ <!--### GUI mode (\*Currently under development)
156
+ 1. Go to ~/FunID-dev
157
+ 2. ```streamlit run FunID_GUI.py```
158
+ * GUI run is on experimental
159
+ * If you want to edit GUI options, edit ```Option_manager.xlsx``` and variables in ```FunID_GUI.py```
160
+ ### Server mode (\* Currently under development)-->
@@ -1,8 +1,9 @@
1
1
  biopython==1.84
2
2
  ete3==3.1.3
3
3
  Cython
4
+ contourpy<1.3
4
5
  dendropy
5
- GenMine<1.4.0,>=1.3.0
6
+ GenMine<1.5.0,>=1.3.0
6
7
  lxml
7
8
  matplotlib
8
9
  numpy<2.0.0
funvip-0.5.2/PKG-INFO ADDED
@@ -0,0 +1,160 @@
1
+ Metadata-Version: 2.4
2
+ Name: FunVIP
3
+ Version: 0.5.2
4
+ Summary: Fungal Validation & Identification Pipeline
5
+ Author-email: Changwan Seo <wan101010@snu.ac.kr>
6
+ License: GPL-3.0
7
+ Project-URL: Homepage, https://github.com/Changwanseo/FunVIP
8
+ Requires-Python: <3.13,>=3.9
9
+ Description-Content-Type: text/markdown
10
+ License-File: LICENSE
11
+ Requires-Dist: biopython==1.84
12
+ Requires-Dist: ete3==3.1.3
13
+ Requires-Dist: Cython
14
+ Requires-Dist: contourpy<1.3
15
+ Requires-Dist: dendropy
16
+ Requires-Dist: GenMine<1.5.0,>=1.3.0
17
+ Requires-Dist: lxml
18
+ Requires-Dist: matplotlib
19
+ Requires-Dist: numpy<2.0.0
20
+ Requires-Dist: openpyxl==3.1.0
21
+ Requires-Dist: pandas==2.2.2
22
+ Requires-Dist: psutil
23
+ Requires-Dist: pyyaml
24
+ Requires-Dist: sip>=4.19.4
25
+ Requires-Dist: scikit-learn
26
+ Requires-Dist: scipy
27
+ Requires-Dist: tabulate
28
+ Requires-Dist: unidecode==1.2.0
29
+ Requires-Dist: xlrd==2.0.1
30
+ Requires-Dist: xlsxwriter
31
+ Requires-Dist: xmltodict==0.12.0
32
+ Requires-Dist: PyQt5>=5.15.0; sys_platform != "darwin"
33
+ Dynamic: license-file
34
+
35
+
36
+ # FunVIP [![DOI](https://zenodo.org/badge/588465720.svg)](https://zenodo.org/doi/10.5281/zenodo.10714946)
37
+
38
+
39
+ FunVIP is now published please cite:
40
+ #### Seo CW, Yoo S, Cho Y, Kim JS, Steinegger M, Lim YW. FunVIP: Fungal Validation and Identification Pipeline based on phylogenetic analysis. J. Microbiol. 2025;63(4):e2411017.
41
+ <br><br/>
42
+
43
+
44
+
45
+
46
+ ### **Fun**gal **V**alidation & **I**dentification **P**ipeline
47
+ #### An automatic tree-based sequence identification and validation pipeline for fungal (or maybe other) species
48
+
49
+
50
+
51
+ - Automatic tree-based identification
52
+ - Works with multiple genetic marker
53
+ - Database sequence validation algorithm implemented
54
+
55
+ ![figure1 - ver17A](https://github.com/user-attachments/assets/22a50a62-14e8-41a7-87a0-8f5a1f9c3f62)
56
+
57
+ Bug reports are always welcomed
58
+ <br><br/>
59
+
60
+
61
+
62
+ #### IMPORTANT NOTICE: The python dependency for Linux platform has changed from 3.12 to 3.11 for TCS inclusion. Please remake conda environment for FunVIP 0.3.25 update
63
+
64
+ ## Tutorial
65
+ * [Part 1 - Getting started!](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/tutorial.md)
66
+ * [Part 2 - Preparing database and query](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/tutorial2.md)
67
+ * [Advanced tips](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/advanced.md)
68
+ <br><br/>
69
+ ## Documentation
70
+ * See [Documentation](https://github.com/Changwanseo/FunVIP/blob/main/Documentation.md) for advanced usage !
71
+ <br><br/>
72
+ ## Requirements
73
+ - Conda or Mamba environment
74
+
75
+ \* See [here](https://conda.io/projects/conda/en/latest/user-guide/install/index.html) for how to install conda environment
76
+
77
+ \* Recently, Mamba is a lot faster than conda. See [here](https://github.com/conda-forge/miniforge?tab=readme-ov-file) to how to install mamba environment
78
+ <br><br/>
79
+ ## Installation
80
+ * [Windows](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/installation.md##Windows)
81
+ * [Mac - apple silicon](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/installation.md##Apple )
82
+ * [Linux](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/installation.md##Linux)
83
+ * [from source](https://github.com/Changwanseo/FunVIP/blob/main/tutorial/installation.md##Installation)
84
+ <br><br/>
85
+ ## Usage
86
+ ```FunVIP --db {Your database file} --query {Your query file} --email {Your email} --gene {Your genes} --preset {fast or accurate}```
87
+ <br><br/>
88
+ ### Example
89
+ ```FunVIP --db Penicillium.xlsx --query Query.xlsx --email {Your email} --thread 8 --gene ITS BenA RPB2 CaM --preset fast```
90
+
91
+ \* See documentation for detailed usage
92
+ <br><br/>
93
+
94
+
95
+
96
+
97
+
98
+
99
+ ## How to make database?
100
+ ![figure1 - ver17B](https://github.com/user-attachments/assets/0043e6f6-7470-4c2b-bc96-b51f41c43ee4)
101
+
102
+
103
+
104
+
105
+ [See example database here](https://github.com/Changwanseo/FunVIP/blob/main/funvip/test_dataset/penicillium/DB/DB_Penicillium.xlsx)
106
+
107
+
108
+ <!--##
109
+ ## What query formats can be used?
110
+ #### Query formats can be either
111
+ fasta (```.fa```, ```.fna```, ```.fas```, ```.fasta```, ```.txt```) or
112
+ tabular (```.xlsx```, ```.csv```, ```.parquet```, ```.ftr```) form
113
+
114
+ - fasta form : Do not use ambiguous accessions in your fasta name. For example, accessions "A1234" and "A123" can be confused in pipeline. Section and genus name of the sequences will be automatically assigned according to your database. So if you want to fix it, use tabular form
115
+ - tabular form : your table should include ```ID```, and ```{gene names}``` (highly recommended for multigene analysis)-->
116
+
117
+ <!--## Tips for method selection
118
+ * SEARCH_METHOD : blast is faster for smaller dataset, while mmseqs are faster in huge dataset, but consumes a lot of memory
119
+ * ALIGNMENT_METHOD : currently mafft is only available.
120
+ * TRIMMING_METHOD : use trimal or gblocks, in your favor. gblocks usally cuts more, but can be differ by advanced option. Use none if you have enough time and resource for calculation
121
+ * MODEL_METHOD : model method is currently not working good enough please wait
122
+ * TREE_METHOD : fasttree is fastest, but least accurate (However, still a lot accurate than NJ tree). It is treated that iqtree is faster but slightly less accurate than raxml, but iqtree requires at least 1000 bootstrap. So in case of speed, raxml could be a little bit faster when low bootstrap selected-->
123
+
124
+ ## Results
125
+ * ```Section Assignment.xlsx``` : Your clustering result is here. You can find which of your sequences are clustered to which section
126
+ * ```Identification_result.xlsx``` : Your final identification result. Shows how your sequences were assigned to species level through tree-based identification
127
+ * ```report.xlsx``` : overall statistics about the tree. If your find taxon ends with numbers, these taxon are found to be paraphyletic, so should be checked
128
+ * ```/Tree/{section}_{gene}.svg``` : Final collapsed tree in svg format. Can be edited in vector graphics programs, or in powerpoint (by ungroup)
129
+ * ```/Tree/{section}_{gene}_original.svg ``` : Uncollapsed tree for inspection
130
+
131
+ * Example output tree of FunVIP
132
+ ![image](https://github.com/user-attachments/assets/7291c990-62d0-4579-8ae7-adc5d39a7fed)
133
+
134
+
135
+
136
+ ## Scheduling
137
+ 1. ~~Beta release part 1 (2023 Feburary ~ As paper published, ver 0.3)
138
+ Will be tested by our lab memebers to fix bugs and advance features~~
139
+ 2. Beta release part 2 (As paper published ~ When pipeline gets stabled, ver 0.4)
140
+ Will be tested by peer taxonomists
141
+ 3. Stable release (ver 1.0)
142
+
143
+ ## License
144
+ [GPL 3.0](https://github.com/Changwanseo/FunVIP/blob/main/LICENSE)
145
+
146
+
147
+ <!--
148
+ ## Installation with conda (May not work with Linux or Mac)
149
+ 1. ```conda create -n FunVO{ python=3.10```
150
+ 2. ```conda activate FunVIP```
151
+ 3. ```conda install -c cwseo FunVIP```
152
+ 4. run ```FunVIP --test Terrei --email [your email] ``` to check installation
153
+ If this one fails, use next one
154
+ -->
155
+ <!--### GUI mode (\*Currently under development)
156
+ 1. Go to ~/FunID-dev
157
+ 2. ```streamlit run FunID_GUI.py```
158
+ * GUI run is on experimental
159
+ * If you want to edit GUI options, edit ```Option_manager.xlsx``` and variables in ```FunID_GUI.py```
160
+ ### Server mode (\* Currently under development)-->
@@ -554,30 +554,41 @@ class FunVIP_var:
554
554
  critical_flag = 1
555
555
 
556
556
  # Report one non_overlapping pair
557
+ # generate list of sequence pair for easy break
558
+ list_candidates = []
557
559
  for i in range(len(seq_list) - 1):
558
- seq1 = seq_list[i]
559
- seq1_hash = seq1.id
560
- seq1_str = str(seq.seq)
561
-
562
560
  for j in range(i + 1, len(seq_list)):
563
- seq2 = seq_list[j]
564
- seq2_hash = seq2.id
565
- seq2_str = str(seq.seq)
561
+ list_candidates.append((i, j))
566
562
 
567
- has_overlap = False
563
+ for seq_pair in list_candidates:
564
+ has_overlap = False
568
565
 
569
- for k in range(len(seq1_str)):
570
- if seq1_str[k] != "-" and seq2_str[k] != "-":
571
- has_overlap = True
572
- break
566
+ i = seq_pair[0]
567
+ j = seq_pair[1]
573
568
 
574
- seq1_id = self.dict_hash_FI[seq1_hash]
575
- seq2_id = self.dict_hash_FI[seq2_hash]
576
-
577
- logging.critical(
578
- f"At least one pair of sequence does not overlap, such as {seq1_id} and {seq2_id}"
579
- )
580
- critical_flag = 1
569
+ seq1 = seq_list[i]
570
+ seq1_hash = seq1.id
571
+ seq1_str = str(seq1.seq)
572
+
573
+ seq2 = seq_list[j]
574
+ seq2_hash = seq2.id
575
+ seq2_str = str(seq2.seq)
576
+
577
+ for k in range(len(seq1_str)):
578
+ if seq1_str[k] != "-" and seq2_str[k] != "-":
579
+ has_overlap = True
580
+ break
581
+
582
+ # If no overlap, report
583
+ if has_overlap is False:
584
+ seq1_id = self.dict_hash_FI[seq1_hash]
585
+ seq2_id = self.dict_hash_FI[seq2_hash]
586
+
587
+ logging.critical(
588
+ f"At least one pair of sequence does not overlap, such as {seq1_id} and {seq2_id}"
589
+ )
590
+ critical_flag = 1
591
+ break
581
592
 
582
593
  fail_list.append((group, gene))
583
594
  # for tree, use hash dict with genus and species information
@@ -18,6 +18,11 @@ def newick_legal(string: str) -> str:
18
18
  return str(string)
19
19
 
20
20
 
21
+ # Fix "&" sign appropriate for svg
22
+ def svg_legal(string: str) -> str:
23
+ return string.replace("&", "&amp;")
24
+
25
+
21
26
  # Encode funinfo_list and return hash dict
22
27
  def encode(funinfo_list: list, newick: bool = False) -> dict:
23
28
  hash_dict = {}
@@ -53,13 +58,28 @@ def encode(funinfo_list: list, newick: bool = False) -> dict:
53
58
  # Decode given file with given hash_dict
54
59
 
55
60
 
56
- def decode(hash_dict: dict, file: str, out: str, newick: bool = True) -> None:
61
+ def decode(
62
+ hash_dict: dict, file: str, out: str, newick: bool = True, svg: bool = False
63
+ ) -> None:
57
64
  with open(file, "rt") as fp:
58
65
  content = fp.read()
59
66
 
67
+ if newick and svg:
68
+ hash_dict = {
69
+ re.escape(k): svg_legal(newick_legal(v)) for k, v in hash_dict.items()
70
+ }
71
+ elif newick:
72
+ hash_dict = {re.escape(k): newick_legal(v) for k, v in hash_dict.items()}
73
+ elif svg:
74
+ hash_dict = {re.escape(k): svg_legal(v) for k, v in hash_dict.items()}
75
+ else:
76
+ hash_dict = {re.escape(k): v for k, v in hash_dict.items()}
77
+
78
+ """
60
79
  hash_dict = {
61
80
  re.escape(k): (newick_legal(v) if newick else v) for k, v in hash_dict.items()
62
81
  }
82
+ """
63
83
  pattern = re.compile("|".join(hash_dict.keys()))
64
84
 
65
85
  # Perform the substitution
@@ -237,6 +237,7 @@ def search(query_fasta, db_fasta, path, opt) -> pd.DataFrame():
237
237
  f"{path.tmp}/{opt.runname}.m8",
238
238
  sep="\t",
239
239
  header=None,
240
+ quoting=1,
240
241
  names=[
241
242
  "qseqid",
242
243
  "sseqid",
@@ -744,7 +744,6 @@ class Tree_information:
744
744
  # For more than one outgroups, after rerooting, get_common_ancestor of outgroup again
745
745
  # Before rerooting, unroot the tree to work properly
746
746
  if len(outgroup_leaves) >= 2:
747
- print(outgroup_leaves)
748
747
  self.t.unroot()
749
748
  self.outgroup_clade = self.t.get_common_ancestor(outgroup_leaves)
750
749
  self.t.set_outgroup(self.outgroup_clade)
@@ -111,7 +111,7 @@ def pipe_module_tree_interpretation(
111
111
  tree_hash_dict,
112
112
  f"{path.out_tree}/hash_{opt.runname}_{group}_{gene}_original.svg",
113
113
  f"{path.out_tree}/{opt.runname}_{group}_{gene}_original.svg",
114
- newick=True,
114
+ svg=True,
115
115
  )
116
116
 
117
117
  # print(f"Decode {time() - time_start}")
@@ -456,15 +456,27 @@ def input_table(funinfo_dict, path, opt, table_list, datatype):
456
456
  if table.endswith(extension):
457
457
  try:
458
458
  if dict_extension[extension] == "csv":
459
- df = pd.read_csv(
460
- table, sep=",", encoding="UTF-8", keep_default_na=False
461
- )
462
- flag_read_table = 1
459
+ encodings = ["UTF-8", "latin-1", "cp1252"]
460
+ for enc in encodings:
461
+ try:
462
+ df = pd.read_csv(
463
+ table, sep=",", encoding=enc, keep_default_na=False, quoting=1
464
+ )
465
+ flag_read_table = 1
466
+ break
467
+ except UnicodeDecodeError:
468
+ continue
463
469
  elif dict_extension[extension] == "tsv":
464
- df = pd.read_csv(
465
- table, sep="\t", encoding="UTF-8", keep_default_na=False
466
- )
467
- flag_read_table = 1
470
+ encodings = ["UTF-8", "latin-1", "cp1252"]
471
+ for enc in encodings:
472
+ try:
473
+ df = pd.read_csv(
474
+ table, sep="\t", encoding=enc, keep_default_na=False, quoting=1
475
+ )
476
+ flag_read_table = 1
477
+ break
478
+ except UnicodeDecodeError:
479
+ continue
468
480
  elif dict_extension[extension] == "excel":
469
481
  df = pd.read_excel(table)
470
482
  flag_read_table = 1
@@ -104,7 +104,13 @@ def visualize(
104
104
 
105
105
  ## Read result
106
106
  if FunVIP_result.endswith(".csv"):
107
- df = pd.read_csv(FunVIP_result)
107
+ encodings = ["UTF-8", "latin-1", "cp1252"]
108
+ for enc in encodings:
109
+ try:
110
+ df = pd.read_csv(FunVIP_result, encoding=enc, quoting=1)
111
+ break
112
+ except UnicodeDecodeError:
113
+ continue
108
114
  elif FunVIP_result.endswith(".xlsx"):
109
115
  df = pd.read_excel(FunVIP_result)
110
116
  else:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "FunVIP"
3
- version = "0.5.0"
3
+ version = "0.5.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" }
@@ -10,8 +10,9 @@ dependencies = [
10
10
  "biopython==1.84",
11
11
  "ete3==3.1.3",
12
12
  "Cython",
13
+ "contourpy<1.3",
13
14
  "dendropy",
14
- "GenMine>=1.3.0, <1.4.0",
15
+ "GenMine>=1.3.0, <1.5.0",
15
16
  "lxml",
16
17
  "matplotlib",
17
18
  "numpy<2.0.0",
@@ -30,6 +31,10 @@ dependencies = [
30
31
  "PyQt5>=5.15.0; sys_platform!='darwin'",
31
32
  ]
32
33
 
34
+ [project.readme]
35
+ file = "README.md"
36
+ content-type = "text/markdown"
37
+
33
38
  [project.scripts]
34
39
  FunID = "funvip.main:main"
35
40
  FunVIP = "funvip.main:main"
@@ -52,3 +57,4 @@ build-backend = "setuptools_ext"
52
57
  [metadata]
53
58
  obsoletes-dist = "FunID"
54
59
 
60
+
@@ -1,31 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: FunVIP
3
- Version: 0.5.0
4
- Summary: Fungal Validation & Identification Pipeline
5
- Author-email: Changwan Seo <wan101010@snu.ac.kr>
6
- License: GPL-3.0
7
- Project-URL: Homepage, https://github.com/Changwanseo/FunVIP
8
- Requires-Python: <3.13,>=3.9
9
- License-File: LICENSE
10
- Requires-Dist: biopython==1.84
11
- Requires-Dist: ete3==3.1.3
12
- Requires-Dist: Cython
13
- Requires-Dist: dendropy
14
- Requires-Dist: GenMine<1.4.0,>=1.3.0
15
- Requires-Dist: lxml
16
- Requires-Dist: matplotlib
17
- Requires-Dist: numpy<2.0.0
18
- Requires-Dist: openpyxl==3.1.0
19
- Requires-Dist: pandas==2.2.2
20
- Requires-Dist: psutil
21
- Requires-Dist: pyyaml
22
- Requires-Dist: sip>=4.19.4
23
- Requires-Dist: scikit-learn
24
- Requires-Dist: scipy
25
- Requires-Dist: tabulate
26
- Requires-Dist: unidecode==1.2.0
27
- Requires-Dist: xlrd==2.0.1
28
- Requires-Dist: xlsxwriter
29
- Requires-Dist: xmltodict==0.12.0
30
- Requires-Dist: PyQt5>=5.15.0; sys_platform != "darwin"
31
- Dynamic: license-file
funvip-0.5.0/PKG-INFO DELETED
@@ -1,31 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: FunVIP
3
- Version: 0.5.0
4
- Summary: Fungal Validation & Identification Pipeline
5
- Author-email: Changwan Seo <wan101010@snu.ac.kr>
6
- License: GPL-3.0
7
- Project-URL: Homepage, https://github.com/Changwanseo/FunVIP
8
- Requires-Python: <3.13,>=3.9
9
- License-File: LICENSE
10
- Requires-Dist: biopython==1.84
11
- Requires-Dist: ete3==3.1.3
12
- Requires-Dist: Cython
13
- Requires-Dist: dendropy
14
- Requires-Dist: GenMine<1.4.0,>=1.3.0
15
- Requires-Dist: lxml
16
- Requires-Dist: matplotlib
17
- Requires-Dist: numpy<2.0.0
18
- Requires-Dist: openpyxl==3.1.0
19
- Requires-Dist: pandas==2.2.2
20
- Requires-Dist: psutil
21
- Requires-Dist: pyyaml
22
- Requires-Dist: sip>=4.19.4
23
- Requires-Dist: scikit-learn
24
- Requires-Dist: scipy
25
- Requires-Dist: tabulate
26
- Requires-Dist: unidecode==1.2.0
27
- Requires-Dist: xlrd==2.0.1
28
- Requires-Dist: xlsxwriter
29
- Requires-Dist: xmltodict==0.12.0
30
- Requires-Dist: PyQt5>=5.15.0; sys_platform != "darwin"
31
- Dynamic: license-file
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes