diff --git a/ippisite/ippidb/management/commands/import_v1_data.py b/ippisite/ippidb/management/commands/import_v1_data.py index 533a9d6dd8140c86081619cbd63de8571b93b3c8..df53a3ea9933d445d35960694b12d6a97919af3b 100644 --- a/ippisite/ippidb/management/commands/import_v1_data.py +++ b/ippisite/ippidb/management/commands/import_v1_data.py @@ -3,11 +3,10 @@ import glob from django.utils import timezone from django.core.management import BaseCommand, CommandError import mysql.connector -from pybel import readfile from ippidb.models import Bibliography, Protein, Taxonomy, MolecularFunction, \ Domain, ProteinDomainBoundComplex, ProteinDomainPartnerComplex, Symmetry, Ppi, PpiComplex, Disease, \ - Compound, MDDRCompoundImport, MDDRActivityClass, TestActivityDescription, CellLine + Compound, MDDRCompoundImport, MDDRActivityClass, TestActivityDescription, CellLine, RefCompoundBiblio class MyConverter(mysql.connector.conversion.MySQLConverter): @@ -77,6 +76,13 @@ class Command(BaseCommand): default=False, help='Flush and migrate compounds', ) + parser.add_argument( + '--compound-biblio', + action='store_true', + dest='compoundbiblio', + default=False, + help='Flush and migrate compounds-bibliography', + ) parser.add_argument( '--test-activity-description', action='store_true', @@ -301,6 +307,7 @@ select distinct protein.NumUniprot, domain.PfamNumAccession , complexe.NbCopy, self.stdout.write( self.style.SUCCESS('Successfully inserted {}'.format(row[2]))) if options['mddr']: + from pybel import readfile MDDRCompoundImport.objects.all().delete() MDDRActivityClass.objects.all().delete() self.stdout.write( @@ -409,3 +416,30 @@ select distinct protein.NumUniprot, domain.PfamNumAccession , complexe.NbCopy, else: self.stdout.write( self.style.SUCCESS('Successfully inserted {} {}'.format(row[1], row[2]))) + if options['compoundbiblio']: + cursor.execute("""select r.CmpdNameInBiblio, c.CanonicalSmile, b.IDSource from refCmpdBiblio as r inner join compound as c on r.IDCompound=c.IDCompound inner join biblio as b on r.IDBiblio=b.IDBiblio;""") + rows = cursor.fetchall() + RefCompoundBiblio.objects.all().delete() + self.stdout.write( + self.style.SUCCESS('Successfully flushed compound-biblio table')) + for row in rows: + try: + c = Compound.objects.get(canonical_smile=row[1]) + b = Bibliography.objects.get(id_source=row[2]) + r = RefCompoundBiblio() + r.compound_id = c.id + r.bibliography_id = b.id + r.compound_name = row[0] + r.save() + except Exception as e: + if options['stoponfail']: + import traceback + self.stderr.write(traceback.format_exc()) + raise CommandError( + 'Failed inserting {} {}'.format(row[1], row[2])) + else: + self.stdout.write( + self.style.ERROR('Failed inserting {} {}'.format(row[1], row[2]))) + else: + self.stdout.write( + self.style.SUCCESS('Successfully inserted {} {}'.format(row[1], row[2])))