From 740d325dd7000a74318d6bb31f826238c9638a74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20=20MENAGER?= <herve.menager@pasteur.fr> Date: Mon, 27 Mar 2017 16:40:32 +0200 Subject: [PATCH] include new parts in the application model. --- ippisite/db.sqlite3 | Bin 360448 -> 512000 bytes .../migrations/0005_auto_20170327_1301.py | 54 ++++ .../migrations/0006_auto_20170327_1439.py | 117 +++++++ ippisite/ippidb/models.py | 286 +++++------------- 4 files changed, 255 insertions(+), 202 deletions(-) create mode 100644 ippisite/ippidb/migrations/0005_auto_20170327_1301.py create mode 100644 ippisite/ippidb/migrations/0006_auto_20170327_1439.py diff --git a/ippisite/db.sqlite3 b/ippisite/db.sqlite3 index 7f26c319de03013d8a2ee4fd4574e563dd1dd02c..46aaf4b6776a9bf725d217f85d4bf10ccacee955 100644 GIT binary patch delta 11455 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 delta 1209 zcmZ`$ZD?Cn7(VCRbM8%=+;f^pmeq9bZfVKVHc8VuyEb%9YQI+9)Pgn^oy|gMQ|xD! z6_jm>)DDN6jTgK)KcWow^=HMDT`h%ezbrx_!#|3f!C&e`5XLM;L{HMSg^K6pKJRm$ z!~5L#Jty_q?o?{WoWtS<0EGFsvA)aHHCDKR=kH0vCCu&@5Bk|(>`(RwyPvZRCfVaJ zrY&6bri~mcIyl(($Q&)EWmPJ7=0eJ+rrffl8H=<VSmiZUQWWB5pU7*xd_`8*Jk!vk zPI|wBKDE}@4(HS{-%jXP&-hM0X_K>n{m#B&-?Jr_Wm9yCzQHQxETwdih3GlvrK_}# z=IOKSC_B3z+;vD+v#tAJZzl8@rXPbwHKf!KP6$xx!3<QmZglY$ODnf@um=kKPpTBG zBUzcpBa6fTV{zoa7Du>6o1vge&!4s$3fqI<LAOCIglpkXnUD>eu7PEqJ9xgn(ZyEg z>W5pqN6c6Nn+<Osa?#31t3{@3TKyn&6pfvk&<-Qd#m4|3_sh$bCxkW{P^Emz5}@0H z&v{YS=8p=v+YjbM0U|$mZ#|vo)lZc?>PuKt!m1LQODL9b9X6HR?2o5Dud;v`kcW)@ z2Gw8|Bchii$pO4*YAO2_#DrDhOVj`#>ibggU07BY0XWbh+Mjc4d%DPO{azaW08wj5 z+to#!+Vwc8!1d{1P+N(U8tBvfBce@{M@XwSJVL6ZI%V%zWHhFoib6Yd>x(n6EAYX* zgoQR_)1-Onv=!O52Y-x{P_um@^&xnLU!Mm{=iu}P>EgsyR2-aCVQd7w8)Pph{rm__ zaI(KhnmF+l3D)HWY1MQF=b=D_UQNoQUD#y6ujE3?MTF_Bp;-K;-uo>I8xV4F*@^V8 z@1bUNW1h6LCy>uI(-%2@Jeg3&#-~oihT_p=!WqCo=p^>r+N(E7rLnn%Zzti??`v<} zBn^iuoB6g0cD~)2hz`f5;?d!FM2U{S9#@|6_#12oFhI4Q#hybidHl-ZmiE_r!tD)x z)+R1jSI_p0kB%#e$V5Cgmbi3_l+Oq=c!9v+e*6v)K>-M7Q6nsXf^<O|kac-lZlbp- zSZC(dEoRou)8^vkUA_DukD&BI+AP{*ZKb!=F5E?4{lOj754GjH=pPIKy2B@5LHa;9 zxxBMlOaU3Vffy74xkXYWh!=z~`WYo*CvdZR*#Q7^-3XBZk(Y`e@ls9He;Xw>q@|9L J{G|y}{x9CKA$0%% diff --git a/ippisite/ippidb/migrations/0005_auto_20170327_1301.py b/ippisite/ippidb/migrations/0005_auto_20170327_1301.py new file mode 100644 index 00000000..0bab3b53 --- /dev/null +++ b/ippisite/ippidb/migrations/0005_auto_20170327_1301.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2017-03-27 13:01 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0004_auto_20170314_1449'), + ] + + operations = [ + migrations.CreateModel( + name='CellLine', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=50, unique=True, verbose_name='Name')), + ], + ), + migrations.CreateModel( + name='TestActivityDescription', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('test_name', models.CharField(max_length=100, verbose_name='Test name')), + ('test_type', models.CharField(choices=[('BIOCH', 'Biochemical assay'), ('CELL', 'Cellular assay')], max_length=5, verbose_name='Test type')), + ('test_modulation_type', models.CharField(choices=[('B', 'Binding'), ('I', 'Inhibition'), ('S', 'Stabilization')], max_length=1, verbose_name='Test modulation type')), + ('nb_active_compounds', models.IntegerField(verbose_name='Total number of active compounds')), + ('biblio_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Bibliography')), + ('cell_line', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.CellLine')), + ('complex_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.ProteinDomainBoundComplex')), + ('ppi_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ippidb.Ppi')), + ], + ), + migrations.AlterModelOptions( + name='mddrcompoundactivityclass', + options={'verbose_name_plural': 'MDDR compound activity classes'}, + ), + migrations.AlterModelOptions( + name='mddrcompoundimport', + options={'verbose_name_plural': 'MDDR compound imports'}, + ), + migrations.AlterModelOptions( + name='mddrsimilarity', + options={'verbose_name_plural': 'MDDR similarities'}, + ), + migrations.AlterField( + model_name='taxonomy', + name='taxonomy_id', + field=models.DecimalField(decimal_places=0, max_digits=9, unique=True, verbose_name='NCBI TaxID'), + ), + ] diff --git a/ippisite/ippidb/migrations/0006_auto_20170327_1439.py b/ippisite/ippidb/migrations/0006_auto_20170327_1439.py new file mode 100644 index 00000000..aaa0b992 --- /dev/null +++ b/ippisite/ippidb/migrations/0006_auto_20170327_1439.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2017-03-27 14:39 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0005_auto_20170327_1301'), + ] + + operations = [ + migrations.CreateModel( + name='ActivityType', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=50, unique=True, verbose_name='Name')), + ], + ), + migrations.CreateModel( + name='AdministrationMode', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, max_length=20, null=True, verbose_name='Administration mode')), + ], + ), + migrations.CreateModel( + name='CmpdAction', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('activation_mode', models.CharField(choices=[('O', 'Orthosteric'), ('A', 'Allosteric'), ('U', 'Unspecified')], max_length=1, verbose_name='Activation mode')), + ('modulation_type', models.CharField(choices=[('I', 'Inhibition'), ('S', 'Stabilization')], max_length=1, verbose_name='Modulation type')), + ('complex_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.ProteinDomainBoundComplex')), + ('compound_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Compound')), + ], + ), + migrations.CreateModel( + name='CompoundActivityResult', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('activity', models.DecimalField(decimal_places=10, max_digits=12, verbose_name='Activity')), + ('activity_type_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.ActivityType')), + ('compound_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Compound')), + ('test_activity_description_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.TestActivityDescription')), + ], + ), + migrations.CreateModel( + name='CompoundCytotoxicityResult', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('toxicity', models.BooleanField(default=False, verbose_name='Toxicity')), + ('compound_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Compound')), + ], + ), + migrations.CreateModel( + name='CompoundPKResult', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('tolerated', models.NullBooleanField(verbose_name='Tolerated')), + ('auc', models.IntegerField(blank=True, null=True, verbose_name='Area under curve (ng.mL-1.hr)')), + ('clearance', models.DecimalField(blank=True, decimal_places=3, max_digits=7, null=True, verbose_name='Clearance (mL/hr)')), + ('cmax', models.DecimalField(blank=True, decimal_places=3, max_digits=7, null=True, verbose_name='Maximal concentration (ng/mL)')), + ('oral_bioavailability', models.IntegerField(blank=True, null=True, verbose_name='Oral Bioavailability (%F)')), + ('t_demi', models.IntegerField(blank=True, null=True, verbose_name='t½')), + ('t_max', models.IntegerField(blank=True, null=True, verbose_name='tmax')), + ('voldistribution', models.DecimalField(blank=True, decimal_places=2, max_digits=5, null=True, verbose_name='Volume distribution (Vd)')), + ('compound_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Compound')), + ], + ), + migrations.CreateModel( + name='TestCytotoxDescription', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('test_name', models.CharField(max_length=100, verbose_name='Cytotoxicity test name')), + ('compound_concentration', models.DecimalField(blank=True, decimal_places=3, max_digits=7, null=True, verbose_name='Compound concentration in μM')), + ('biblio_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Bibliography')), + ('cell_line', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.CellLine')), + ], + ), + migrations.CreateModel( + name='TestPKDescription', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('test_name', models.CharField(max_length=100, verbose_name='Pharmacokinetic test name')), + ('dose', models.DecimalField(blank=True, decimal_places=4, max_digits=7, null=True, verbose_name='Dose in mg/kg')), + ('dose_interval', models.IntegerField(blank=True, null=True, verbose_name='Dose interval, in hours')), + ('administration_mode', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ippidb.AdministrationMode')), + ('biblio_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Bibliography')), + ('organism', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Taxonomy')), + ], + ), + migrations.AddField( + model_name='compoundpkresult', + name='test_pk_description_id', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.TestPKDescription'), + ), + migrations.AddField( + model_name='compoundcytotoxicityresult', + name='test_cytotoxicity_description_id', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.TestCytotoxDescription'), + ), + migrations.AlterUniqueTogether( + name='compoundpkresult', + unique_together=set([('compound_id', 'test_pk_description_id')]), + ), + migrations.AlterUniqueTogether( + name='compoundcytotoxicityresult', + unique_together=set([('compound_id', 'test_cytotoxicity_description_id')]), + ), + migrations.AlterUniqueTogether( + name='compoundactivityresult', + unique_together=set([('compound_id', 'test_activity_description_id', 'activity_type_id')]), + ), + ] diff --git a/ippisite/ippidb/models.py b/ippisite/ippidb/models.py index 5a5abf1b..4ce93714 100644 --- a/ippisite/ippidb/models.py +++ b/ippisite/ippidb/models.py @@ -245,187 +245,111 @@ class MDDRSimilarity(models.Model): unique_together = (('canonical_smile_ippidb', 'canonical_smile_mddr'),) verbose_name_plural = "MDDR similarities" -""" -class TestActivityDescription(models.Model): - complex_id = models.ForeignKey(Complex) - biblio_id = models.ForeignKey(Biblio) - idppi = models.ForeignKey(Ppi, models.DO_NOTHING, ='IDPPI', blank=True, null=True) - testnameactivity = models.CharField(='TestNameActivity', max_length=40) - isprimary = models.CharField(='IsPrimary', max_length=1) - protboundconstruct = models.CharField(='ProtBoundConstruct', max_length=11) - testtype = models.CharField(='TestType', max_length=5) - testmodulationtype = models.CharField(='TestModulationType', max_length=13) - nbactivescmpdstot = models.IntegerField(='NbActivesCmpdsTot') - conccmpds = models.DecimalField(='ConcCmpds', max_digits=7, decimal_places=3, blank=True, null=True) - protocol = models.TextField(='Protocol', blank=True, null=True) - concproteinbound = models.DecimalField(='ConcProteinBound', max_digits=7, decimal_places=3, blank=True, null=True) - concprotein2 = models.DecimalField(='ConcProtein2', max_digits=7, decimal_places=3, blank=True, null=True) - controlepos = models.CharField(='ControlePos', max_length=50, blank=True, null=True) - controleneg = models.CharField(='ControleNeg', max_length=50, blank=True, null=True) - cellline = models.CharField(='CellLine', max_length=50, blank=True, null=True) - pepseq = models.CharField(='PepSeq', max_length=100, blank=True, null=True) - marker = models.CharField(='Marker', max_length=35, blank=True, null=True) - - - - - - -class Actionevidencetest(models.Model): - idcmpdaction = models.ForeignKey('Cmpdaction', models.DO_NOTHING, ='IDCmpdAction') - idtestactivity = models.ForeignKey('Testactivitydescription', models.DO_NOTHING, ='IDTestActivity') - nbcopycompound = models.IntegerField(='NbCopyCompound', blank=True, null=True) +class CellLine(models.Model): + name = models.CharField('Name', max_length=50, unique=True) - class Meta: -# managed = False - db_table = 'actionEvidenceTest' - unique_together = (('idcmpdaction', 'idtestactivity'),) - - -class Actionevidencexray(models.Model): - idcmpdaction = models.ForeignKey('Cmpdaction', models.DO_NOTHING, ='IDCmpdAction') - codepdb = models.CharField(='CodePDB', max_length=4) - nbcopycompound = models.IntegerField(='NbCopyCompound') - idbindingsite = models.ForeignKey('Bindingsite', models.DO_NOTHING, ='IDBindingSite') - idbiblio = models.ForeignKey('Biblio', models.DO_NOTHING, ='IDBiblio', blank=True, null=True) +class TestActivityDescription(models.Model): + TEST_TYPES = ( + ('BIOCH', 'Biochemical assay'), + ('CELL', 'Cellular assay') + ) + TEST_MODULATION_TYPES = ( + ('B', 'Binding'), + ('I', 'Inhibition'), + ('S', 'Stabilization') + ) + complex_id = models.ForeignKey(ProteinDomainBoundComplex) + biblio_id = models.ForeignKey(Bibliography) + ppi_id = models.ForeignKey(Ppi, blank=True, null=True) + test_name = models.CharField('Test name', max_length=100) + test_type = models.CharField('Test type', max_length=5, choices=TEST_TYPES) + test_modulation_type = models.CharField('Test modulation type', max_length=1, choices=TEST_MODULATION_TYPES) + nb_active_compounds = models.IntegerField('Total number of active compounds') + cell_line = models.ForeignKey(CellLine) + +class ActivityType(models.Model): + name = models.CharField('Name', max_length=50, unique=True) + +class CompoundActivityResult(models.Model): + compound_id = models.ForeignKey(Compound) + test_activity_description_id = models.ForeignKey(TestActivityDescription) + activity_type_id = models.ForeignKey(ActivityType) + activity = models.DecimalField('Activity', max_digits=12, decimal_places=10) class Meta: -# managed = False - db_table = 'actionEvidenceXRay' - unique_together = (('idcmpdaction', 'codepdb'),) + unique_together = (('compound_id', 'test_activity_description_id', 'activity_type_id'),) +class TestCytotoxDescription(models.Model): + biblio_id = models.ForeignKey(Bibliography) + test_name = models.CharField('Cytotoxicity test name', max_length=100) + cell_line = models.ForeignKey(CellLine) + compound_concentration = models.DecimalField('Compound concentration in μM', max_digits=7, decimal_places=3, blank=True, null=True) -class Cmpdaction(models.Model): - idcmpdaction = models.AutoField(='IDCmpdAction', primary_key=True) - idcomplexebound = models.ForeignKey('Complexe', models.DO_NOTHING, ='IDComplexeBound') - idcompound = models.ForeignKey('Compound', models.DO_NOTHING, ='IDCompound') - activationmode = models.CharField(='ActivationMode', max_length=11) - modulationtype = models.CharField(='ModulationType', max_length=10) +class CompoundCytotoxicityResult(models.Model): + compound_id = models.ForeignKey(Compound) + test_cytotoxicity_description_id = models.ForeignKey(TestCytotoxDescription) + toxicity = models.BooleanField('Toxicity', default=False) class Meta: -# managed = False - db_table = 'cmpdAction' - - -class Cmpdactiveresult(models.Model): - idcompound = models.ForeignKey('Compound', models.DO_NOTHING, ='IDCompound') - idtestactivity = models.ForeignKey('Testactivitydescription', models.DO_NOTHING, ='IDTestActivity') - activitytype = models.CharField(='ActivityType', max_length=5) - activity = models.DecimalField(='Activity', max_digits=4, decimal_places=2) - pourcentinhib = models.IntegerField(='PourcentInhib', blank=True, null=True) + unique_together = (('compound_id', 'test_cytotoxicity_description_id'),) + +class AdministrationMode(models.Model): + name = models.CharField('Administration mode', max_length=20, blank=True, null=True) + +class TestPKDescription(models.Model): + biblio_id = models.ForeignKey(Bibliography) + test_name = models.CharField('Pharmacokinetic test name', max_length=100) + organism = models.ForeignKey(Taxonomy) + administration_mode = models.ForeignKey(AdministrationMode, blank=True, null=True) + dose = models.DecimalField('Dose in mg/kg', max_digits=7, decimal_places=4, blank=True, null=True) + dose_interval = models.IntegerField('Dose interval, in hours', blank=True, null=True) + +class CompoundPKResult(models.Model): + compound_id = models.ForeignKey(Compound) + test_pk_description_id = models.ForeignKey(TestPKDescription) + tolerated = models.NullBooleanField('Tolerated', null=True) + auc = models.IntegerField('Area under curve (ng.mL-1.hr)', blank=True, null=True) + clearance = models.DecimalField('Clearance (mL/hr)', max_digits=7, decimal_places=3, blank=True, null=True) + cmax = models.DecimalField('Maximal concentration (ng/mL)', max_digits=7, decimal_places=3, blank=True, null=True) + oral_bioavailability = models.IntegerField('Oral Bioavailability (%F)', blank=True, null=True) + t_demi = models.IntegerField('t½', blank=True, null=True) + t_max = models.IntegerField('tmax', blank=True, null=True) + voldistribution = models.DecimalField('Volume distribution (Vd)', max_digits=5, decimal_places=2, blank=True, null=True) class Meta: -# managed = False - db_table = 'cmpdActiveResult' - unique_together = (('idcompound', 'idtestactivity', 'activitytype'),) - + unique_together = (('compound_id', 'test_pk_description_id'),) -class Cmpdcytotoxresult(models.Model): - idcompound = models.ForeignKey('Compound', models.DO_NOTHING, ='IDCompound') - idtestcytotox = models.ForeignKey('Testcytotoxdescription', models.DO_NOTHING, ='IDTestCytotox') - toxicity = models.CharField(='Toxicity', max_length=1) - - class Meta: -# managed = False - db_table = 'cmpdCytotoxResult' - unique_together = (('idcompound', 'idtestcytotox'),) +class CmpdAction(models.Model): + ACTIVATION_MODES = ( + ('O', 'Orthosteric'), + ('A', 'Allosteric'), + ('U', 'Unspecified') + ) + MODULATION_TYPES = ( + ('I', 'Inhibition'), + ('S', 'Stabilization') + ) + complex_id = models.ForeignKey(ProteinDomainBoundComplex) + compound_id = models.ForeignKey(Compound) + activation_mode = models.CharField('Activation mode', max_length=1, choices=ACTIVATION_MODES) + modulation_type = models.CharField('Modulation type', max_length=1, choices=MODULATION_TYPES) -class Cmpdinactiveresult(models.Model): +"""" +class Actionevidencetest(models.Model): + idcmpdaction = models.ForeignKey('Cmpdaction', models.DO_NOTHING, ='IDCmpdAction') idtestactivity = models.ForeignKey('Testactivitydescription', models.DO_NOTHING, ='IDTestActivity') - idcompound = models.ForeignKey('Compound', models.DO_NOTHING, ='IDCompound') - pourcentinhib = models.IntegerField(='PourcentInhib', blank=True, null=True) - - class Meta: -# managed = False - db_table = 'cmpdInactiveResult' - unique_together = (('idtestactivity', 'idcompound'),) - - -class Cmpdpkresult(models.Model): - idcompound = models.ForeignKey('Compound', models.DO_NOTHING, ='IDCompound') - idtestpk = models.ForeignKey('Testpkdescription', models.DO_NOTHING, ='IDTestPK') - tolerated = models.CharField(='Tolerated', max_length=1) - auc = models.IntegerField(='AUC', blank=True, null=True) - clearance = models.DecimalField(='Clearance', max_digits=7, decimal_places=3, blank=True, null=True) - cmax = models.DecimalField(='Cmax', max_digits=7, decimal_places=3, blank=True, null=True) - oralbioavailability = models.IntegerField(='OralBioavailability', blank=True, null=True) - tdemi = models.IntegerField(='Tdemi', blank=True, null=True) - tmax = models.IntegerField(='Tmax', blank=True, null=True) - voldistribution = models.DecimalField(='VolDistribution', max_digits=5, decimal_places=2, blank=True, null=True) - - class Meta: -# managed = False - db_table = 'cmpdPKResult' - unique_together = (('idcompound', 'idtestpk'),) - - - - class Meta: -# managed = False - db_table = 'disease' - unique_together = (('idppi', 'disease'),) - - -class DjangoMigrations(models.Model): - app = models.CharField(max_length=255) - name = models.CharField(max_length=255) - applied = models.DateTimeField() - - class Meta: -# managed = False - db_table = 'django_migrations' - - -class Domain(models.Model): - iddomain = models.AutoField(='IDDomain', primary_key=True) - pfamid = models.CharField(='PfamID', max_length=20) - pfamnumaccession = models.CharField(='PfamNumAccession', unique=True, max_length=10) - domaindescription = models.CharField(='DomainDescription', max_length=100) - domainfamily = models.CharField(='DomainFamily', max_length=25) - - class Meta: -# managed = False - db_table = 'domain' - -class Mddrsimilarity(models.Model): - idcompound = models.ForeignKey(Compound, models.DO_NOTHING, ='IDCompound') - idmddrcompound = models.ForeignKey(Mddrcompound, models.DO_NOTHING, ='IDMDDRCompound') - versionmddr = models.CharField(='VersionMDDR', max_length=7) - tanimoto = models.DecimalField(='Tanimoto', max_digits=6, decimal_places=5) + nbcopycompound = models.IntegerField(='NbCopyCompound', blank=True, null=True) class Meta: # managed = False - db_table = 'mDDRSimilarity' - unique_together = (('idcompound', 'idmddrcompound', 'versionmddr'),) + db_table = 'actionEvidenceTest' + unique_together = (('idcmpdaction', 'idtestactivity'),) -class Ppi(models.Model): - idppi = models.AutoField(='IDPPI', primary_key=True) - idcomplexe1 = models.ForeignKey(Complexe, models.DO_NOTHING, ='IDComplexe1', related_name='cplx_id_1') - idcomplexe2 = models.ForeignKey(Complexe, models.DO_NOTHING, ='IDComplexe2', related_name='cplx_id_2') - idbindingsite1 = models.ForeignKey(Bindingsite, models.DO_NOTHING, ='IDBindingSite1', related_name='bs_id_1') - idbindingsite2 = models.ForeignKey(Bindingsite, models.DO_NOTHING, ='IDBindingSite2', related_name='bs_id_2') - family = models.CharField(='Family', max_length=25) - class Meta: -# managed = False - db_table = 'ppi' - unique_together = (('idcomplexe1', 'idcomplexe2', 'idbindingsite1', 'idbindingsite2'),) -class Protein(models.Model): - idprotein = models.AutoField(='IDProtein', primary_key=True) - numuniprot = models.CharField(='NumUniprot', unique=True, max_length=10) - protnamelg = models.CharField(='ProtNameLg', max_length=75) - protnamesh = models.CharField(='ProtNameSh', max_length=50) - protalias = models.CharField(='ProtAlias', unique=True, max_length=30) - protnamesp = models.CharField(='ProtNameSp', max_length=30) - organism = models.CharField(='Organism', max_length=80) - - class Meta: -# managed = False - db_table = 'protein' class Refcmpdbiblio(models.Model): @@ -438,46 +362,4 @@ class Refcmpdbiblio(models.Model): db_table = 'refCmpdBiblio' unique_together = (('idcompound', 'idbiblio'),) - -class Refproteinfonction(models.Model): - idprotein = models.ForeignKey(Protein, models.DO_NOTHING, ='IDProtein') - protfonctionsp = models.CharField(='ProtFonctionSP', max_length=200) - - class Meta: -# managed = False - db_table = 'refProteinFonction' - unique_together = (('protfonctionsp', 'idprotein'),) - - - - class Meta: -# managed = False - db_table = 'testActivityDescription' - - -class Testcytotoxdescription(models.Model): - idtestcytotox = models.AutoField(='IDTestCytotox', primary_key=True) - idbiblio = models.ForeignKey(Biblio, models.DO_NOTHING, ='IDBiblio') - testnamecytotox = models.CharField(='TestNameCytotox', max_length=40) - cellline = models.CharField(='CellLine', max_length=50) - conccmpd = models.DecimalField(='ConcCmpd', max_digits=7, decimal_places=3, blank=True, null=True) - - class Meta: -# managed = False - db_table = 'testCytotoxDescription' - - -class Testpkdescription(models.Model): - idtestpk = models.AutoField(='IDTestPK', primary_key=True) - idbiblio = models.ForeignKey(Biblio, models.DO_NOTHING, ='IDBiblio') - testnamepk = models.CharField(='TestNamePK', max_length=40) - animal = models.CharField(='Animal', max_length=100) - administrationmode = models.CharField(='AdministrationMode', max_length=2, blank=True, null=True) - concentration = models.DecimalField(='Concentration', max_digits=7, decimal_places=3, blank=True, null=True) - dose = models.DecimalField(='Dose', max_digits=7, decimal_places=2, blank=True, null=True) - doseinterval = models.IntegerField(='DoseInterval', blank=True, null=True) - - class Meta: -# managed = False - db_table = 'testPKDescription' """ -- GitLab