diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 812cfe615eee8823129b9a9251414ce578c3e2e3..d12312112da50a2cd491bc44a543ef19e56e5e38 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -27,6 +27,8 @@ deploy-webserver:
     - mkdir -p ~/.ssh
     - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
   script:
+    - pwd
+    - ls
     - yum install -y epel-release wget
     - yum install -y gcc
     - wget https://centos7.iuscommunity.org/ius-release.rpm
diff --git a/ansible/deploy.yaml b/ansible/deploy.yaml
index 94a646ad6461fcfbe0c1dbd86119c9d98a1d9855..e61a3abd3935678578876b86695826efcd7b008e 100644
--- a/ansible/deploy.yaml
+++ b/ansible/deploy.yaml
@@ -64,23 +64,27 @@
       command: service postgresql initdb 
       args:
         creates: /var/lib/pgsql/data/postgresql.conf
-    - name: Start PostgreSQL and enable at boot
-      service: name=postgresql
-               enabled=yes
-               state=started
     - name: Ensure PostgreSQL is listening on all localhost
       lineinfile: dest=/var/lib/pgsql/data/postgresql.conf
         regexp='^#?listen_addresses\s*='
         line="listen_addresses = '*'"
         state=present
-    - lineinfile: dest=/var/lib/pgsql/data/pg_hba.conf
-                  regexp='host\s+all\s+all\s+127.0.0.1/32\s+md5'
-                  line='host all all 127.0.0.1/32 md5'
-                  insertbefore=BOF
+    - name: copy pg_hba.conf file
+      copy: 
+        src: pg_hba.conf 
+        dest: /var/lib/pgsql/data/pg_hba.conf
+        owner: postgres
+        group: postgres
     - name: restart postgresql service
       systemd: state=restarted name=postgresql enabled=yes
-    - postgresql_user:
+    - name: create db in postgresql
+      become_user: "postgres"
+      postgresql_db:
+        name: "{{ dbname }}"
+        owner: "{{ dbuser }}"
+    - name: create db user
       become_user: "postgres"
+      postgresql_user:
         name: "{{ dbuser }}"
         password: "{{ dbpassword }}"
         role_attr_flags: CREATEDB,NOSUPERUSER
diff --git a/ansible/pg_hba.conf b/ansible/pg_hba.conf
new file mode 100644
index 0000000000000000000000000000000000000000..687ac4d2f8d31ccaada17309eb0bebd5e6366ef1
--- /dev/null
+++ b/ansible/pg_hba.conf
@@ -0,0 +1,4 @@
+# iPPIDB PostgreSQL Client Authentication Configuration File
+# DO NOT EDIT THIS FILE, IT IS AUTOMATICALLY DEPLOYED FROM ANSIBLE
+local   all             all                                     peer
+host    all             all              ::1/128                md5
\ No newline at end of file
diff --git a/ippisite/db.sqlite3.REMOVED.git-id b/ippisite/db.sqlite3.REMOVED.git-id
index 3aa44d8e1381a4426d9846db700342d66385fc61..5e73a6d903ca43ff367e62ae4a49ef63a2df33db 100644
--- a/ippisite/db.sqlite3.REMOVED.git-id
+++ b/ippisite/db.sqlite3.REMOVED.git-id
@@ -1 +1 @@
-9444e1693d0cd7fdbabce38112ae5142691472b9
\ No newline at end of file
+a95c9b99cc69a1cae8a8fa13dfa234ef88d45f4e
\ No newline at end of file
diff --git a/ippisite/ippidb/management/commands/import_v1_data.py b/ippisite/ippidb/management/commands/import_v1_data.py
index e06733ba84aaf60b0b4759589dc92216641f5431..9985399150f5309a6d2606d01c1ca6343d03f637 100644
--- a/ippisite/ippidb/management/commands/import_v1_data.py
+++ b/ippisite/ippidb/management/commands/import_v1_data.py
@@ -503,7 +503,7 @@ select distinct protein.NumUniprot, domain.PfamNumAccession  , complexe.NbCopy,
                     cpr.tolerated = row[2] == 'Y'
                     cpr.auc = row[3]
                     cpr.clearance = row[4]
-                    cpr.cmax = row[5]
+                    cpr.c_max = row[5]
                     cpr.oral_bioavailability = row[6]
                     cpr.t_demi = row[7]
                     cpr.t_max = row[8]
@@ -538,7 +538,7 @@ select distinct protein.NumUniprot, domain.PfamNumAccession  , complexe.NbCopy,
                         m.dvpmt_phase = item.data['PHASE']
                         m.db_import_date = timezone.now()
                         m.save()
-                        for activity_class_name in item.data['ACTIV_CLASS'].split(','):
+                        for activity_class_name in item.data['ACTIV_CLASS'].split('\n'):
                             activity_class, created = MDDRActivityClass.objects.get_or_create(
                                 name=activity_class_name)
                             m.activity_classes.add(activity_class)
diff --git a/ippisite/ippidb/migrations/0001_squashed_0035_auto_20180725_1347.py b/ippisite/ippidb/migrations/0001_squashed_0035_auto_20180725_1347.py
new file mode 100644
index 0000000000000000000000000000000000000000..c088946f1035b6daf47ebba692790edb7fc8d1ac
--- /dev/null
+++ b/ippisite/ippidb/migrations/0001_squashed_0035_auto_20180725_1347.py
@@ -0,0 +1,465 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11 on 2018-07-25 14:00
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    replaces = [('ippidb', '0001_initial'), ('ippidb', '0002_auto_20170221_1606'), ('ippidb', '0003_auto_20170313_1948'), ('ippidb', '0004_auto_20170314_1449'), ('ippidb', '0005_auto_20170327_1301'), ('ippidb', '0006_auto_20170327_1439'), ('ippidb', '0007_auto_20170328_2045'), ('ippidb', '0008_auto_20170329_1441'), ('ippidb', '0009_auto_20170517_2020'), ('ippidb', '0010_auto_20170518_1142'), ('ippidb', '0011_auto_20170518_1404'), ('ippidb', '0012_auto_20170518_1913'), ('ippidb', '0013_auto_20170518_1943'), ('ippidb', '0014_auto_20170519_1243'), ('ippidb', '0015_auto_20170519_1442'), ('ippidb', '0016_auto_20170519_1453'), ('ippidb', '0017_auto_20170519_1500'), ('ippidb', '0018_auto_20170522_1501'), ('ippidb', '0019_auto_20170522_1931'), ('ippidb', '0020_auto_20170522_1945'), ('ippidb', '0021_auto_20170522_1949'), ('ippidb', '0022_auto_20170523_1311'), ('ippidb', '0023_auto_20170523_1858'), ('ippidb', '0024_auto_20170523_2000'), ('ippidb', '0025_auto_20171110_1046'), ('ippidb', '0026_auto_20171110_1426'), ('ippidb', '0027_auto_20180307_1327'), ('ippidb', '0028_auto_20180307_1405'), ('ippidb', '0029_auto_20180308_1935'), ('ippidb', '0030_testpkdescription_concentration'), ('ippidb', '0031_compoundactivityresult_inhibition_percentage'), ('ippidb', '0032_lellebiplotdata'), ('ippidb', '0033_auto_20180502_1500'), ('ippidb', '0034_auto_20180503_2110'), ('ippidb', '0035_auto_20180725_1347')]
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Bibliography',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('source', models.CharField(choices=[('PM', 'PubMed ID'), ('PT', 'Patent'), ('DO', 'DOI ID')], default='PM', max_length=2, verbose_name='Bibliographic type')),
+                ('id_source', models.CharField(max_length=25, verbose_name='Bibliographic ID')),
+                ('title', models.CharField(max_length=300, verbose_name='Title')),
+                ('journal_name', models.CharField(max_length=50, null=True, verbose_name='Journal name')),
+                ('authors_list', models.CharField(max_length=500, verbose_name='Authors list')),
+                ('biblio_year', models.PositiveSmallIntegerField(verbose_name='Year')),
+                ('cytotox', models.BooleanField(default=False, verbose_name='Cytotoxicity data')),
+                ('in_silico', models.BooleanField(default=False, verbose_name='in silico study')),
+                ('in_vitro', models.BooleanField(default=False, verbose_name='in vitro study')),
+                ('in_vivo', models.BooleanField(default=False, verbose_name='in vivo study')),
+                ('in_cellulo', models.BooleanField(default=False, verbose_name='in cellulo study')),
+                ('pharmacokinetic', models.BooleanField(default=False, verbose_name='pharmacokinetic study')),
+                ('xray', models.BooleanField(default=False, verbose_name='X-Ray data')),
+            ],
+            options={
+                'verbose_name_plural': 'bibliographies',
+            },
+        ),
+        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='Compound',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('canonical_smile', models.CharField(max_length=500, unique=True, verbose_name='Canonical Smile')),
+                ('is_macrocycle', models.BooleanField(verbose_name='Contains one or more macrocycles')),
+                ('aromatic_ratio', models.DecimalField(decimal_places=2, max_digits=3, verbose_name='Aromatic ratio')),
+                ('balaban_index', models.DecimalField(decimal_places=2, max_digits=3, verbose_name='Balaban index')),
+                ('fsp3', models.DecimalField(decimal_places=2, max_digits=3, verbose_name='Fsp3')),
+                ('gc_molar_refractivity', models.DecimalField(decimal_places=2, max_digits=5, verbose_name='GC Molar Refractivity')),
+                ('log_d', models.DecimalField(decimal_places=2, max_digits=4, verbose_name='LogD (Partition coefficient octanol-1/water, with pKa information)')),
+                ('a_log_p', models.DecimalField(decimal_places=2, max_digits=4, verbose_name='ALogP (Partition coefficient octanol-1/water)')),
+                ('mean_atom_vol_vdw', models.DecimalField(decimal_places=2, max_digits=4, verbose_name='Mean atom volume computed with VdW radii')),
+                ('molecular_weight', models.DecimalField(decimal_places=2, max_digits=6, verbose_name='Molecular weight')),
+                ('nb_acceptor_h', models.IntegerField(verbose_name='Number of hydrogen bond acceptors')),
+                ('nb_aliphatic_amines', models.IntegerField(verbose_name='Number of aliphatics amines')),
+                ('nb_aromatic_bonds', models.IntegerField(verbose_name='Number of aromatic bonds')),
+                ('nb_aromatic_ether', models.IntegerField(verbose_name='Number of aromatic ethers')),
+                ('nb_aromatic_sssr', models.IntegerField(verbose_name='Number of aromatic Smallest Set of System Rings (SSSR)')),
+                ('nb_atom', models.IntegerField(verbose_name='Number of atoms')),
+                ('nb_atom_non_h', models.IntegerField(verbose_name='Number of non hydrogen atoms')),
+                ('nb_benzene_like_rings', models.IntegerField(verbose_name='Number of benzene-like rings')),
+                ('nb_bonds', models.IntegerField(verbose_name='Number of bonds')),
+                ('nb_bonds_non_h', models.IntegerField(verbose_name='Number of bonds not involving a hydrogen')),
+                ('nb_br', models.IntegerField(verbose_name='Number of Bromine atoms')),
+                ('nb_c', models.IntegerField(verbose_name='Number of Carbon atoms')),
+                ('nb_chiral_centers', models.IntegerField(verbose_name='Number of chiral centers')),
+                ('nb_circuits', models.IntegerField(verbose_name='Number of circuits')),
+                ('nb_cl', models.IntegerField(verbose_name='Number of Chlorine atoms')),
+                ('nb_csp2', models.IntegerField(verbose_name='Number of sp2-hybridized carbon atoms')),
+                ('nb_csp3', models.IntegerField(verbose_name='Number of sp3-hybridized carbon atoms')),
+                ('nb_donor_h', models.IntegerField(verbose_name='Number of hydrogen bond donors')),
+                ('nb_double_bonds', models.IntegerField(verbose_name='Number of double bonds')),
+                ('nb_f', models.IntegerField(verbose_name='Number of fluorine atoms')),
+                ('nb_i', models.IntegerField(verbose_name='Number of iodine atoms')),
+                ('nb_multiple_bonds', models.IntegerField(verbose_name='Number of multiple bonds')),
+                ('nb_n', models.IntegerField(verbose_name='Number of nitrogen atoms')),
+                ('nb_o', models.IntegerField(verbose_name='Number of oxygen atoms')),
+                ('nb_rings', models.IntegerField(verbose_name='Number of rings')),
+                ('nb_rotatable_bonds', models.IntegerField(verbose_name='Number of rotatable bonds')),
+                ('randic_index', models.DecimalField(decimal_places=2, max_digits=4, verbose_name='Randic index')),
+                ('rdf070m', models.DecimalField(decimal_places=2, max_digits=5, verbose_name='RDF070m, radial distribution function weighted by the atomic masses at 7Ã…')),
+                ('rotatable_bond_fraction', models.DecimalField(decimal_places=2, max_digits=3, verbose_name='Fraction of rotatable bonds')),
+                ('sum_atom_polar', models.DecimalField(decimal_places=2, max_digits=5, verbose_name='Sum of atomic polarizabilities')),
+                ('sum_atom_vol_vdw', models.DecimalField(decimal_places=2, max_digits=6, verbose_name='Sum of atom volumes computed with VdW radii')),
+                ('tpsa', models.DecimalField(decimal_places=2, max_digits=5, verbose_name='Topological Polar Surface Area (TPSA)')),
+                ('ui', models.DecimalField(decimal_places=2, max_digits=4, verbose_name='Unsaturation index')),
+                ('wiener_index', models.IntegerField(verbose_name='Wiener index')),
+                ('common_name', models.CharField(blank=True, max_length=20, null=True, unique=True, verbose_name='Common name')),
+                ('pubchem_id', models.CharField(blank=True, max_length=10, null=True, verbose_name='Pubchem ID')),
+                ('chemspider_id', models.CharField(blank=True, max_length=10, null=True, unique=True, verbose_name='Chemspider ID')),
+                ('chembl_id', models.CharField(blank=True, max_length=30, null=True, verbose_name='Chembl ID')),
+                ('iupac_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='IUPAC name')),
+            ],
+        ),
+        migrations.CreateModel(
+            name='CompoundAction',
+            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')),
+                ('pdb_id', models.CharField(blank=True, max_length=4, null=True, verbose_name='PDB ID')),
+                ('nb_copy_compounds', models.IntegerField(verbose_name='Number of copies for the compound')),
+                ('compound', 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_type', models.CharField(choices=[('pIC50', 'pIC50 (half maximal inhibitory concentration, -log10)'), ('pEC50', 'pEC50 (half maximal effective concentration, -log10)'), ('pKd', 'pKd (dissociation constant, -log10)'), ('pKi', 'pKi (inhibition constant, -log10)')], max_length=5, verbose_name='Activity type')),
+                ('activity', models.DecimalField(decimal_places=10, max_digits=12, verbose_name='Activity')),
+                ('inhibition_percentage', models.DecimalField(decimal_places=0, max_digits=3, null=True, verbose_name='Inhibition percentage')),
+                ('modulation_type', models.CharField(choices=[('B', 'Binding'), ('I', 'Inhibition'), ('S', 'Stabilization')], max_length=1, verbose_name='Modulation type')),
+                ('compound', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Compound')),
+            ],
+        ),
+        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', 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)')),
+                ('c_max', 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', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Compound')),
+            ],
+        ),
+        migrations.CreateModel(
+            name='Disease',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('name', models.CharField(max_length=30, unique=True, verbose_name='Disease')),
+            ],
+        ),
+        migrations.CreateModel(
+            name='Domain',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('pfam_acc', models.CharField(max_length=10, unique=True, verbose_name='Pfam Accession')),
+                ('pfam_id', models.CharField(max_length=20, verbose_name='Pfam Family Identifier')),
+                ('pfam_description', models.CharField(max_length=100, verbose_name='Pfam Description')),
+                ('domain_family', models.CharField(max_length=25, verbose_name='Domain family')),
+            ],
+            options={
+                'abstract': False,
+            },
+        ),
+        migrations.CreateModel(
+            name='LeLleBiplotData',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('le_lle_biplot_data', models.CharField(blank=True, max_length=150000, null=True, verbose_name='LE-LLE biplot JSON data')),
+            ],
+        ),
+        migrations.CreateModel(
+            name='MDDRActivityClass',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('name', models.CharField(max_length=100, unique=True, verbose_name='Activity Class')),
+            ],
+            options={
+                'verbose_name_plural': 'MDDR activity classes',
+            },
+        ),
+        migrations.CreateModel(
+            name='MDDRCompoundImport',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('mddr_name', models.CharField(max_length=40, verbose_name='MDDR name')),
+                ('dvpmt_phase', models.CharField(choices=[('Biological Testing', ''), ('Preclinical', ''), ('Phase III', ''), ('Phase II', ''), ('Phase I/II', ''), ('Phase I', ''), ('Launched', ''), ('Pre-Registered', ''), ('Not Applicable', ''), ('Discontinued', ''), ('Clinical', ''), ('Withdrawn', ''), ('Registered', ''), ('Not Determined', ''), ('Phase II/III', ''), ('IND Filed', '')], max_length=20, verbose_name='Development phase')),
+                ('canonical_smile', models.CharField(blank=True, max_length=500, null=True, verbose_name='Canonical Smile')),
+                ('db_import_date', models.DateTimeField(verbose_name='MDDR release year/month')),
+                ('activity_classes', models.ManyToManyField(to='ippidb.MDDRActivityClass')),
+            ],
+            options={
+                'verbose_name_plural': 'MDDR compound imports',
+            },
+        ),
+        migrations.CreateModel(
+            name='MDDRSimilarity',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('canonical_smile_ippidb', models.CharField(blank=True, max_length=500, null=True, unique=True, verbose_name='Canonical Smile for IPPIDB compound')),
+                ('canonical_smile_mddr', models.CharField(blank=True, max_length=500, null=True, unique=True, verbose_name='Canonical Smile for MDDR Compound')),
+                ('tanimoto', models.DecimalField(decimal_places=5, max_digits=6, verbose_name='Tanimoto')),
+            ],
+            options={
+                'verbose_name_plural': 'MDDR similarities',
+            },
+        ),
+        migrations.CreateModel(
+            name='MolecularFunction',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('go_id', models.CharField(max_length=10, unique=True, verbose_name='Gene Ontology ID')),
+                ('description', models.CharField(max_length=500, verbose_name='description')),
+            ],
+            options={
+                'abstract': False,
+            },
+        ),
+        migrations.CreateModel(
+            name='PcaBiplotData',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('pca_biplot_data', models.CharField(blank=True, max_length=150000, null=True, verbose_name='PCA biplot JSON data')),
+            ],
+        ),
+        migrations.CreateModel(
+            name='Ppi',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('pdb_id', models.CharField(max_length=4, null=True, verbose_name='PDB ID')),
+                ('pockets_nb', models.IntegerField(default=1, verbose_name='Total number of pockets in the complex')),
+                ('diseases', models.ManyToManyField(to='ippidb.Disease')),
+            ],
+        ),
+        migrations.CreateModel(
+            name='PpiComplex',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('cc_nb', models.IntegerField(default=1, verbose_name='Number of copies of the complex in the PPI')),
+            ],
+            options={
+                'verbose_name_plural': 'Ppi complexes',
+            },
+        ),
+        migrations.CreateModel(
+            name='PpiFamily',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('name', models.CharField(max_length=30, unique=True, verbose_name='Name')),
+            ],
+            options={
+                'verbose_name_plural': 'PPI Families',
+            },
+        ),
+        migrations.CreateModel(
+            name='Protein',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('uniprot_id', models.CharField(max_length=10, unique=True, verbose_name='Uniprot ID')),
+                ('recommended_name_long', models.CharField(max_length=75, verbose_name='Uniprot Recommended Name (long)')),
+                ('short_name', models.CharField(max_length=50, verbose_name='Short name')),
+                ('gene_name', models.CharField(max_length=30, unique=True, verbose_name='Gene name')),
+                ('entry_name', models.CharField(max_length=30, verbose_name='Entry name')),
+                ('molecular_functions', models.ManyToManyField(to='ippidb.MolecularFunction')),
+            ],
+            options={
+                'abstract': False,
+            },
+        ),
+        migrations.CreateModel(
+            name='ProteinDomainComplex',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('ppc_copy_nb', models.IntegerField(verbose_name='Number of copies of the protein in the complex')),
+            ],
+            options={
+                'verbose_name_plural': 'complexes',
+            },
+        ),
+        migrations.CreateModel(
+            name='RefCompoundBiblio',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('compound_name', models.CharField(max_length=50, verbose_name='Compound name in the publication')),
+                ('bibliography', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Bibliography')),
+                ('compound', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Compound')),
+            ],
+        ),
+        migrations.CreateModel(
+            name='Symmetry',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('code', models.CharField(max_length=2, verbose_name='Symmetry code')),
+                ('description', models.CharField(max_length=300, verbose_name='Description')),
+            ],
+            options={
+                'verbose_name_plural': 'symmetries',
+            },
+        ),
+        migrations.CreateModel(
+            name='Taxonomy',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('taxonomy_id', models.DecimalField(decimal_places=0, max_digits=9, unique=True, verbose_name='NCBI TaxID')),
+                ('name', models.CharField(max_length=200, verbose_name='Organism name')),
+            ],
+            options={
+                'verbose_name_plural': 'taxonomies',
+            },
+        ),
+        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')),
+                ('is_primary', models.BooleanField(verbose_name='Is primary')),
+                ('protein_bound_construct', models.CharField(blank=True, choices=[('F', 'Full length'), ('U', 'Unspecified')], max_length=5, null=True, verbose_name='Protein bound construct')),
+                ('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', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Bibliography')),
+                ('cell_line', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ippidb.CellLine')),
+                ('ppi', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ippidb.Ppi')),
+            ],
+        ),
+        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', 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')),
+                ('administration_mode', models.CharField(blank=True, choices=[('IV', ''), ('PO', ''), ('IP', ''), ('SL', 'SL')], max_length=2, null=True, verbose_name='Administration mode')),
+                ('concentration', models.DecimalField(blank=True, decimal_places=3, max_digits=7, null=True, verbose_name='Concentration in mg/l')),
+                ('dose', models.DecimalField(blank=True, decimal_places=4, max_digits=9, null=True, verbose_name='Dose in mg/kg')),
+                ('dose_interval', models.IntegerField(blank=True, null=True, verbose_name='Dose interval, in hours')),
+                ('biblio', 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.CreateModel(
+            name='ProteinDomainBoundComplex',
+            fields=[
+                ('proteindomaincomplex_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ippidb.ProteinDomainComplex')),
+                ('ppp_copy_nb_per_p', models.IntegerField(verbose_name='Number of copies of the protein in the pocket')),
+            ],
+            options={
+                'verbose_name_plural': 'bound complexes',
+            },
+            bases=('ippidb.proteindomaincomplex',),
+        ),
+        migrations.CreateModel(
+            name='ProteinDomainPartnerComplex',
+            fields=[
+                ('proteindomaincomplex_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='ippidb.ProteinDomainComplex')),
+            ],
+            options={
+                'verbose_name_plural': 'partner complexes',
+            },
+            bases=('ippidb.proteindomaincomplex',),
+        ),
+        migrations.AddField(
+            model_name='proteindomaincomplex',
+            name='domain',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Domain'),
+        ),
+        migrations.AddField(
+            model_name='proteindomaincomplex',
+            name='protein',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Protein'),
+        ),
+        migrations.AddField(
+            model_name='protein',
+            name='organism',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Taxonomy'),
+        ),
+        migrations.AddField(
+            model_name='ppicomplex',
+            name='complex',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.ProteinDomainComplex'),
+        ),
+        migrations.AddField(
+            model_name='ppicomplex',
+            name='ppi',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Ppi'),
+        ),
+        migrations.AddField(
+            model_name='ppi',
+            name='family',
+            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='ippidb.PpiFamily'),
+        ),
+        migrations.AddField(
+            model_name='ppi',
+            name='symmetry',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Symmetry'),
+        ),
+        migrations.AlterUniqueTogether(
+            name='mddrsimilarity',
+            unique_together=set([('canonical_smile_ippidb', 'canonical_smile_mddr')]),
+        ),
+        migrations.AddField(
+            model_name='compoundpkresult',
+            name='test_pk_description',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.TestPKDescription'),
+        ),
+        migrations.AddField(
+            model_name='compoundcytotoxicityresult',
+            name='test_cytotoxicity_description',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.TestCytotoxDescription'),
+        ),
+        migrations.AddField(
+            model_name='compoundactivityresult',
+            name='test_activity_description',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.TestActivityDescription'),
+        ),
+        migrations.AddField(
+            model_name='compoundaction',
+            name='ppi',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.Ppi'),
+        ),
+        migrations.AddField(
+            model_name='compound',
+            name='mddr_compound',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ippidb.MDDRCompoundImport'),
+        ),
+        migrations.AddField(
+            model_name='testactivitydescription',
+            name='protein_domain_bound_complex',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ippidb.ProteinDomainBoundComplex'),
+        ),
+        migrations.AlterUniqueTogether(
+            name='refcompoundbiblio',
+            unique_together=set([('compound', 'bibliography')]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='mddrcompoundimport',
+            unique_together=set([('mddr_name', 'dvpmt_phase', 'canonical_smile')]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='compoundpkresult',
+            unique_together=set([('compound', 'test_pk_description')]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='compoundcytotoxicityresult',
+            unique_together=set([('compound', 'test_cytotoxicity_description')]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='compoundactivityresult',
+            unique_together=set([('compound', 'test_activity_description', 'activity_type')]),
+        ),
+        migrations.AlterUniqueTogether(
+            name='compoundaction',
+            unique_together=set([('ppi', 'compound', 'activation_mode', 'pdb_id')]),
+        ),
+    ]
diff --git a/ippisite/ippidb/migrations/0002_auto_20180725_1805.py b/ippisite/ippidb/migrations/0002_auto_20180725_1805.py
new file mode 100644
index 0000000000000000000000000000000000000000..40172f379a1619fb6c2c28df69072970a611f722
--- /dev/null
+++ b/ippisite/ippidb/migrations/0002_auto_20180725_1805.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11 on 2018-07-25 18:05
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ippidb', '0001_squashed_0035_auto_20180725_1347'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='lellebiplotdata',
+            name='le_lle_biplot_data',
+            field=models.TextField(blank=True, null=True, verbose_name='LE-LLE biplot JSON data'),
+        ),
+        migrations.AlterField(
+            model_name='pcabiplotdata',
+            name='pca_biplot_data',
+            field=models.TextField(blank=True, null=True, verbose_name='PCA biplot JSON data'),
+        ),
+    ]
diff --git a/ippisite/ippidb/migrations/0003_auto_20180726_1755.py b/ippisite/ippidb/migrations/0003_auto_20180726_1755.py
new file mode 100644
index 0000000000000000000000000000000000000000..ae85563ae0c67989aefe28250d914d6c7c426167
--- /dev/null
+++ b/ippisite/ippidb/migrations/0003_auto_20180726_1755.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11 on 2018-07-26 17:55
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ippidb', '0002_auto_20180725_1805'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='mddractivityclass',
+            name='name',
+            field=models.TextField(max_length=100, unique=True, verbose_name='Activity Class'),
+        ),
+    ]
diff --git a/ippisite/ippidb/migrations/0004_auto_20180727_0656.py b/ippisite/ippidb/migrations/0004_auto_20180727_0656.py
new file mode 100644
index 0000000000000000000000000000000000000000..98ce6d06722d8254968ef1f3322c7fb673fd39f6
--- /dev/null
+++ b/ippisite/ippidb/migrations/0004_auto_20180727_0656.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11 on 2018-07-27 06:56
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ippidb', '0003_auto_20180726_1755'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='compound',
+            name='canonical_smile',
+            field=models.TextField(unique=True, verbose_name='Canonical Smile'),
+        ),
+        migrations.AlterField(
+            model_name='mddrcompoundimport',
+            name='canonical_smile',
+            field=models.TextField(blank=True, null=True, verbose_name='Canonical Smile'),
+        ),
+        migrations.AlterField(
+            model_name='mddrsimilarity',
+            name='canonical_smile_ippidb',
+            field=models.TextField(blank=True, null=True, unique=True, verbose_name='Canonical Smile for IPPIDB compound'),
+        ),
+        migrations.AlterField(
+            model_name='mddrsimilarity',
+            name='canonical_smile_mddr',
+            field=models.TextField(blank=True, null=True, unique=True, verbose_name='Canonical Smile for MDDR Compound'),
+        ),
+    ]
diff --git a/ippisite/ippidb/migrations/0005_auto_20180727_0717.py b/ippisite/ippidb/migrations/0005_auto_20180727_0717.py
new file mode 100644
index 0000000000000000000000000000000000000000..6cf348264c3349b70c99768cee436b87eed13b26
--- /dev/null
+++ b/ippisite/ippidb/migrations/0005_auto_20180727_0717.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11 on 2018-07-27 07:17
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ippidb', '0004_auto_20180727_0656'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='mddrcompoundimport',
+            name='dvpmt_phase',
+            field=models.CharField(choices=[('Biological Testing', ''), ('Preclinical', ''), ('Phase III', ''), ('Phase II', ''), ('Phase I/II', ''), ('Phase I', ''), ('Launched', ''), ('Pre-Registered', ''), ('Not Applicable', ''), ('Discontinued', ''), ('Clinical', ''), ('Withdrawn', ''), ('Registered', ''), ('Not Determined', ''), ('Phase II/III', ''), ('IND Filed', ''), ('Phase 0', ''), ('Suspended', '')], max_length=20, verbose_name='Development phase'),
+        ),
+        migrations.AlterField(
+            model_name='mddrcompoundimport',
+            name='mddr_name',
+            field=models.TextField(verbose_name='MDDR name'),
+        ),
+    ]
diff --git a/ippisite/ippidb/migrations/0006_auto_20180727_0816.py b/ippisite/ippidb/migrations/0006_auto_20180727_0816.py
new file mode 100644
index 0000000000000000000000000000000000000000..0bc83482978888950e6f8ededc058a4677aa91d5
--- /dev/null
+++ b/ippisite/ippidb/migrations/0006_auto_20180727_0816.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11 on 2018-07-27 08:16
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ippidb', '0005_auto_20180727_0717'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='bibliography',
+            name='journal_name',
+            field=models.CharField(blank=True, max_length=50, null=True, verbose_name='Journal name'),
+        ),
+    ]
diff --git a/ippisite/ippidb/migrations/0007_auto_20180727_0822.py b/ippisite/ippidb/migrations/0007_auto_20180727_0822.py
new file mode 100644
index 0000000000000000000000000000000000000000..05ba1839dd86947cb27ed3fea7e0908265924c35
--- /dev/null
+++ b/ippisite/ippidb/migrations/0007_auto_20180727_0822.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11 on 2018-07-27 08:22
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ippidb', '0006_auto_20180727_0816'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='compoundactivityresult',
+            name='inhibition_percentage',
+            field=models.DecimalField(blank=True, decimal_places=0, max_digits=3, null=True, verbose_name='Inhibition percentage'),
+        ),
+    ]
diff --git a/ippisite/ippidb/migrations/0008_auto_20180727_0845.py b/ippisite/ippidb/migrations/0008_auto_20180727_0845.py
new file mode 100644
index 0000000000000000000000000000000000000000..b089228183ec95360e15013a047ab4f471e4b70b
--- /dev/null
+++ b/ippisite/ippidb/migrations/0008_auto_20180727_0845.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11 on 2018-07-27 08:45
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ippidb', '0007_auto_20180727_0822'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='ppi',
+            name='family',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ippidb.PpiFamily'),
+        ),
+        migrations.AlterField(
+            model_name='ppi',
+            name='pdb_id',
+            field=models.CharField(blank=True, max_length=4, null=True, verbose_name='PDB ID'),
+        ),
+    ]
diff --git a/ippisite/ippidb/migrations/0035_auto_20180725_1347.py b/ippisite/ippidb/migrations/0035_auto_20180725_1347.py
new file mode 100644
index 0000000000000000000000000000000000000000..f2f809c5e61db086086125508b95ce0d609dfeeb
--- /dev/null
+++ b/ippisite/ippidb/migrations/0035_auto_20180725_1347.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11 on 2018-07-25 13:47
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ippidb', '0034_auto_20180503_2110'),
+    ]
+
+    operations = [
+        migrations.RenameField(
+            model_name='compoundpkresult',
+            old_name='cmax',
+            new_name='c_max',
+        ),
+    ]
diff --git a/ippisite/ippidb/models.py b/ippisite/ippidb/models.py
index e0d3571ff40cd5ba622bb5f3051f1225df1dcdd4..6ccd9d0758b20fb0d5dae0b3bc7380e9742159e6 100644
--- a/ippisite/ippidb/models.py
+++ b/ippisite/ippidb/models.py
@@ -40,7 +40,7 @@ class Bibliography(AutoFillableModel):
         'Bibliographic type', max_length=2, choices=SOURCES, default='PM')
     id_source = models.CharField('Bibliographic ID', max_length=25)
     title = models.CharField('Title', max_length=300)
-    journal_name = models.CharField('Journal name', max_length=50, null=True)
+    journal_name = models.CharField('Journal name', max_length=50, null=True, blank=True)
     authors_list = models.CharField('Authors list', max_length=500)
     biblio_year = models.PositiveSmallIntegerField('Year')
     cytotox = models.BooleanField('Cytotoxicity data', default=False)
@@ -212,12 +212,12 @@ class PpiFamily(models.Model):
 
 
 class Ppi(models.Model):
-    pdb_id = models.CharField('PDB ID', max_length=4, null=True)
+    pdb_id = models.CharField('PDB ID', max_length=4, null=True, blank=True)
     pockets_nb = models.IntegerField(
         'Total number of pockets in the complex', default=1)
     symmetry = models.ForeignKey(Symmetry, models.CASCADE)
     diseases = models.ManyToManyField(Disease)
-    family = models.ForeignKey(PpiFamily, models.CASCADE, null=True)
+    family = models.ForeignKey(PpiFamily, models.CASCADE, null=True, blank=True)
 
     def __str__(self):
         return '{} PPI, PDB:{}'.format(self.symmetry.description, self.pdb_id or 'unknown')
@@ -264,8 +264,8 @@ class PpiComplex(models.Model):
 
 
 class Compound(models.Model):
-    canonical_smile = models.CharField(
-        'Canonical Smile', unique=True, max_length=500)
+    canonical_smile = models.TextField(
+        'Canonical Smile', unique=True)
     is_macrocycle = models.BooleanField('Contains one or more macrocycles')
     aromatic_ratio = models.DecimalField(
         'Aromatic ratio', max_digits=3, decimal_places=2)
@@ -497,17 +497,17 @@ class Compound(models.Model):
 
 
 class PcaBiplotData(models.Model):
-    pca_biplot_data = models.CharField(
-        'PCA biplot JSON data', max_length=150000, blank=True, null=True)
+    pca_biplot_data = models.TextField(
+        'PCA biplot JSON data', blank=True, null=True)
 
 
 class LeLleBiplotData(models.Model):
-    le_lle_biplot_data = models.CharField(
-        'LE-LLE biplot JSON data', max_length=150000, blank=True, null=True)
+    le_lle_biplot_data = models.TextField(
+        'LE-LLE biplot JSON data', blank=True, null=True)
 
 
 class MDDRActivityClass(models.Model):
-    name = models.CharField('Activity Class', max_length=100, unique=True)
+    name = models.TextField('Activity Class', max_length=100, unique=True)
 
     class Meta:
         verbose_name_plural = "MDDR activity classes"
@@ -535,13 +535,15 @@ class MDDRCompoundImport(models.Model):
         ('Not Determined', ''),
         ('Phase II/III', ''),
         ('IND Filed', ''),
+        ('Phase 0', ''),
+        ('Suspended', ''),
     )
 
-    mddr_name = models.CharField('MDDR name', max_length=40)
+    mddr_name = models.TextField('MDDR name')
     dvpmt_phase = models.CharField(
         'Development phase', max_length=20, choices=MDDR_DEVELOPMENT_PHASES)
-    canonical_smile = models.CharField(
-        'Canonical Smile', max_length=500, blank=True, null=True)
+    canonical_smile = models.TextField(
+        'Canonical Smile', blank=True, null=True)
     # TODO index this table on canonical_smile
     db_import_date = models.DateTimeField('MDDR release year/month')
     activity_classes = models.ManyToManyField(MDDRActivityClass)
@@ -558,10 +560,10 @@ class MDDRCompoundImport(models.Model):
 
 
 class MDDRSimilarity(models.Model):
-    canonical_smile_ippidb = models.CharField(
-        'Canonical Smile for IPPIDB compound', max_length=500, unique=True, blank=True, null=True)
-    canonical_smile_mddr = models.CharField(
-        'Canonical Smile for MDDR Compound', max_length=500, unique=True, blank=True, null=True)
+    canonical_smile_ippidb = models.TextField(
+        'Canonical Smile for IPPIDB compound', unique=True, blank=True, null=True)
+    canonical_smile_mddr = models.TextField(
+        'Canonical Smile for MDDR Compound', unique=True, blank=True, null=True)
     tanimoto = models.DecimalField('Tanimoto', max_digits=6, decimal_places=5)
 
     class Meta:
@@ -644,7 +646,7 @@ class CompoundActivityResult(models.Model):
     activity = models.DecimalField(
         'Activity', max_digits=12, decimal_places=10)
     inhibition_percentage = models.DecimalField(
-        'Inhibition percentage', max_digits=3, decimal_places=0, null=True)
+        'Inhibition percentage', max_digits=3, decimal_places=0, null=True, blank=True)
     modulation_type = models.CharField(
         'Modulation type', max_length=1, choices=MODULATION_TYPES)
 
@@ -708,7 +710,7 @@ class CompoundPKResult(models.Model):
         '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(
+    c_max = 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)
diff --git a/ippisite/ippisite/hub16_settings.py b/ippisite/ippisite/hub16_settings.py
index def11d3dbfa05f1695e90c2648cf939a141f924c..f29c6ecb7b2f5ebe0eaa1d4a5e493b1fd3e3a2b3 100644
--- a/ippisite/ippisite/hub16_settings.py
+++ b/ippisite/ippisite/hub16_settings.py
@@ -90,14 +90,24 @@ WSGI_APPLICATION = 'ippisite.wsgi.application'
 # Database
 # https://docs.djangoproject.com/en/1.10/ref/settings/#databases
 
+#DATABASES = {
+#    'default': {
+#        'ENGINE': 'django.db.backends.sqlite3',
+#        'NAME': os.path.join(BASE_DIR, 'hub16_db.sqlite3'),
+#    }
+#}
+
 DATABASES = {
     'default': {
-        'ENGINE': 'django.db.backends.sqlite3',
-        'NAME': os.path.join(BASE_DIR, 'hub16_db.sqlite3'),
+        'ENGINE': 'django.db.backends.postgresql_psycopg2',
+        'NAME': 'ippidb',
+        'USER': 'ippidb',
+        'PASSWORD': 'LeroyMerlin',
+        'HOST': 'localhost',
+        'PORT': '',
     }
 }
 
-
 # Password validation
 # https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
 
diff --git a/ippisite/requirements.txt b/ippisite/requirements.txt
index be3d39025d71ff2758fe82b9a21e9dc99e4fe16c..0d5e0638dd7211ab356b678c24c75d731c2e9bc5 100644
--- a/ippisite/requirements.txt
+++ b/ippisite/requirements.txt
@@ -14,3 +14,4 @@ django-allauth==0.36
 sklearn
 scipy
 matplotlib
+psycopg2
\ No newline at end of file