diff --git a/drugstone/views.py b/drugstone/views.py index f883060581fb1460e792e62cb3689f543874a3dd..060e4289525accd2c645b2ed971f1879c32bf932 100755 --- a/drugstone/views.py +++ b/drugstone/views.py @@ -231,13 +231,29 @@ def create_network(request) -> Response: return Response(id) +def latest_datasets(datasets): + dataset_dict = {} + for d in datasets: + name = d.name+"_"+str(d.licenced) + if name not in dataset_dict: + dataset_dict[name] = d + return + if dataset_dict[name].version < d.version: + dataset_dict[name] = d + return dataset_dict.values() + + @api_view(['GET']) def get_datasets(request) -> Response: datasets = {} - datasets['protein-protein'] = PPIDatasetSerializer(many=True).to_representation(PPIDataset.objects.all()) - datasets['protein-drug'] = PDIDatasetSerializer(many=True).to_representation(PDIDataset.objects.all()) - datasets['protein-disorder'] = PDisDatasetSerializer(many=True).to_representation(PDisDataset.objects.all()) - datasets['drug-disorder'] = DrDisDatasetSerializer(many=True).to_representation(DrDiDataset.objects.all()) + datasets['protein-protein'] = PPIDatasetSerializer(many=True).to_representation( + latest_datasets(PPIDataset.objects.all())) + datasets['protein-drug'] = PDIDatasetSerializer(many=True).to_representation( + latest_datasets(PDIDataset.objects.all())) + datasets['protein-disorder'] = PDisDatasetSerializer(many=True).to_representation( + latest_datasets(PDisDataset.objects.all())) + datasets['drug-disorder'] = DrDisDatasetSerializer(many=True).to_representation( + latest_datasets(DrDiDataset.objects.all())) return Response(datasets) @@ -368,8 +384,8 @@ def result_view(request) -> Response: if 'drugstoneType' in detail and detail['drugstoneType'] == 'protein': detail['symbol'] = list(set(detail['symbol'])) if 'symbol' in detail else [] detail['entrez'] = list(set(detail['entrez'])) if 'entrez' in detail else [] - detail['uniprot'] = list(set(detail['uniprot'])) if 'uniprot' in detail else [] - detail['ensg'] = list(set(detail['ensg'])) if 'ensg' in detail else [] + detail['uniprot'] = list(set(detail['uniprot'])) if 'uniprot' in detail else [] + detail['ensg'] = list(set(detail['ensg'])) if 'ensg' in detail else [] edges = parameters['input_network']['edges']