From d6e5c876ef52c8ad071bfbf68719beae3849a741 Mon Sep 17 00:00:00 2001
From: AndiMajore <andi.majore@googlemail.com>
Date: Thu, 15 Dec 2022 14:25:55 +0100
Subject: [PATCH] added output to remove old datasets functions to identify
 problem in next update

Former-commit-id: c1312b5c7023fc054103a248d8f44b5054c18578 [formerly 87ecf4f1124bfffb46d542fa810fb3ef9a6aa7c8]
Former-commit-id: 51e87ce37a6e7c1136766c4ffd28083a7d22d170
---
 .../management/commands/import_from_nedrex.py |  2 +-
 drugstone/management/commands/populate_db.py  | 27 +++++++++++++-----
 .../management/includes/DatasetLoader.py      | 28 ++++++++++++++++---
 3 files changed, 45 insertions(+), 12 deletions(-)

diff --git a/drugstone/management/commands/import_from_nedrex.py b/drugstone/management/commands/import_from_nedrex.py
index bded48d..bc09491 100644
--- a/drugstone/management/commands/import_from_nedrex.py
+++ b/drugstone/management/commands/import_from_nedrex.py
@@ -256,7 +256,7 @@ class NedrexImporter:
 
         iter_edge_collection('drug_has_target', add_dpi)
         models.ProteinDrugInteraction.objects.bulk_create(bulk)
-        new_datasets = [dataset, source_datasets.values()]
+        new_datasets = [dataset].extend(source_datasets.values())
         DatasetLoader.remove_old_pdi_data(new_datasets, licenced)
         return len(bulk)
 
diff --git a/drugstone/management/commands/populate_db.py b/drugstone/management/commands/populate_db.py
index 690ec3b..4df7c6a 100755
--- a/drugstone/management/commands/populate_db.py
+++ b/drugstone/management/commands/populate_db.py
@@ -10,6 +10,8 @@ from drugstone.management.includes.DataPopulator import DataPopulator
 from .import_from_nedrex import NedrexImporter
 from drugstone.management.includes.NodeCache import NodeCache
 from drugstone.management.includes import DatasetLoader
+from ..includes.DatasetLoader import remove_old_pdi_data, remove_old_ppi_data, remove_old_pdis_data, \
+    remove_old_drdi_data
 
 
 class DatabasePopulator:
@@ -59,7 +61,6 @@ class DatabasePopulator:
 
 class Command(BaseCommand):
     def add_arguments(self, parser):
-
         # dataset directory
         parser.add_argument('-dd', '--data_dir', type=str, help='Dataset directory path')
         parser.add_argument('-dm', '--delete_model', type=str, help='Delete model(s)')
@@ -80,19 +81,28 @@ class Command(BaseCommand):
         parser.add_argument('-pdi', '--protein_disorder', action='store_true',
                             help='Populate Protein-Disorder Associations')
         parser.add_argument('-ddi', '--drug_disorder', action='store_true', help='Populate Drug-Disorder Indications')
+        parser.add_argument('-t', '--test', action='store_true', help='Running some function on startup')
 
     def handle(self, *args, **kwargs):
         populate(kwargs)
 
-def populate(kwargs):
 
+def populate(kwargs):
     nedrex_api_url_open = "https://api.nedrex.net/open"
     nedrex_api_url_licensed = "https://api.nedrex.net/licensed"
 
     data_dir = kwargs['data_dir']
 
     db_populator = DatabasePopulator(data_dir=data_dir)
-
+    if 'test' in kwargs and kwargs['test']:
+        pass
+        # remove_old_ppi_data([PPIDataset.objects.filter(name='biogrid', licenced=False).last()], False)
+        # remove_old_ppi_data([PPIDataset.objects.filter(name='iid', licenced=False).last()], False)
+        # remove_old_ppi_data([PPIDataset.objects.filter(name='intact', licenced=False).last()], False)
+        # remove_old_pdis_data([PDisDataset.objects.filter(name='disgenet', licenced=False).last()], False)
+        # remove_old_pdis_data([PDisDataset.objects.filter(name='omim', licenced=True).last()], True)
+        # remove_old_drdi_data([DrDiDataset.objects.filter(name='ctd', licenced=False).last()], False)
+        # remove_old_drdi_data([DrDiDataset.objects.filter(name='drugcentral', licenced=False).last()], False)
     if 'clear' in kwargs and kwargs['clear']:
         db_populator.delete_all()
 
@@ -121,7 +131,7 @@ def populate(kwargs):
     if kwargs['drugs']:
         print('Populating Drugs...')
         n = NedrexImporter.import_drugs(importer, update)
-        total_n +=n
+        total_n += n
         nedrex_update = True
         print(f'Populated {n} Drugs.')
 
@@ -152,14 +162,16 @@ def populate(kwargs):
     if kwargs['protein_drug']:
         print('Importing PDIs from unlicensed NeDRexDB...')
         n = NedrexImporter.import_drug_target_interactions(importer,
-                                                           DatasetLoader.get_drug_target_nedrex(nedrex_api_url_open, False),
+                                                           DatasetLoader.get_drug_target_nedrex(nedrex_api_url_open,
+                                                                                                False),
                                                            update)
         total_n += n
         print(f'Imported {n} PDIs from unlicensed NeDRexDB')
 
         print('Importing PDIs from licensed NeDRexDB...')
         n = NedrexImporter.import_drug_target_interactions(importer,
-                                                           DatasetLoader.get_drug_target_nedrex(nedrex_api_url_licensed, True),
+                                                           DatasetLoader.get_drug_target_nedrex(nedrex_api_url_licensed,
+                                                                                                True),
                                                            update)
         total_n += n
         nedrex_update = True
@@ -196,7 +208,8 @@ def populate(kwargs):
     if kwargs['drug_disorder']:
         print('Importing DrDis from unlicensed NeDRexDB...')
         n = NedrexImporter.import_drug_disorder_indications(importer,
-                                                            DatasetLoader.get_drug_disorder_nedrex(nedrex_api_url_open, False),
+                                                            DatasetLoader.get_drug_disorder_nedrex(nedrex_api_url_open,
+                                                                                                   False),
                                                             update)
         total_n += n
         print(f'Imported {n} DrDis from unlicensed NeDRexDB')
diff --git a/drugstone/management/includes/DatasetLoader.py b/drugstone/management/includes/DatasetLoader.py
index 4ec2538..859fc11 100644
--- a/drugstone/management/includes/DatasetLoader.py
+++ b/drugstone/management/includes/DatasetLoader.py
@@ -302,39 +302,59 @@ def is_licenced_drdi_source(source):
 
 def remove_old_pdi_data(new_datasets, licenced):
     for dataset in new_datasets:
+        print("Deleting all except "+str(dataset))
         try:
             for d in models.PDIDataset.objects.filter(name=dataset.name, licenced=licenced):
+                print("Testing: "+str(d))
                 if d != dataset:
+                    print("Deleting: "+str(d))
                     d.delete()
-        except:
+        except Exception as e:
+            print("Error when trying to delete old datasets")
+            print(e)
             continue
 
 
 def remove_old_ppi_data(new_datasets, licenced):
     for dataset in new_datasets:
+        print("Deleting all except " + str(dataset))
         try:
             for d in models.PPIDataset.objects.filter(name=dataset.name, licenced=licenced):
+                print("Testing: " + str(d))
                 if d != dataset:
+                    print("Deleting: " + str(d))
                     d.delete()
-        except:
+        except Exception as e:
+            print("Error when trying to delete old datasets")
+            print(e)
             continue
 
 
 def remove_old_pdis_data(new_datasets, licenced):
     for dataset in new_datasets:
+        print("Deleting all except " + str(dataset))
         try:
             for d in models.PDisDataset.objects.filter(name=dataset.name, licenced=licenced):
+                print("Testing: " + str(d))
                 if d != dataset:
+                    print("Deleting: " + str(d))
                     d.delete()
-        except:
+        except Exception as e:
+            print("Error when trying to delete old datasets")
+            print(e)
             continue
 
 
 def remove_old_drdi_data(new_datasets, licenced):
     for dataset in new_datasets:
+        print("Deleting all except " + str(dataset))
         try:
             for d in models.DrDiDataset.objects.filter(name=dataset.name, licenced=licenced):
+                print("Testing: " + str(d))
                 if d != dataset:
+                    print("Deleting: " + str(d))
                     d.delete()
-        except:
+        except Exception as e:
+            print("Error when trying to delete old datasets")
+            print(e)
             continue
-- 
GitLab