Warning
This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.visualization.data_providers.phyloviz
""" Data providers code for PhyloViz """
from typing import Any, Dict
from galaxy.visualization.data_providers.basic import BaseDataProvider
from galaxy.visualization.data_providers.phyloviz.newickparser import Newick_Parser
from galaxy.visualization.data_providers.phyloviz.nexusparser import Nexus_Parser
from galaxy.visualization.data_providers.phyloviz.phyloxmlparser import Phyloxml_Parser
[docs]class PhylovizDataProvider(BaseDataProvider):
dataset_type = "phylo"
[docs] def __init__(self, original_dataset=None):
super().__init__(original_dataset=original_dataset)
[docs] def get_data(self, tree_index=0):
"""
Returns trees.
Trees are actually an array of JsonDicts. It's usually one tree, except in the case of Nexus
"""
file_ext = self.original_dataset.datatype.file_ext
file_name = self.original_dataset.file_name
parseMsg = None
jsonDicts = []
rval: Dict[str, Any] = {'dataset_type': self.dataset_type}
if file_ext in ["newick", "nhx"]: # parses newick files
newickParser = Newick_Parser()
jsonDicts, parseMsg = newickParser.parseFile(file_name)
elif file_ext == "phyloxml": # parses phyloXML files
phyloxmlParser = Phyloxml_Parser()
jsonDicts, parseMsg = phyloxmlParser.parseFile(file_name)
elif file_ext == "nex": # parses nexus files
nexusParser = Nexus_Parser()
jsonDicts, parseMsg = nexusParser.parseFile(file_name)
jsonDicts = jsonDicts[int(tree_index)]
rval["trees"] = parseMsg
rval["data"] = jsonDicts
rval["msg"] = parseMsg
return rval