FunVIP 0.3.22.2__tar.gz → 0.3.23__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 (219) hide show
  1. {funvip-0.3.22.2 → funvip-0.3.23}/FunVIP.egg-info/PKG-INFO +1 -1
  2. {funvip-0.3.22.2 → funvip-0.3.23}/PKG-INFO +1 -1
  3. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/BLAST_Windows/bin/cleanup-blastdb-volumes.py +162 -162
  4. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/BLAST_Windows/bin/get_species_taxids.sh +152 -152
  5. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/BLAST_Windows/bin/legacy_blast.pl +1359 -1359
  6. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/BLAST_Windows/bin/update_blastdb.pl +1069 -1069
  7. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/tree_interpretation.py +19 -1
  8. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/validate_input.py +951 -951
  9. {funvip-0.3.22.2 → funvip-0.3.23}/pyproject.toml +1 -1
  10. {funvip-0.3.22.2 → funvip-0.3.23}/FunVIP.egg-info/SOURCES.txt +0 -0
  11. {funvip-0.3.22.2 → funvip-0.3.23}/FunVIP.egg-info/dependency_links.txt +0 -0
  12. {funvip-0.3.22.2 → funvip-0.3.23}/FunVIP.egg-info/entry_points.txt +0 -0
  13. {funvip-0.3.22.2 → funvip-0.3.23}/FunVIP.egg-info/requires.txt +0 -0
  14. {funvip-0.3.22.2 → funvip-0.3.23}/FunVIP.egg-info/top_level.txt +0 -0
  15. {funvip-0.3.22.2 → funvip-0.3.23}/LICENSE +0 -0
  16. {funvip-0.3.22.2 → funvip-0.3.23}/MANIFEST.in +0 -0
  17. {funvip-0.3.22.2 → funvip-0.3.23}/README.md +0 -0
  18. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/FunVIP_GUI.py +0 -0
  19. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/__init__.py +0 -0
  20. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/data/Option_manager.xlsx +0 -0
  21. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/data/__init__.py +0 -0
  22. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/data/genus_line.txt +0 -0
  23. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/BLAST_Windows/Uninstall-ncbi-blast-2.12.0+.exe +0 -0
  24. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/BLAST_Windows/bin/blastn.exe +0 -0
  25. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/BLAST_Windows/bin/makeblastdb.exe +0 -0
  26. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/BLAST_Windows/bin/nghttp2.dll +0 -0
  27. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/BLAST_Windows/doc/README.txt +0 -0
  28. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/FastTree_Windows/FastTree.exe +0 -0
  29. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/Documentation/Gblocks_documentation.html +0 -0
  30. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/Gblocks.exe +0 -0
  31. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/cox2.pir +0 -0
  32. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/cytb.pir +0 -0
  33. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/nad3.pir +0 -0
  34. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/nad5.pir +0 -0
  35. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/nad3.pir +0 -0
  36. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/paths +0 -0
  37. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/MAFFT_LICENSE +0 -0
  38. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/MAFFT_Windows.zip +0 -0
  39. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/RAxML_Windows/GPL-3.0.txt +0 -0
  40. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/RAxML_Windows/README +0 -0
  41. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/RAxML_Windows/raxmlHPC-PTHREADS-AVX2.exe +0 -0
  42. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/__init__.py +0 -0
  43. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/iqtree/bin/iqtree2-click.exe +0 -0
  44. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/iqtree/bin/iqtree2.exe +0 -0
  45. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/iqtree/bin/libiomp5md.dll +0 -0
  46. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/iqtree/example.cf +0 -0
  47. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/iqtree/example.nex +0 -0
  48. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/iqtree/example.phy +0 -0
  49. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/iqtree/models.nex +0 -0
  50. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/LICENSE.md +0 -0
  51. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/README.md +0 -0
  52. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/bin/busybox.exe +0 -0
  53. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/bin/cygbz2-1.dll +0 -0
  54. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/bin/cyggcc_s-seh-1.dll +0 -0
  55. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/bin/cyggomp-1.dll +0 -0
  56. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/bin/cygstdc++-6.dll +0 -0
  57. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/bin/cygwin1.dll +0 -0
  58. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/bin/cygz.dll +0 -0
  59. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/bin/mmseqs.exe +0 -0
  60. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/examples/QUERY.fasta +0 -0
  61. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM10.out +0 -0
  62. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM100.out +0 -0
  63. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM110.out +0 -0
  64. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM120.out +0 -0
  65. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM130.out +0 -0
  66. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM140.out +0 -0
  67. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM150.out +0 -0
  68. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM160.out +0 -0
  69. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM170.out +0 -0
  70. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM180.out +0 -0
  71. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM190.out +0 -0
  72. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM20.out +0 -0
  73. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM30.out +0 -0
  74. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM40.out +0 -0
  75. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM50.out +0 -0
  76. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM60.out +0 -0
  77. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM70.out +0 -0
  78. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM80.out +0 -0
  79. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/PAM90.out +0 -0
  80. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/VTML10.out +0 -0
  81. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/VTML120.out +0 -0
  82. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/VTML160.out +0 -0
  83. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/VTML20.out +0 -0
  84. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/VTML40.out +0 -0
  85. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/VTML80.out +0 -0
  86. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum100.out +0 -0
  87. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum30.out +0 -0
  88. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum35.out +0 -0
  89. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum40.out +0 -0
  90. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum45.out +0 -0
  91. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum50.out +0 -0
  92. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum55.out +0 -0
  93. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum60.out +0 -0
  94. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum62.out +0 -0
  95. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum65.out +0 -0
  96. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum70.out +0 -0
  97. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum75.out +0 -0
  98. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum80.out +0 -0
  99. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum85.out +0 -0
  100. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum90.out +0 -0
  101. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/blosum95.out +0 -0
  102. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/matrices/nucleotide.out +0 -0
  103. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/mmseqs.bat +0 -0
  104. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/mmseqs_Windows/util/bash-completion.sh +0 -0
  105. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/AUTHORS +0 -0
  106. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/CHANGELOG +0 -0
  107. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/LICENSE +0 -0
  108. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/README +0 -0
  109. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/bin/libgcc_s_dw2-1.dll +0 -0
  110. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/bin/libstdc++-6.dll +0 -0
  111. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/bin/trimal.exe +0 -0
  112. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/scripts/check_codon_alignments.py +0 -0
  113. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/scripts/compare_trimmed_msas.sh +0 -0
  114. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/scripts/generateRandomAlignmentsUsingAsSeedRealAlignments.py +0 -0
  115. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/scripts/generate_trimmed_msas.sh +0 -0
  116. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/scripts/get_sequence_representative_from_alignment.py +0 -0
  117. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/scripts/get_sequences_gaps_ratio.py +0 -0
  118. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/scripts/remove_shorter_sequences.py +0 -0
  119. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/scripts/selective_trimming_for_dNdS_analyses.based_neighbours.py +0 -0
  120. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/scripts/set_manual_boundaries.py +0 -0
  121. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/alignment.cpp +0 -0
  122. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/alignment.h +0 -0
  123. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/alignment.o +0 -0
  124. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/autAlignment.cpp +0 -0
  125. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/autAlignment.o +0 -0
  126. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/compareFiles.cpp +0 -0
  127. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/compareFiles.h +0 -0
  128. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/compareFiles.o +0 -0
  129. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/defines.h +0 -0
  130. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/main.cpp +0 -0
  131. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/makefile +0 -0
  132. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/makefile.MacOS +0 -0
  133. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/readAl.cpp +0 -0
  134. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/readal.exe +0 -0
  135. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/rwAlignment.cpp +0 -0
  136. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/rwAlignment.o +0 -0
  137. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/sequencesMatrix.cpp +0 -0
  138. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/sequencesMatrix.h +0 -0
  139. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/sequencesMatrix.o +0 -0
  140. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/similarityMatrix.cpp +0 -0
  141. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/similarityMatrix.h +0 -0
  142. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/similarityMatrix.o +0 -0
  143. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/statAl.cpp +0 -0
  144. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/statal.exe +0 -0
  145. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/statisticsConservation.cpp +0 -0
  146. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/statisticsConservation.h +0 -0
  147. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/statisticsConservation.o +0 -0
  148. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/statisticsFiles.cpp +0 -0
  149. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/statisticsFiles.h +0 -0
  150. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/statisticsGaps.cpp +0 -0
  151. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/statisticsGaps.h +0 -0
  152. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/statisticsGaps.o +0 -0
  153. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/utils.cpp +0 -0
  154. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/utils.h +0 -0
  155. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/utils.o +0 -0
  156. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/external/trimal.v1.4/trimAl/source/values.h +0 -0
  157. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/main.py +0 -0
  158. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/preset/.gitignore +0 -0
  159. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/preset/accurate.yaml +0 -0
  160. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/preset/fast.yaml +0 -0
  161. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/.gitignore +0 -0
  162. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__init__.py +0 -0
  163. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/CATV_pipe.cpython-310.pyc +0 -0
  164. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/CAT_V.cpython-310.pyc +0 -0
  165. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/CAT_V.cpython-39.pyc +0 -0
  166. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/CAT_V_pipe.cpython-39.pyc +0 -0
  167. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/__init__.cpython-310.pyc +0 -0
  168. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/__init__.cpython-39.pyc +0 -0
  169. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/align.cpython-310.pyc +0 -0
  170. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/cluster.cpython-39.pyc +0 -0
  171. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/dataset.cpython-39.pyc +0 -0
  172. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/ext.cpython-310.pyc +0 -0
  173. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/ext.cpython-39.pyc +0 -0
  174. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/hasher.cpython-39.pyc +0 -0
  175. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/initialize.cpython-39.pyc +0 -0
  176. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/io.cpython-310.pyc +0 -0
  177. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/io.cpython-39.pyc +0 -0
  178. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/logger.cpython-39.pyc +0 -0
  179. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/modeltest.cpython-39.pyc +0 -0
  180. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/multigene.cpython-39.pyc +0 -0
  181. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/ncbi.cpython-39.pyc +0 -0
  182. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/opt_generator.cpython-39.pyc +0 -0
  183. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/reporter.cpython-39.pyc +0 -0
  184. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/search.cpython-39.pyc +0 -0
  185. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/tool.cpython-39.pyc +0 -0
  186. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/validation.cpython-39.pyc +0 -0
  187. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/__pycache__/visualize.cpython-39.pyc +0 -0
  188. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/align.py +0 -0
  189. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/cluster.py +0 -0
  190. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/command.py +0 -0
  191. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/concatenate.py +0 -0
  192. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/dataset.py +0 -0
  193. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/ext.py +0 -0
  194. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/hasher.py +0 -0
  195. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/initialize.py +0 -0
  196. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/logger.py +0 -0
  197. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/logics.py +0 -0
  198. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/modeltest.py +0 -0
  199. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/ncbi.py +0 -0
  200. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/opt_generator.py +0 -0
  201. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/reporter.py +0 -0
  202. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/save.py +0 -0
  203. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/search.py +0 -0
  204. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/templates/template.html +0 -0
  205. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/tool.py +0 -0
  206. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/tree.py +0 -0
  207. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/tree_interpretation_pipe.py +0 -0
  208. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/trim.py +0 -0
  209. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/validate_option.py +0 -0
  210. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/validation.py +0 -0
  211. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/src/version.py +0 -0
  212. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/test_dataset/penicillium/DB/DB_Penicillium.xlsx +0 -0
  213. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/test_dataset/penicillium/Options.config +0 -0
  214. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/test_dataset/penicillium/Query/Query.xlsx +0 -0
  215. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/test_dataset/penicillium/preset.yaml +0 -0
  216. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/test_dataset/terrei/DB/FunVIP_Aspergillus_db.xlsx +0 -0
  217. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/test_dataset/terrei/Query/FunVIP_Aspergillus_query.xlsx +0 -0
  218. {funvip-0.3.22.2 → funvip-0.3.23}/funvip/test_dataset/terrei/preset.yaml +0 -0
  219. {funvip-0.3.22.2 → funvip-0.3.23}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: FunVIP
3
- Version: 0.3.22.2
3
+ Version: 0.3.23
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.22.2
3
+ Version: 0.3.23
4
4
  Summary: Fungal Validation & Identification Pipeline
5
5
  Author-email: Changwan Seo <wan101010@snu.ac.kr>
6
6
  License: GPL-3.0
@@ -1,162 +1,162 @@
1
- #!/usr/bin/env python3
2
- """
3
- # $Id: cleanup-blastdb-volumes.py 590894 2019-08-07 14:59:53Z camacho $
4
- # ===========================================================================
5
- #
6
- # PUBLIC DOMAIN NOTICE
7
- # National Center for Biotechnology Information
8
- #
9
- # This software/database is a "United States Government Work" under the
10
- # terms of the United States Copyright Act. It was written as part of
11
- # the author's official duties as a United States Government employee and
12
- # thus cannot be copyrighted. This software/database is freely available
13
- # to the public for use. The National Library of Medicine and the U.S.
14
- # Government have not placed any restriction on its use or reproduction.
15
- #
16
- # Although all reasonable efforts have been taken to ensure the accuracy
17
- # and reliability of the software and data, the NLM and the U.S.
18
- # Government do not and cannot warrant the performance or results that
19
- # may be obtained by using this software or data. The NLM and the U.S.
20
- # Government disclaim all warranties, express or implied, including
21
- # warranties of performance, merchantability or fitness for any particular
22
- # purpose.
23
- #
24
- # Please cite the author in any work or product based on this material.
25
- #
26
- # ===========================================================================
27
- #
28
- # Author: Christiam Camacho
29
- #
30
- # File Description:
31
- # Script to remove needless BLAST database files.
32
- #
33
- # ===========================================================================
34
- """
35
- import argparse, os, configparser
36
- import unittest, tempfile
37
- from pathlib import Path
38
- from glob import glob
39
-
40
- VERSION = '1.0'
41
- DESC = r""" Remove needless BLAST database volumes. """
42
-
43
-
44
- class Tester(unittest.TestCase):
45
- """ Testing class for this script. """
46
-
47
- def test_blastdb_config_invalid(self):
48
- rv = get_blastdb_from_ncbi_config("/dev/null")
49
- self.assertIsNone(rv)
50
-
51
- def test_blastdb_config(self):
52
- config = configparser.ConfigParser()
53
- expected = "/blast/db/blast"
54
- config['BLAST'] = {'BLASTDB': expected}
55
- tf = tempfile.NamedTemporaryFile(mode="wt")
56
- config.write(tf)
57
- tf.flush()
58
- rv = get_blastdb_from_ncbi_config(tf.name)
59
- self.assertEqual(expected, rv)
60
-
61
- def test_blastdb_finder(self):
62
- tal = tempfile.NamedTemporaryFile(suffix=".pin")
63
- dbname = find_blastdb(tal.name[:-4], True)
64
- self.assertEqual(dbname, tal.name[:-4])
65
-
66
-
67
- def find_blastdb(name: str, is_prot: bool) -> str:
68
- """ Returns full path to BLAST database or None. """
69
- alias_file = "{}.{}al".format(name, "p" if is_prot else "n")
70
- index_file = "{}.{}in".format(name, "p" if is_prot else "n")
71
- if os.path.exists(alias_file) or os.path.exists(index_file):
72
- return name
73
-
74
- if "BLASTDB" in os.environ:
75
- alf = os.path.join(os.environ["BLASTDB"], alias_file)
76
- idxf = os.path.join(os.environ["BLASTDB"], index_file)
77
- if os.path.exists(alf) or os.path.exists(idxf):
78
- return os.path.join(os.environ["BLASTDB"], name)
79
-
80
- paths = [ os.getcwd(), str(Path.home()) ]
81
- if "NCBI" in os.environ:
82
- paths.append(os.path.join(os.environ["NCBI"]))
83
-
84
- for path in paths:
85
- for fname in [ ".ncbirc", "ncbi.ini" ]:
86
- ncbirc = os.path.join(path, fname)
87
- if os.path.exists(ncbirc):
88
- blastdb = get_blastdb_from_ncbi_config(ncbirc)
89
- if blastdb is not None:
90
- alf = os.path.join(blastdb, alias_file)
91
- idxf = os.path.join(blastdb, index_file)
92
- if os.path.exists(alf) or os.path.exists(idxf):
93
- return os.path.join(blastdb, name)
94
-
95
-
96
- def get_blastdb_from_ncbi_config(config_file: str) -> str:
97
- """ Return the BLASTDB setting from the NCBI configuration file or None. """
98
- config = configparser.ConfigParser()
99
- config.read(config_file)
100
- if 'BLAST' in config and 'BLASTDB' in config['BLAST']:
101
- return config['BLAST']['BLASTDB']
102
-
103
-
104
- def main():
105
- """ Entry point into this program. """
106
- parser = create_arg_parser()
107
- args = parser.parse_args()
108
-
109
- ext = args.dbtype[0]
110
- db = find_blastdb(args.db, ext == 'p')
111
- if db == None:
112
- print("Cannot find {} {} BLAST database".
113
- format("protein" if ext == 'p' else "nucleotide", args.db),
114
- file=sys.stderr)
115
- return 1
116
-
117
- alias_file = "{}.{}al".format(db, ext)
118
- if not os.path.exists(alias_file):
119
- return 1
120
-
121
- with open(alias_file, "rt") as al:
122
- for line in al:
123
- if not line.startswith("DBLIST"):
124
- continue
125
- vols = list(map(lambda x: x.replace('"', ''), line.split()[1:]))
126
- for existing_vols in sorted(glob("{}.*.{}in".format(db, ext))):
127
- vol_name = os.path.basename(existing_vols)[:-4]
128
- if vol_name in vols:
129
- continue
130
- if args.dry_run:
131
- print("Will remove extra volume {}".format(existing_vols[:-4]))
132
- to_rm = glob("{}??".format(existing_vols[:-2]))
133
- to_rm += glob("{}.tar.gz.md5".format(existing_vols[:-4]))
134
- for f in to_rm:
135
- if not args.dry_run:
136
- os.unlink(f)
137
- print("Removed {}".format(f))
138
- elif args.verbose > 0:
139
- print("Will remove {}".format(f))
140
-
141
- return 0
142
-
143
-
144
- def create_arg_parser():
145
- """ Create the command line options parser object for this script. """
146
- parser = argparse.ArgumentParser(description=DESC)
147
- parser.add_argument("-db", required=True, help="BLAST database name")
148
- parser.add_argument("-dbtype", help="Molecule type", required=True,
149
- choices=["prot", "nucl"])
150
- parser.add_argument("-dry-run", action='store_true',
151
- help="Do not delete any files, just list them")
152
- parser.add_argument('-version', action='version',
153
- version='%(prog)s ' + VERSION)
154
- parser.add_argument("-verbose", action="count", default=0,
155
- help="Increase output verbosity")
156
- return parser
157
-
158
-
159
- if __name__ == "__main__":
160
- import sys
161
- sys.exit(main())
162
-
1
+ #!/usr/bin/env python3
2
+ """
3
+ # $Id: cleanup-blastdb-volumes.py 590894 2019-08-07 14:59:53Z camacho $
4
+ # ===========================================================================
5
+ #
6
+ # PUBLIC DOMAIN NOTICE
7
+ # National Center for Biotechnology Information
8
+ #
9
+ # This software/database is a "United States Government Work" under the
10
+ # terms of the United States Copyright Act. It was written as part of
11
+ # the author's official duties as a United States Government employee and
12
+ # thus cannot be copyrighted. This software/database is freely available
13
+ # to the public for use. The National Library of Medicine and the U.S.
14
+ # Government have not placed any restriction on its use or reproduction.
15
+ #
16
+ # Although all reasonable efforts have been taken to ensure the accuracy
17
+ # and reliability of the software and data, the NLM and the U.S.
18
+ # Government do not and cannot warrant the performance or results that
19
+ # may be obtained by using this software or data. The NLM and the U.S.
20
+ # Government disclaim all warranties, express or implied, including
21
+ # warranties of performance, merchantability or fitness for any particular
22
+ # purpose.
23
+ #
24
+ # Please cite the author in any work or product based on this material.
25
+ #
26
+ # ===========================================================================
27
+ #
28
+ # Author: Christiam Camacho
29
+ #
30
+ # File Description:
31
+ # Script to remove needless BLAST database files.
32
+ #
33
+ # ===========================================================================
34
+ """
35
+ import argparse, os, configparser
36
+ import unittest, tempfile
37
+ from pathlib import Path
38
+ from glob import glob
39
+
40
+ VERSION = '1.0'
41
+ DESC = r""" Remove needless BLAST database volumes. """
42
+
43
+
44
+ class Tester(unittest.TestCase):
45
+ """ Testing class for this script. """
46
+
47
+ def test_blastdb_config_invalid(self):
48
+ rv = get_blastdb_from_ncbi_config("/dev/null")
49
+ self.assertIsNone(rv)
50
+
51
+ def test_blastdb_config(self):
52
+ config = configparser.ConfigParser()
53
+ expected = "/blast/db/blast"
54
+ config['BLAST'] = {'BLASTDB': expected}
55
+ tf = tempfile.NamedTemporaryFile(mode="wt")
56
+ config.write(tf)
57
+ tf.flush()
58
+ rv = get_blastdb_from_ncbi_config(tf.name)
59
+ self.assertEqual(expected, rv)
60
+
61
+ def test_blastdb_finder(self):
62
+ tal = tempfile.NamedTemporaryFile(suffix=".pin")
63
+ dbname = find_blastdb(tal.name[:-4], True)
64
+ self.assertEqual(dbname, tal.name[:-4])
65
+
66
+
67
+ def find_blastdb(name: str, is_prot: bool) -> str:
68
+ """ Returns full path to BLAST database or None. """
69
+ alias_file = "{}.{}al".format(name, "p" if is_prot else "n")
70
+ index_file = "{}.{}in".format(name, "p" if is_prot else "n")
71
+ if os.path.exists(alias_file) or os.path.exists(index_file):
72
+ return name
73
+
74
+ if "BLASTDB" in os.environ:
75
+ alf = os.path.join(os.environ["BLASTDB"], alias_file)
76
+ idxf = os.path.join(os.environ["BLASTDB"], index_file)
77
+ if os.path.exists(alf) or os.path.exists(idxf):
78
+ return os.path.join(os.environ["BLASTDB"], name)
79
+
80
+ paths = [ os.getcwd(), str(Path.home()) ]
81
+ if "NCBI" in os.environ:
82
+ paths.append(os.path.join(os.environ["NCBI"]))
83
+
84
+ for path in paths:
85
+ for fname in [ ".ncbirc", "ncbi.ini" ]:
86
+ ncbirc = os.path.join(path, fname)
87
+ if os.path.exists(ncbirc):
88
+ blastdb = get_blastdb_from_ncbi_config(ncbirc)
89
+ if blastdb is not None:
90
+ alf = os.path.join(blastdb, alias_file)
91
+ idxf = os.path.join(blastdb, index_file)
92
+ if os.path.exists(alf) or os.path.exists(idxf):
93
+ return os.path.join(blastdb, name)
94
+
95
+
96
+ def get_blastdb_from_ncbi_config(config_file: str) -> str:
97
+ """ Return the BLASTDB setting from the NCBI configuration file or None. """
98
+ config = configparser.ConfigParser()
99
+ config.read(config_file)
100
+ if 'BLAST' in config and 'BLASTDB' in config['BLAST']:
101
+ return config['BLAST']['BLASTDB']
102
+
103
+
104
+ def main():
105
+ """ Entry point into this program. """
106
+ parser = create_arg_parser()
107
+ args = parser.parse_args()
108
+
109
+ ext = args.dbtype[0]
110
+ db = find_blastdb(args.db, ext == 'p')
111
+ if db == None:
112
+ print("Cannot find {} {} BLAST database".
113
+ format("protein" if ext == 'p' else "nucleotide", args.db),
114
+ file=sys.stderr)
115
+ return 1
116
+
117
+ alias_file = "{}.{}al".format(db, ext)
118
+ if not os.path.exists(alias_file):
119
+ return 1
120
+
121
+ with open(alias_file, "rt") as al:
122
+ for line in al:
123
+ if not line.startswith("DBLIST"):
124
+ continue
125
+ vols = list(map(lambda x: x.replace('"', ''), line.split()[1:]))
126
+ for existing_vols in sorted(glob("{}.*.{}in".format(db, ext))):
127
+ vol_name = os.path.basename(existing_vols)[:-4]
128
+ if vol_name in vols:
129
+ continue
130
+ if args.dry_run:
131
+ print("Will remove extra volume {}".format(existing_vols[:-4]))
132
+ to_rm = glob("{}??".format(existing_vols[:-2]))
133
+ to_rm += glob("{}.tar.gz.md5".format(existing_vols[:-4]))
134
+ for f in to_rm:
135
+ if not args.dry_run:
136
+ os.unlink(f)
137
+ print("Removed {}".format(f))
138
+ elif args.verbose > 0:
139
+ print("Will remove {}".format(f))
140
+
141
+ return 0
142
+
143
+
144
+ def create_arg_parser():
145
+ """ Create the command line options parser object for this script. """
146
+ parser = argparse.ArgumentParser(description=DESC)
147
+ parser.add_argument("-db", required=True, help="BLAST database name")
148
+ parser.add_argument("-dbtype", help="Molecule type", required=True,
149
+ choices=["prot", "nucl"])
150
+ parser.add_argument("-dry-run", action='store_true',
151
+ help="Do not delete any files, just list them")
152
+ parser.add_argument('-version', action='version',
153
+ version='%(prog)s ' + VERSION)
154
+ parser.add_argument("-verbose", action="count", default=0,
155
+ help="Increase output verbosity")
156
+ return parser
157
+
158
+
159
+ if __name__ == "__main__":
160
+ import sys
161
+ sys.exit(main())
162
+
@@ -1,152 +1,152 @@
1
- #!/bin/bash
2
- # $Id: get_species_taxids.sh 631039 2021-05-12 14:35:54Z fongah2 $
3
- # ===========================================================================
4
- #
5
- # PUBLIC DOMAIN NOTICE
6
- # National Center for Biotechnology Information
7
- #
8
- # This software/database is a "United States Government Work" under the
9
- # terms of the United States Copyright Act. It was written as part of
10
- # the author's official duties as a United States Government employee and
11
- # thus cannot be copyrighted. This software/database is freely available
12
- # to the public for use. The National Library of Medicine and the U.S.
13
- # Government have not placed any restriction on its use or reproduction.
14
- #
15
- # Although all reasonable efforts have been taken to ensure the accuracy
16
- # and reliability of the software and data, the NLM and the U.S.
17
- # Government do not and cannot warrant the performance or results that
18
- # may be obtained by using this software or data. The NLM and the U.S.
19
- # Government disclaim all warranties, express or implied, including
20
- # warranties of performance, merchantability or fitness for any particular
21
- # purpose.
22
- #
23
- # Please cite the author in any work or product based on this material.
24
- #
25
- # ===========================================================================
26
- #
27
- # Author: Amelia Fong
28
- #
29
- # File Description:
30
- # Script to convert NCBI taxonomy IDs or text into taxonomy IDs suitable for
31
- # filtering BLAST searches.
32
- #
33
- # N.B.: Depends on EDirect (https://www.ncbi.nlm.nih.gov/books/NBK179288/)
34
- #
35
- # ===========================================================================
36
-
37
- export PATH=/bin:/usr/bin:/am/ncbiapdata/bin:$HOME/edirect:$PATH
38
- set -uo pipefail
39
-
40
- TOO_MANY_MATCHES=500
41
- OUTPUT=`mktemp`
42
- TMP=`mktemp`
43
- trap " /bin/rm -fr $OUTPUT $TMP" INT QUIT EXIT HUP KILL ALRM
44
-
45
- usage() {
46
- echo "$0 usage:";
47
- echo -e "\t-t <taxonomy ID>\n\t\tGet taxonomy IDs at or below input taxonomy ID level";
48
- echo -e "\t-n <Scientific Name, Common Name or Keyword>\n\t\tGet taxonomy information for organism";
49
- exit 0;
50
- }
51
-
52
- error_exit() {
53
- msg=$1
54
- exit_code=${2:-1}
55
- >&2 echo $msg;
56
- exit $exit_code;
57
- }
58
-
59
- check_deps() {
60
- for app in esearch efetch esummary; do
61
- command -v $app >/dev/null 2>&1 || error_exit "Cannot find Entrez EDirect $app tool, please see installation in https://www.ncbi.nlm.nih.gov/books/NBK179288/"
62
- done
63
- }
64
-
65
- check_deps
66
-
67
- TAXID=""
68
- NAME=""
69
- while getopts "ht::n::o::" OPT; do
70
- case $OPT in
71
- h)
72
- usage
73
- ;;
74
- t)
75
- TAXID=${OPTARG}
76
- ;;
77
- n)
78
- NAME=${OPTARG}
79
- ;;
80
- esac
81
- done
82
-
83
- if [ -z "${TAXID}" ] && [ -z "${NAME}" ]; then
84
- usage
85
- fi
86
- if [ ! -z "${TAXID}" ] && [ ! -z "${NAME}" ]; then
87
- echo -e "Input Error: -t is incompatible with -n\n"
88
- usage
89
- fi
90
-
91
- if [ ! -z "${TAXID}" ]; then
92
- esearch -db taxonomy -query "txid$TAXID[orgn]" > $OUTPUT
93
- if [ $? -ne 0 ]; then
94
- error_exit "esearch error" $?
95
- fi
96
-
97
- efetch -format uid < $OUTPUT > $TMP
98
- if [ $? -ne 0 ]; then
99
- error_exit "efetch error" $?
100
- fi
101
-
102
- if [ ! -s $TMP ]; then
103
- error_exit "Taxonomy ID not found"
104
- fi
105
-
106
- sort -n $TMP > $OUTPUT
107
- fi
108
-
109
- if [ ! -z "${NAME}" ]; then
110
-
111
- esearch -db taxonomy -query "$NAME[All Names]" > $OUTPUT
112
- if [ $? -ne 0 ]; then
113
- error_exit "esearch error" $?
114
- fi
115
-
116
- NUM_RESULTS=$(grep "<Count>" $OUTPUT | sed -e 's,.*<Count>\([^<]*\)</Count>.*,\1,g')
117
-
118
- if [ $NUM_RESULTS -eq 0 ]; then
119
- CORRECT_NAME=$(espell -db taxonomy -query "$NAME" | grep "<CorrectedQuery>" | sed -e 's,.*<CorrectedQuery>\([^<]*\)</CorrectedQuery>.*,\1,g')
120
-
121
- if [ ! -z "${CORRECT_NAME}" ]; then
122
- error_exit "No matches found for \"$NAME\". Did you mean \"$CORRECT_NAME\"?"
123
- fi
124
-
125
- esearch -db taxonomy -query "$NAME[Name Tokens]" > $OUTPUT
126
- if [ $? -ne 0 ]; then
127
- error_exit "esearch error"
128
- fi
129
- NUM_RESULTS=$(grep "<Count>" $OUTPUT | sed -e 's,.*<Count>\([^<]*\)</Count>.*,\1,g')
130
- if [ $NUM_RESULTS -gt $TOO_MANY_MATCHES ]; then
131
- error_exit "More than $TOO_MANY_MATCHES matches found, please refine your search."
132
- fi
133
- if [ $NUM_RESULTS -eq 0 ]; then
134
- error_exit "No matches for \"$NAME\"."
135
- fi
136
- fi
137
-
138
- esummary -mode json < $OUTPUT > $TMP
139
-
140
- if [ $? -ne 0 ]; then
141
- error_exit "esummary error" $?
142
- fi
143
-
144
- cat $TMP | tr ',|{' '\n' | \
145
- grep 'uid\|rank\|division\|scientificname\|commonname' | \
146
- grep -v "uids\|genbankdivision" | tr '"\|,' " " | tr -s ' ' | \
147
- sed 's/ uid/Taxid/g;s/name/ name/g' | awk '/Taxid/{print ""}1' > $OUTPUT
148
-
149
- echo -e "\n$NUM_RESULTS matche(s) found.\n" >> $OUTPUT
150
- fi
151
-
152
- cat $OUTPUT
1
+ #!/bin/bash
2
+ # $Id: get_species_taxids.sh 631039 2021-05-12 14:35:54Z fongah2 $
3
+ # ===========================================================================
4
+ #
5
+ # PUBLIC DOMAIN NOTICE
6
+ # National Center for Biotechnology Information
7
+ #
8
+ # This software/database is a "United States Government Work" under the
9
+ # terms of the United States Copyright Act. It was written as part of
10
+ # the author's official duties as a United States Government employee and
11
+ # thus cannot be copyrighted. This software/database is freely available
12
+ # to the public for use. The National Library of Medicine and the U.S.
13
+ # Government have not placed any restriction on its use or reproduction.
14
+ #
15
+ # Although all reasonable efforts have been taken to ensure the accuracy
16
+ # and reliability of the software and data, the NLM and the U.S.
17
+ # Government do not and cannot warrant the performance or results that
18
+ # may be obtained by using this software or data. The NLM and the U.S.
19
+ # Government disclaim all warranties, express or implied, including
20
+ # warranties of performance, merchantability or fitness for any particular
21
+ # purpose.
22
+ #
23
+ # Please cite the author in any work or product based on this material.
24
+ #
25
+ # ===========================================================================
26
+ #
27
+ # Author: Amelia Fong
28
+ #
29
+ # File Description:
30
+ # Script to convert NCBI taxonomy IDs or text into taxonomy IDs suitable for
31
+ # filtering BLAST searches.
32
+ #
33
+ # N.B.: Depends on EDirect (https://www.ncbi.nlm.nih.gov/books/NBK179288/)
34
+ #
35
+ # ===========================================================================
36
+
37
+ export PATH=/bin:/usr/bin:/am/ncbiapdata/bin:$HOME/edirect:$PATH
38
+ set -uo pipefail
39
+
40
+ TOO_MANY_MATCHES=500
41
+ OUTPUT=`mktemp`
42
+ TMP=`mktemp`
43
+ trap " /bin/rm -fr $OUTPUT $TMP" INT QUIT EXIT HUP KILL ALRM
44
+
45
+ usage() {
46
+ echo "$0 usage:";
47
+ echo -e "\t-t <taxonomy ID>\n\t\tGet taxonomy IDs at or below input taxonomy ID level";
48
+ echo -e "\t-n <Scientific Name, Common Name or Keyword>\n\t\tGet taxonomy information for organism";
49
+ exit 0;
50
+ }
51
+
52
+ error_exit() {
53
+ msg=$1
54
+ exit_code=${2:-1}
55
+ >&2 echo $msg;
56
+ exit $exit_code;
57
+ }
58
+
59
+ check_deps() {
60
+ for app in esearch efetch esummary; do
61
+ command -v $app >/dev/null 2>&1 || error_exit "Cannot find Entrez EDirect $app tool, please see installation in https://www.ncbi.nlm.nih.gov/books/NBK179288/"
62
+ done
63
+ }
64
+
65
+ check_deps
66
+
67
+ TAXID=""
68
+ NAME=""
69
+ while getopts "ht::n::o::" OPT; do
70
+ case $OPT in
71
+ h)
72
+ usage
73
+ ;;
74
+ t)
75
+ TAXID=${OPTARG}
76
+ ;;
77
+ n)
78
+ NAME=${OPTARG}
79
+ ;;
80
+ esac
81
+ done
82
+
83
+ if [ -z "${TAXID}" ] && [ -z "${NAME}" ]; then
84
+ usage
85
+ fi
86
+ if [ ! -z "${TAXID}" ] && [ ! -z "${NAME}" ]; then
87
+ echo -e "Input Error: -t is incompatible with -n\n"
88
+ usage
89
+ fi
90
+
91
+ if [ ! -z "${TAXID}" ]; then
92
+ esearch -db taxonomy -query "txid$TAXID[orgn]" > $OUTPUT
93
+ if [ $? -ne 0 ]; then
94
+ error_exit "esearch error" $?
95
+ fi
96
+
97
+ efetch -format uid < $OUTPUT > $TMP
98
+ if [ $? -ne 0 ]; then
99
+ error_exit "efetch error" $?
100
+ fi
101
+
102
+ if [ ! -s $TMP ]; then
103
+ error_exit "Taxonomy ID not found"
104
+ fi
105
+
106
+ sort -n $TMP > $OUTPUT
107
+ fi
108
+
109
+ if [ ! -z "${NAME}" ]; then
110
+
111
+ esearch -db taxonomy -query "$NAME[All Names]" > $OUTPUT
112
+ if [ $? -ne 0 ]; then
113
+ error_exit "esearch error" $?
114
+ fi
115
+
116
+ NUM_RESULTS=$(grep "<Count>" $OUTPUT | sed -e 's,.*<Count>\([^<]*\)</Count>.*,\1,g')
117
+
118
+ if [ $NUM_RESULTS -eq 0 ]; then
119
+ CORRECT_NAME=$(espell -db taxonomy -query "$NAME" | grep "<CorrectedQuery>" | sed -e 's,.*<CorrectedQuery>\([^<]*\)</CorrectedQuery>.*,\1,g')
120
+
121
+ if [ ! -z "${CORRECT_NAME}" ]; then
122
+ error_exit "No matches found for \"$NAME\". Did you mean \"$CORRECT_NAME\"?"
123
+ fi
124
+
125
+ esearch -db taxonomy -query "$NAME[Name Tokens]" > $OUTPUT
126
+ if [ $? -ne 0 ]; then
127
+ error_exit "esearch error"
128
+ fi
129
+ NUM_RESULTS=$(grep "<Count>" $OUTPUT | sed -e 's,.*<Count>\([^<]*\)</Count>.*,\1,g')
130
+ if [ $NUM_RESULTS -gt $TOO_MANY_MATCHES ]; then
131
+ error_exit "More than $TOO_MANY_MATCHES matches found, please refine your search."
132
+ fi
133
+ if [ $NUM_RESULTS -eq 0 ]; then
134
+ error_exit "No matches for \"$NAME\"."
135
+ fi
136
+ fi
137
+
138
+ esummary -mode json < $OUTPUT > $TMP
139
+
140
+ if [ $? -ne 0 ]; then
141
+ error_exit "esummary error" $?
142
+ fi
143
+
144
+ cat $TMP | tr ',|{' '\n' | \
145
+ grep 'uid\|rank\|division\|scientificname\|commonname' | \
146
+ grep -v "uids\|genbankdivision" | tr '"\|,' " " | tr -s ' ' | \
147
+ sed 's/ uid/Taxid/g;s/name/ name/g' | awk '/Taxid/{print ""}1' > $OUTPUT
148
+
149
+ echo -e "\n$NUM_RESULTS matche(s) found.\n" >> $OUTPUT
150
+ fi
151
+
152
+ cat $OUTPUT