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