-
Arthur Le Bars authored
Deploy stacks and load data both working, only phaeoexplorer workflow script to finish. Data loading done directly from the script (not calling the container script anymore). Also some polishing.
e434fd52
speciesData.py 4.06 KiB
#!/usr/bin/python
# -*- coding: utf-8 -*-
from _datetime import datetime
import os
import sys
import utilities
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):
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"]
self.date = datetime.today().strftime("%Y-%m-%d")
self.origin = parameters_dictionary["description"]["origin"]
self.performed = parameters_dictionary["data"]["performed_by"]
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"]
self.genus_lowercase = self.genus[0].lower() + self.genus[1:]
self.genus_uppercase = self.genus[0].upper() + self.genus[1:]
self.species_folder_name = "_".join([self.genus_lowercase, self.species, self.strain, self.sex])
self.full_name = ' '.join(utilities.filter_empty_not_empty_items([self.genus_uppercase, self.species, self.strain, self.sex])["not_empty"])
self.abbreviation = " ".join([self.genus_lowercase[0], self.species, self.strain, self.sex])
self.genus_species = self.genus_lowercase + "_" + self.species
self.instance_url = "http://scratchgmodv1:8888/sp/" + self.genus_lowercase + "_" + self.species + "/galaxy/" # Testing with scratchgmodv1 (replace by what?)
self.instance = None
self.history_id = None
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()
self.api_key = None
# 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
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
else:
self.source_data_dir = parameters_dictionary["data"]["parent_directory"]
self.species_folder_name = "_".join(utilities.filter_empty_not_empty_items([self.genus_lowercase,
self.species,
self.strain,
self.sex])["not_empty"])
self.existing_folders_cache = {}
self.bam_metadata_cache = {}
# # Directory/subdirectories where data files are located (fasta, gff, ...)
# self.do_update = False
# Update the instance (in histories corresponding to the input) instead of creating a new one
# self.species_name_regex_litteral = "(?=\w*V)(?=\w*A)(?=\w*R)(?=\w*I)(?=\w*A)(?=\w*B)(?=\w*L)(?=\w*E)\w+"
# Placeholder regex for file matching