diff --git a/ippisite/db.sqlite3 b/ippisite/db.sqlite3 index 89d5cf044b79d1546780d04ccc912a4742b52c8c..4322d387f7390adb118f06d2b776199986ca1340 100644 Binary files a/ippisite/db.sqlite3 and b/ippisite/db.sqlite3 differ diff --git a/ippisite/ippidb/management/commands/import_v1_data.py b/ippisite/ippidb/management/commands/import_v1_data.py index 5d6592cc642cec1bcbbe1e0e411930ac3fec7eed..11861016c345b4d89e79b9960b7ddb8fce10db9e 100644 --- a/ippisite/ippidb/management/commands/import_v1_data.py +++ b/ippisite/ippidb/management/commands/import_v1_data.py @@ -1,7 +1,7 @@ from django.core.management import BaseCommand, CommandError import mysql.connector -from ippidb.models import Bibliography, Protein, Taxonomy, MolecularFunction +from ippidb.models import Bibliography, Protein, Taxonomy, MolecularFunction, Domain class Command(BaseCommand): @@ -22,6 +22,13 @@ class Command(BaseCommand): default=False, help='Flush and migrate proteins', ) + parser.add_argument( + '--domains', + action='store_true', + dest='domains', + default=False, + help='Flush and migrate domains', + ) parser.add_argument( '--stoponfail', action='store_true', @@ -75,4 +82,24 @@ 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['domains']: + cursor.execute("""SELECT * FROM domain""") + rows = cursor.fetchall() + Domain.objects.all().delete() + self.stdout.write(self.style.SUCCESS('Successfully flushed domain table')) + for row in rows: + try: + p = Domain() + p.pfam_acc = row[2] + p.domain_family = row[4] + p.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]))) diff --git a/ippisite/ippidb/migrations/0007_auto_20170328_2045.py b/ippisite/ippidb/migrations/0007_auto_20170328_2045.py new file mode 100644 index 0000000000000000000000000000000000000000..47a59cc6b02bd96637dc325113682f9f3a82d2fc --- /dev/null +++ b/ippisite/ippidb/migrations/0007_auto_20170328_2045.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.5 on 2017-03-28 20:45 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('ippidb', '0006_auto_20170327_1439'), + ] + + operations = [ + migrations.RenameField( + model_name='domain', + old_name='domainfamily', + new_name='domain_family', + ), + ] diff --git a/ippisite/ippidb/models.py b/ippisite/ippidb/models.py index 4ce93714c4252e463804ef049342e5a135f2f92d..325a849ee7e96127cc8e42639192b4d5c8927432 100644 --- a/ippisite/ippidb/models.py +++ b/ippisite/ippidb/models.py @@ -3,7 +3,7 @@ from __future__ import unicode_literals from django.db import models from django.forms import ModelForm -from .ws import get_pubmed_info, get_epo_info, get_uniprot_info, get_taxonomy_info, get_go_info +from .ws import get_pubmed_info, get_epo_info, get_uniprot_info, get_taxonomy_info, get_go_info, get_pfam_info class Bibliography(models.Model): """ @@ -111,7 +111,13 @@ class Domain(models.Model): pfam_acc = models.CharField('Pfam Accession', max_length=10, unique=True) pfam_id = models.CharField('Pfam Family Identifier', max_length=20) pfam_description = models.CharField('Pfam Description', max_length=100) - domainfamily = models.CharField('Domain family', max_length=25) #TODO: what is this field? check database contents + domain_family = models.CharField('Domain family', max_length=25) #TODO: what is this field? check database contents + + def save(self, *args, **kwargs): + info = get_pfam_info(self.pfam_acc) + self.pfam_id = info['id'] + self.pfam_description = info['description'] + super(Domain, self).save(*args, **kwargs) class ProteinDomainComplex(models.Model): protein_id = models.ForeignKey('Protein')