From e77216cc9520c01f9310085eb47d6c872f3b87b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20=20MENAGER?= <herve.menager@pasteur.fr> Date: Thu, 8 Mar 2018 21:07:40 +0100 Subject: [PATCH] migrate TestPKDescription (fix #29) Former-commit-id: 1acca29b42cdc5370aeb1b0f13eb6a37f82e440f --- .../management/commands/import_v1_data.py | 52 +++++++++++++++---- .../migrations/0029_auto_20180308_1935.py | 20 +++++++ .../0030_testpkdescription_concentration.py | 20 +++++++ ippisite/ippidb/models.py | 4 +- 4 files changed, 86 insertions(+), 10 deletions(-) create mode 100644 ippisite/ippidb/migrations/0029_auto_20180308_1935.py create mode 100644 ippisite/ippidb/migrations/0030_testpkdescription_concentration.py diff --git a/ippisite/ippidb/management/commands/import_v1_data.py b/ippisite/ippidb/management/commands/import_v1_data.py index c14585e2..42c45eb7 100644 --- a/ippisite/ippidb/management/commands/import_v1_data.py +++ b/ippisite/ippidb/management/commands/import_v1_data.py @@ -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 + CompoundAction, TestCytotoxDescription, TestPKDescription class MyConverter(mysql.connector.conversion.MySQLConverter): @@ -61,7 +61,7 @@ class Command(BaseCommand): action='store_true', dest='ppi', default=False, - help='Flush and migrate ppis and complexes', + help='Flush and migrate ppis, complexes, and tests', ) parser.add_argument( '--mddr', @@ -84,13 +84,6 @@ class Command(BaseCommand): default=False, help='Flush and migrate compounds-bibliography', ) - parser.add_argument( - '--test-activity-description', - action='store_true', - dest='test-activity-description', - default=False, - help='Flush and migrate test activity descriptions', - ) parser.add_argument( '--stoponfail', action='store_true', @@ -392,6 +385,47 @@ select distinct protein.NumUniprot, domain.PfamNumAccession , complexe.NbCopy, else: self.stdout.write( self.style.SUCCESS('Successfully inserted {}'.format(row[2]))) + cursor.execute("""SELECT * FROM testPKDescription""") + rows = cursor.fetchall() + TestPKDescription.objects.all().delete() + self.stdout.write( + self.style.SUCCESS('Successfully flushed test PK descriptions table')) + for row in rows: + try: + tpd = TestPKDescription() + cursor.execute( + """select IDSource from biblio where IDBiblio={}""".format(row[1])) + biblio_row = cursor.fetchone() + biblio = Bibliography.objects.get(id_source=biblio_row[0]) + tpd.biblio = biblio + tpd.test_name = row[2] + #tcd.compound_concentration = row[4] + try: + taxonomy = Taxonomy.objects.get(taxonomy_id=10090) + except Taxonomy.DoesNotExist: + taxonomy = Taxonomy() + taxonomy.taxonomy_id = 10090 + # dirty hack: all organisms in this table are "mice", + # hence assuming Mus musculus + taxonomy.save(autofill=True) + tpd.organism = taxonomy + tpd.administration_mode = row[4] + tpd.concentration = row[5] + tpd.dose = round(row[6], 4) + tpd.dose_interval = row[7] + tpd.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[2]))) if options['mddr']: from pybel import readfile MDDRCompoundImport.objects.all().delete() diff --git a/ippisite/ippidb/migrations/0029_auto_20180308_1935.py b/ippisite/ippidb/migrations/0029_auto_20180308_1935.py new file mode 100644 index 00000000..7e2c9f63 --- /dev/null +++ b/ippisite/ippidb/migrations/0029_auto_20180308_1935.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2018-03-08 19:35 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0028_auto_20180307_1405'), + ] + + operations = [ + migrations.AlterField( + model_name='testpkdescription', + name='dose', + field=models.DecimalField(blank=True, decimal_places=4, max_digits=9, null=True, verbose_name='Dose in mg/kg'), + ), + ] diff --git a/ippisite/ippidb/migrations/0030_testpkdescription_concentration.py b/ippisite/ippidb/migrations/0030_testpkdescription_concentration.py new file mode 100644 index 00000000..3522e6e9 --- /dev/null +++ b/ippisite/ippidb/migrations/0030_testpkdescription_concentration.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2018-03-08 19:45 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0029_auto_20180308_1935'), + ] + + operations = [ + migrations.AddField( + model_name='testpkdescription', + name='concentration', + field=models.DecimalField(blank=True, decimal_places=3, max_digits=7, null=True, verbose_name='Concentration in mg/l'), + ), + ] diff --git a/ippisite/ippidb/models.py b/ippisite/ippidb/models.py index 55e9612f..f9d77052 100644 --- a/ippisite/ippidb/models.py +++ b/ippisite/ippidb/models.py @@ -514,8 +514,10 @@ class TestPKDescription(models.Model): organism = models.ForeignKey(Taxonomy, models.CASCADE) administration_mode = models.CharField( 'Administration mode', max_length=2, choices=ADMINISTRATION_MODES, blank=True, null=True) + concentration = models.DecimalField( + 'Concentration in mg/l', max_digits=7, decimal_places=3, blank=True, null=True) dose = models.DecimalField( - 'Dose in mg/kg', max_digits=7, decimal_places=4, blank=True, null=True) + 'Dose in mg/kg', max_digits=9, decimal_places=4, blank=True, null=True) dose_interval = models.IntegerField( 'Dose interval, in hours', blank=True, null=True) -- GitLab