Newer
Older

Arthur Le Bars
committed
#!/usr/bin/env python3

Arthur Le Bars
committed
import sys
import utilities

Arthur Le Bars
committed
from _datetime import datetime
class SpeciesData:
"""
This class contains attributes and functions to interact with the galaxy container of the GGA environment
Parent class of LoadData, DeploySpeciesStack and RunWorkflow
"""
def __init__(self, parameters_dictionary):

Arthur Le Bars
committed
# self.config_dictionary = None
self.parameters_dictionary = parameters_dictionary
self.species = parameters_dictionary["description"]["species"]
self.genus = parameters_dictionary["description"]["genus"]
self.strain = parameters_dictionary["description"]["strain"]
self.sex = parameters_dictionary["description"]["sex"]
self.common = parameters_dictionary["description"]["common_name"]

Arthur Le Bars
committed
self.date = datetime.today().strftime("%Y-%m-%d")
self.origin = parameters_dictionary["description"]["origin"]
self.performed = parameters_dictionary["data"]["performed_by"]

Arthur Le Bars
committed
if parameters_dictionary["data"]["genome_version"] == "":
self.genome_version = "1.0"
else:
self.genome_version = parameters_dictionary["data"]["genome_version"]
if parameters_dictionary["data"]["ogs_version"] == "":
self.ogs_version = "1.0"
else:
self.ogs_version = parameters_dictionary["data"]["ogs_version"]

Arthur Le Bars
committed
self.genome_path = parameters_dictionary["data"]["genome_path"]
self.transcripts_path = parameters_dictionary["data"]["transcripts_path"]
self.proteins_path = parameters_dictionary["data"]["proteins_path"]
self.gff_path = parameters_dictionary["data"]["gff_path"]
self.interpro_path = parameters_dictionary["data"]["interpro_path"]
self.blastp_path = parameters_dictionary["data"]["blastp_path"]
self.blastx_path = parameters_dictionary["data"]["blastx_path"]
self.orthofinder_path = parameters_dictionary["data"]["orthofinder_path"]
self.genus_lowercase = self.genus[0].lower() + self.genus[1:]
self.genus_uppercase = self.genus[0].upper() + self.genus[1:]

Arthur Le Bars
committed
self.chado_species_name = "{0} {1}".format(self.species, self.sex)

Arthur Le Bars
committed
self.full_name = ' '.join(utilities.filter_empty_not_empty_items([self.genus_uppercase, self.species, self.strain, self.sex])["not_empty"])

Arthur Le Bars
committed
self.full_name_lowercase = self.full_name.lower()
self.abbreviation = "_".join(utilities.filter_empty_not_empty_items([self.genus_lowercase[0], self.species, self.strain, self.sex])["not_empty"])
self.genus_species = self.genus_lowercase + "_" + self.species

Arthur Le Bars
committed
self.instance_url = None
self.instance = None
self.history_id = None

Arthur Le Bars
committed
self.library = None
self.library_id = None
self.script_dir = os.path.dirname(os.path.realpath(sys.argv[0]))
self.main_dir = None
self.species_dir = None
self.org_id = None
self.genome_analysis_id = None
self.ogs_analysis_id = None
self.tool_panel = None
self.datasets = dict()
self.source_files = dict()
self.workflow_name = None
self.metadata = dict()

Arthur Le Bars
committed
self.api_key = None

Arthur Le Bars
committed
self.datasets = dict()

Arthur Le Bars
committed
# API key used to communicate with the galaxy instance. Cannot be used to do user-tied actions
self.config = None
# Custom config used to set environment variables inside containers, defaults to the one in the repo

Arthur Le Bars
committed
if parameters_dictionary["data"]["parent_directory"] == "" or parameters_dictionary["data"]["parent_directory"] == "/path/to/closest/parent/dir":
self.source_data_dir = "/shared/projects/phaeoexplorer/" # Testing path for phaeoexplorer data - TODO: REMOVE IN PRODUCTION
else:
self.source_data_dir = parameters_dictionary["data"]["parent_directory"]
self.species_folder_name = "_".join(utilities.filter_empty_not_empty_items([self.genus_lowercase.lower(), self.species.lower(), self.sex.lower()])["not_empty"])

Arthur Le Bars
committed
self.existing_folders_cache = {}
self.bam_metadata_cache = {}