diff --git a/drugstone/management/commands/import_from_nedrex.py b/drugstone/management/commands/import_from_nedrex.py index bded48ddf6e1bcddbb4f7e3a5e89b3d97de78273..bc09491bb6f232a8f6bce5dbf71ef5866b9932a4 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 690ec3bea84e2029e305aba16b876bfb49c69a80..4df7c6a14b3b63fbe61436033eeb4c7c97402b89 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 4ec25387ff4cfe5c4e6902b1f025f9dae39a793a..859fc1179fcd55d0c6e68675aad9a851d69ee31d 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