Skip to content
Snippets Groups Projects
Select Git revision
  • db3da4acafc6a775b51decced904b5ab0edc4724
  • development default
  • production protected
3 results

NodeCache.py

Blame
  • user avatar
    AndiMajore authored
    Former-commit-id: e064c2ed7ee312a0e6efb5ce07125e7cd2c38fa7 [formerly ee0efdbd94033f23904dae682523e5f0adf5fac7]
    Former-commit-id: 2f82b1ea117749164c5a9241805dfe160cf1effb
    db3da4ac
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    NodeCache.py 1.95 KiB
    from collections import defaultdict
    import drugstone.models as models
    
    
    class NodeCache:
    
        proteins = dict()
        entrez_to_uniprot = defaultdict(lambda: set())
        gene_name_to_uniprot = defaultdict(lambda: set())
        disorders = dict()
        drugs = dict()
    
        def init_protein_maps(self):
            print("Generating protein id maps...")
            for protein in self.proteins.values():
                self.entrez_to_uniprot[protein.entrez].add(protein.uniprot_code)
                self.gene_name_to_uniprot[protein.gene].add(protein.uniprot_code)
    
        def init_proteins(self):
            if len(self.proteins) == 0:
                print("Generating protein maps...")
                for protein in models.Protein.objects.all():
                    self.proteins[protein.uniprot_code] = protein
            if len(self.proteins) > 0 and (len(self.entrez_to_uniprot) == 0 or len(self.gene_name_to_uniprot) == 0):
                self.init_protein_maps()
    
    
        def init_drugs(self):
            if len(self.drugs) == 0:
                print("Generating drug map...")
                for drug in models.Drug.objects.all():
                    self.drugs[drug.drug_id] = drug
    
        def init_disorders(self):
            if len(self.disorders) == 0:
                print("Generating disorder map...")
                for disorder in models.Disorder.objects.all():
                    self.disorders[disorder.mondo_id] = disorder
    
    
        def get_protein_by_uniprot(self,uniprot_id):
            return self.proteins[uniprot_id]
    
        def get_proteins_by_entrez(self,entrez_id):
            out = list()
            for g in self.entrez_to_uniprot[entrez_id]:
                out.append(self.proteins[g])
            return out
    
        def get_proteins_by_gene(self, gene_name):
            out = list()
            for g in self.gene_name_to_uniprot[gene_name]:
                out.append(self.proteins[g])
            return out
    
        def get_drug_by_drugbank(self, drugbank_id):
            return self.drugs[drugbank_id]
    
        def get_disorder_by_mondo(self, mondo_id):
            return self.disorders[mondo_id]