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

|
|
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
|
+

|
|
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
|
+

|
|
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)-->
|
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 [](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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
-
|
|
564
|
-
seq2_hash = seq2.id
|
|
565
|
-
seq2_str = str(seq.seq)
|
|
561
|
+
list_candidates.append((i, j))
|
|
566
562
|
|
|
567
|
-
|
|
563
|
+
for seq_pair in list_candidates:
|
|
564
|
+
has_overlap = False
|
|
568
565
|
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
has_overlap = True
|
|
572
|
-
break
|
|
566
|
+
i = seq_pair[0]
|
|
567
|
+
j = seq_pair[1]
|
|
573
568
|
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
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("&", "&")
|
|
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(
|
|
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
|
|
@@ -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
|
-
|
|
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
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
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
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{funvip-0.5.0 → funvip-0.5.2}/funvip/external/BLAST_Windows/Uninstall-ncbi-blast-2.12.0+.exe
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|