from Modules.Ensembl.ActivityTable import ActivityTable
from Modules.Ensembl.FTPHandling.VersionChecker import EnsemblRegulationFTPRetriever as FTPRetriever
from Modules.Ensembl.ActivityCategorizer import ActivityCategorizer
from Modules.Ensembl.GTFGen import GTFGen


class Ensembl:

    """
    Main class for handling Ensembl Regulatory data
    Checks for local files and downloads if files are missing
    """

    def __init__(self, organism, wd, data_dir):
        print("Starting Ensembl")
        self.updater = FTPRetriever(organism, wd, data_dir)
        self.release = self.updater.get_release()
        self.acttable = ActivityTable(organism, self.release, wd, data_dir)
        self.acttable.check_and_generate_activity_table()
        self.categorizer = ActivityCategorizer(self.release, organism, wd, data_dir)
        print("Generating GTF")
        self.gtf_generator = GTFGen(organism, self.release, wd, data_dir)

        print("Ensembl Finished !")

    def get_gtf(self):
        return self.gtf_generator.get_gtf(self.release, self.categorizer.get_categorization())

#e = Ensembl("homo_sapiens")
#print(len(e.categorizer.categorization))