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

migrate Compound activity results (fix #15)

Former-commit-id: 5a5f698c25d82c03c96cb49900bd47282946fe9c
parent cd007be6
No related branches found
No related tags found
No related merge requests found
......@@ -7,7 +7,7 @@ import mysql.connector
from ippidb.models import Bibliography, Protein, Taxonomy, MolecularFunction, \
Domain, ProteinDomainBoundComplex, ProteinDomainPartnerComplex, Symmetry, Ppi, PpiComplex, Disease, \
Compound, MDDRCompoundImport, MDDRActivityClass, TestActivityDescription, CellLine, RefCompoundBiblio, \
CompoundAction, TestCytotoxDescription, TestPKDescription
CompoundAction, TestCytotoxDescription, TestPKDescription, CompoundActivityResult
class MyConverter(mysql.connector.conversion.MySQLConverter):
......@@ -319,6 +319,7 @@ select distinct protein.NumUniprot, domain.PfamNumAccession , complexe.NbCopy,
TestActivityDescription.objects.all().delete()
self.stdout.write(
self.style.SUCCESS('Successfully flushed test activity descriptions table'))
tad_id_mapping = {}
for row in rows:
try:
tad = TestActivityDescription()
......@@ -342,6 +343,7 @@ select distinct protein.NumUniprot, domain.PfamNumAccession , complexe.NbCopy,
tad.cell_line, created = CellLine.objects.get_or_create(
name=row[16])
tad.save()
tad_id_mapping[row[0]] = tad.id
except Exception as e:
if options['stoponfail']:
import traceback
......@@ -354,6 +356,33 @@ select distinct protein.NumUniprot, domain.PfamNumAccession , complexe.NbCopy,
else:
self.stdout.write(
self.style.SUCCESS('Successfully inserted {}'.format(row[2])))
cursor.execute("""select c.CanonicalSmile, r.IDTestActivity, r.ActivityType, r.Activity, r.PourcentInhib from cmpdActiveResult as r inner join compound as c on r.IDCompound = c.IDCompound;""")
rows = cursor.fetchall()
CompoundActivityResult.objects.all().delete()
self.stdout.write(
self.style.SUCCESS('Successfully flushed compound activity result table'))
for row in rows:
try:
car = CompoundActivityResult()
car.test_activity_description = TestActivityDescription.objects.get(id=tad_id_mapping[row[1]])
car.compound = Compound.objects.get(canonical_smile=row[0])
car.activity_type = row[2]
car.activity = row[3]
car.inhibition_percentage = row[4]
car.modulation_type = 'I' # because previous DB is only about inhibitors
car.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(str(car))))
cursor.execute("""SELECT * FROM testCytotoxDescription""")
rows = cursor.fetchall()
TestCytotoxDescription.objects.all().delete()
......
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2018-03-08 21:12
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ippidb', '0030_testpkdescription_concentration'),
]
operations = [
migrations.AddField(
model_name='compoundactivityresult',
name='inhibition_percentage',
field=models.DecimalField(decimal_places=0, max_digits=3, null=True, verbose_name='Inhibition percentage'),
),
]
......@@ -477,6 +477,8 @@ class CompoundActivityResult(models.Model):
'Activity type', max_length=5, choices=ACTIVITY_TYPES)
activity = models.DecimalField(
'Activity', max_digits=12, decimal_places=10)
inhibition_percentage = models.DecimalField(
'Inhibition percentage', max_digits=3, decimal_places=0, null=True)
modulation_type = models.CharField(
'Modulation type', max_length=1, choices=MODULATION_TYPES)
......@@ -484,6 +486,8 @@ class CompoundActivityResult(models.Model):
unique_together = (
('compound', 'test_activity_description', 'activity_type'),)
def __str__(self):
return 'Compound activity result for {} test {} on {}'.format(self.activity_type, self.test_activity_description.id, self.compound.id)
class TestCytotoxDescription(models.Model):
biblio = models.ForeignKey(Bibliography, models.CASCADE)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment