Skip to content
Snippets Groups Projects
Commit 6eaf792a authored by Hervé  MENAGER's avatar Hervé MENAGER
Browse files

migrate data for bound and partner protein complexes

(fix #11, fix #23)
parent 6410fe51
No related branches found
No related tags found
No related merge requests found
from django.core.management import BaseCommand, CommandError
import mysql.connector
from ippidb.models import Bibliography, Protein, Taxonomy, MolecularFunction, Domain
from ippidb.models import Bibliography, Protein, Taxonomy, MolecularFunction, \
Domain, ProteinDomainBoundComplex, ProteinDomainPartnerComplex
class Command(BaseCommand):
......@@ -29,6 +30,13 @@ class Command(BaseCommand):
default=False,
help='Flush and migrate domains',
)
parser.add_argument(
'--complexes',
action='store_true',
dest='complexes',
default=False,
help='Flush and migrate complexes',
)
parser.add_argument(
'--stoponfail',
action='store_true',
......@@ -102,4 +110,35 @@ class Command(BaseCommand):
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])))
if options['complexes']:
sql_request_string = '''
select distinct protein.NumUniprot, domain.PfamNumAccession , complexe.NbCopy, cmpdAction.IDComplexeBound from bindingSite inner join ppi on (bindingSite.IDBindingSite=ppi.IDBindingSite1) inner join complexe on (ppi.IDComplexe1=complexe.IDComplexe) left outer join cmpdAction on (complexe.IDComplexe=cmpdAction.IDComplexeBound) inner join protein on (bindingSite.IDProtein=protein.IDProtein) inner join domain on (bindingSite.IDDomain=domain.IDDomain) union select distinct protein.NumUniprot, domain.PfamNumAccession , complexe.NbCopy, cmpdAction.IDComplexeBound from bindingSite inner join ppi on (bindingSite.IDBindingSite=ppi.IDBindingSite2) inner join complexe on (ppi.IDComplexe2=complexe.IDComplexe) left outer join cmpdAction on (complexe.IDComplexe=cmpdAction.IDComplexeBound) inner join protein on (bindingSite.IDProtein=protein.IDProtein) inner join domain on (bindingSite.IDDomain=domain.IDDomain)'''
cursor.execute(sql_request_string)
rows = cursor.fetchall()
ProteinDomainBoundComplex.objects.all().delete()
ProteinDomainPartnerComplex.objects.all().delete()
self.stdout.write(self.style.SUCCESS('Successfully flushed protein domain complex tables'))
for row in rows:
try:
if row[3]=="null":
c = ProteinDomainPartnerComplex()
else:
c = ProteinDomainBoundComplex()
protein = Protein.objects.get(uniprot_id=row[0])
c.protein_id = protein
domain = Domain.objects.get(pfam_acc=row[1])
c.domain_id = domain
c.ppc_copy_nb = row[2]
if isinstance(c, ProteinDomainBoundComplex):
c.ppp_copy_nb_per_p = 1
c.pockets_nb = 1
c.save()
except Exception as e:
if options['stoponfail']:
import traceback
self.stderr.write(traceback.format_exc())
raise CommandError('Failed inserting {} {}'.format(row[0], row[1]))
else:
self.stdout.write(self.style.ERROR('Failed inserting {} {}'.format(row[0], row[1])))
else:
self.stdout.write(self.style.SUCCESS('Successfully inserted {} {}'.format(row[0], row[1])))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment