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.
- {funvip-0.3.24 → funvip-0.3.24.2}/FunVIP.egg-info/PKG-INFO +1 -1
- {funvip-0.3.24 → funvip-0.3.24.2}/PKG-INFO +1 -1
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/main.py +3 -3
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/cluster.py +49 -110
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/ext.py +10 -1
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/hasher.py +32 -1
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/initialize.py +21 -1
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/tree.py +2 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/tree_interpretation.py +3 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/tree_interpretation_pipe.py +42 -15
- {funvip-0.3.24 → funvip-0.3.24.2}/pyproject.toml +1 -1
- {funvip-0.3.24 → funvip-0.3.24.2}/FunVIP.egg-info/SOURCES.txt +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/FunVIP.egg-info/dependency_links.txt +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/FunVIP.egg-info/entry_points.txt +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/FunVIP.egg-info/requires.txt +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/FunVIP.egg-info/top_level.txt +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/LICENSE +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/MANIFEST.in +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/README.md +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/FunVIP_GUI.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/__init__.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/data/Option_manager.xlsx +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/data/__init__.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/data/genus_line.txt +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/Uninstall-ncbi-blast-2.12.0+.exe +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/blastn.exe +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/cleanup-blastdb-volumes.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/get_species_taxids.sh +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/legacy_blast.pl +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/makeblastdb.exe +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/nghttp2.dll +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/update_blastdb.pl +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/doc/README.txt +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/FastTree_Windows/FastTree.exe +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/Documentation/Gblocks_documentation.html +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/Gblocks.exe +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/cox2.pir +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/cytb.pir +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/nad3.pir +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/more_alignments/nad5.pir +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/nad3.pir +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/paths +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/MAFFT_LICENSE +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/MAFFT_Windows.zip +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/RAxML_Windows/GPL-3.0.txt +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/RAxML_Windows/README +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/RAxML_Windows/raxmlHPC-PTHREADS-AVX2.exe +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/__init__.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/bin/iqtree2-click.exe +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/bin/iqtree2.exe +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/bin/libiomp5md.dll +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/example.cf +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/example.nex +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/example.phy +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/iqtree/models.nex +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/LICENSE.md +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/README.md +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/busybox.exe +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/cygbz2-1.dll +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/cyggcc_s-seh-1.dll +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/cyggomp-1.dll +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/cygstdc++-6.dll +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/cygwin1.dll +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/cygz.dll +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/bin/mmseqs.exe +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/examples/QUERY.fasta +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM10.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM100.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM110.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM120.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM130.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM140.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM150.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM160.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM170.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM180.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM190.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM20.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM30.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM40.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM50.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM60.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM70.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM80.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/PAM90.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/VTML10.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/VTML120.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/VTML160.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/VTML20.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/VTML40.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/VTML80.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum100.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum30.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum35.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum40.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum45.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum50.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum55.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum60.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum62.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum65.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum70.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum75.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum80.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum85.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum90.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/blosum95.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/matrices/nucleotide.out +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/mmseqs.bat +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/mmseqs_Windows/util/bash-completion.sh +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/AUTHORS +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/CHANGELOG +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/LICENSE +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/README +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/bin/libgcc_s_dw2-1.dll +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/bin/libstdc++-6.dll +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/bin/trimal.exe +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/check_codon_alignments.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/compare_trimmed_msas.sh +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/generateRandomAlignmentsUsingAsSeedRealAlignments.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/generate_trimmed_msas.sh +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/get_sequence_representative_from_alignment.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/get_sequences_gaps_ratio.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/remove_shorter_sequences.py +0 -0
- {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
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/scripts/set_manual_boundaries.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/alignment.cpp +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/alignment.h +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/alignment.o +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/autAlignment.cpp +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/autAlignment.o +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/compareFiles.cpp +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/compareFiles.h +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/compareFiles.o +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/defines.h +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/main.cpp +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/makefile +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/makefile.MacOS +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/readAl.cpp +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/readal.exe +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/rwAlignment.cpp +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/rwAlignment.o +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/sequencesMatrix.cpp +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/sequencesMatrix.h +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/sequencesMatrix.o +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/similarityMatrix.cpp +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/similarityMatrix.h +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/similarityMatrix.o +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statAl.cpp +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statal.exe +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsConservation.cpp +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsConservation.h +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsConservation.o +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsFiles.cpp +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsFiles.h +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsGaps.cpp +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsGaps.h +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/statisticsGaps.o +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/utils.cpp +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/utils.h +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/utils.o +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/trimal.v1.4/trimAl/source/values.h +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/preset/.gitignore +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/preset/accurate.yaml +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/preset/fast.yaml +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/.gitignore +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__init__.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/CATV_pipe.cpython-310.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/CAT_V.cpython-310.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/CAT_V.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/CAT_V_pipe.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/__init__.cpython-310.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/__init__.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/align.cpython-310.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/cluster.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/dataset.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/ext.cpython-310.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/ext.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/hasher.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/initialize.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/io.cpython-310.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/io.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/logger.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/modeltest.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/multigene.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/ncbi.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/opt_generator.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/reporter.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/search.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/tool.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/validation.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/__pycache__/visualize.cpython-39.pyc +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/align.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/command.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/concatenate.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/dataset.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/logger.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/logics.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/modeltest.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/ncbi.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/opt_generator.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/reporter.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/save.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/search.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/templates/template.html +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/tool.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/trim.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/validate_input.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/validate_option.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/validation.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/version.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/src/visualize.py +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/penicillium/DB/DB_Penicillium.xlsx +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/penicillium/Options.config +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/penicillium/Query/Query.xlsx +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/penicillium/preset.yaml +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/sanghuangporus/DB/FunVIP_Sanghuangporus_db.xlsx +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/sanghuangporus/Query/FunVIP_Sanghuangporus_query.xlsx +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/sanghuangporus/preset.yaml +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/terrei/DB/FunVIP_Aspergillus_db.xlsx +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/terrei/Query/FunVIP_Aspergillus_query.xlsx +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/funvip/test_dataset/terrei/preset.yaml +0 -0
- {funvip-0.3.24 → funvip-0.3.24.2}/setup.cfg +0 -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
|
-
#
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
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
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
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
|
-
|
|
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":
|
|
@@ -19,27 +19,34 @@ def pipe_module_tree_interpretation(
|
|
|
19
19
|
out,
|
|
20
20
|
group,
|
|
21
21
|
gene,
|
|
22
|
-
|
|
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
|
|
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 =
|
|
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
|
-
|
|
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(
|
|
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 =
|
|
491
|
-
report.hash =
|
|
492
|
-
report.update_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 =
|
|
512
|
-
report.hash =
|
|
513
|
-
report.update_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(
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/Uninstall-ncbi-blast-2.12.0+.exe
RENAMED
|
File without changes
|
|
File without changes
|
{funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/BLAST_Windows/bin/cleanup-blastdb-volumes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/Gblocks.exe
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{funvip-0.3.24 → funvip-0.3.24.2}/funvip/external/Gblocks_Windows_0.91b/Gblocks_0.91b/nad3.pir
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|