Skip to content
Snippets Groups Projects
Commit 043f109e authored by AndiMajore's avatar AndiMajore
Browse files

added licenced vs nonlicenced distinction

Former-commit-id: d8bb91fa
parent f1f2b385
No related branches found
No related tags found
No related merge requests found
......@@ -14,4 +14,4 @@ DJANGO_SETTINGS_MODULE=drugstone.settings
CELERY_BROKER_URL=redis://redis:6379/0
FLOWER_PORT=8888
FLOWER_BASIC_AUTH=drugstone:test
GT_THREADS=1
\ No newline at end of file
GT_THREADS=8
\ No newline at end of file
......@@ -151,6 +151,7 @@ class NedrexImporter:
def import_drugs(self, update):
self.set_licenced(False)
drugs = dict()
if update:
self.cache.init_drugs()
......@@ -237,14 +238,18 @@ class NedrexImporter:
if not update or e.__hash__() not in existing:
bulk.add(e)
for source in edge['dataSources']:
if not licenced or is_licenced(source):
bulk.add(models.ProteinDrugInteraction(pdi_dataset=get_dataset(source), drug=drug,
if licenced:
if not is_licenced(source):
continue
bulk.add(models.ProteinDrugInteraction(pdi_dataset=get_dataset(source), drug=drug,
protein=protein))
except KeyError:
pass
iter_edge_collection('drug_has_target', add_dpi)
models.ProteinDrugInteraction.objects.bulk_create(bulk)
new_datasets = [dataset, source_datasets.values()]
DatasetLoader.remove_old_pdi_data(new_datasets, licenced)
return len(bulk)
def import_protein_protein_interactions(self, dataset: PPIDataset, update):
......@@ -292,15 +297,19 @@ class NedrexImporter:
if not update or e.__hash__() not in existing:
bulk.append(e)
for source in edge['dataSources']:
if not licenced or is_licenced(source):
bulk.append(
models.ProteinProteinInteraction(ppi_dataset=get_dataset(source), from_protein=protein1,
to_protein=protein2))
if licenced:
if not is_licenced(source):
continue
bulk.append(
models.ProteinProteinInteraction(ppi_dataset=get_dataset(source), from_protein=protein1,
to_protein=protein2))
except KeyError:
pass
iter_ppi(add_ppi)
models.ProteinProteinInteraction.objects.bulk_create(bulk)
new_datasets = [dataset, source_datasets.values()]
DatasetLoader.remove_old_ppi_data(new_datasets, licenced)
return len(bulk)
def import_protein_disorder_associations(self, dataset, update):
......@@ -338,8 +347,10 @@ class NedrexImporter:
if not update or e.__hash__() not in existing:
bulk.add(e)
for source in edge['dataSources']:
if not licenced or is_licenced(source):
bulk.add(
if licenced:
if not is_licenced(source):
continue
bulk.add(
models.ProteinDisorderAssociation(pdis_dataset=get_dataset(source), protein=protein,
disorder=disorder,
score=edge['score']))
......@@ -348,6 +359,8 @@ class NedrexImporter:
iter_edge_collection('gene_associated_with_disorder', add_pdis)
models.ProteinDisorderAssociation.objects.bulk_create(bulk)
new_datasets = [dataset, source_datasets.values()]
DatasetLoader.remove_old_pdis_data(new_datasets, licenced)
return len(bulk)
def import_drug_disorder_indications(self, dataset, update):
......@@ -384,8 +397,10 @@ class NedrexImporter:
if not update or e.__hash__() not in existing:
bulk.add(e)
for source in edge['dataSources']:
if not licenced or is_licenced(source):
bulk.add(
if licenced:
if not is_licenced(source):
continue
bulk.add(
models.DrugDisorderIndication(drdi_dataset=get_dataset(source), drug=drug,
disorder=disorder))
except KeyError:
......@@ -393,4 +408,6 @@ class NedrexImporter:
iter_edge_collection('drug_has_indication', add_drdis)
models.DrugDisorderIndication.objects.bulk_create(bulk)
new_datasets = [dataset, source_datasets.values()]
DatasetLoader.remove_old_drdi_data(new_datasets, licenced)
return len(bulk)
......@@ -45,6 +45,15 @@ def get_nedrex_version():
return version
def get_nedrex_source_version(source):
metadata = get_metadata()['source_databases']
# TODO remove once fixed in nedrex db
if 'drug_central' in metadata:
metadata['drugcentral'] = metadata['drug_central']
return metadata[source]['date']
def get_drug_target_nedrex(url, licenced):
dataset, _ = models.PDIDataset.objects.get_or_create(
name='NeDRex',
......@@ -65,7 +74,7 @@ def get_ppi_nedrex(url, licenced):
return dataset
def get_protein_disorder_nedrex(url,licenced):
def get_protein_disorder_nedrex(url, licenced):
dataset, _ = models.PDisDataset.objects.get_or_create(
name='NeDRex',
link=url,
......@@ -75,7 +84,7 @@ def get_protein_disorder_nedrex(url,licenced):
return dataset
def get_drug_disorder_nedrex(url,licenced):
def get_drug_disorder_nedrex(url, licenced):
dataset, _ = models.DrDiDataset.objects.get_or_create(
name='NeDRex',
link=url,
......@@ -86,7 +95,7 @@ def get_drug_disorder_nedrex(url,licenced):
def write_license(text):
with open(LICENSE_FILE,'w') as fh:
with open(LICENSE_FILE, 'w') as fh:
fh.write(text)
......@@ -172,7 +181,7 @@ def get_today_version():
def get_ppi_nedrex_dataset(url, licenced, source):
version = get_today_version()
try:
version = get_metadata()['source_databases'][source]['date']
version = get_nedrex_source_version(source)
except RetryError:
pass
......@@ -188,7 +197,7 @@ def get_ppi_nedrex_dataset(url, licenced, source):
def get_pdi_nedrex_dataset(url, licenced, source):
version = get_today_version()
try:
version = get_metadata()['source_databases'][source]['date']
version = get_nedrex_source_version(source)
except RetryError:
pass
......@@ -200,10 +209,11 @@ def get_pdi_nedrex_dataset(url, licenced, source):
)
return dataset
def get_pdis_nedrex_dataset(url, licenced, source):
version = get_today_version()
try:
version = get_metadata()['source_databases'][source]['date']
version = get_nedrex_source_version(source)
except RetryError:
pass
......@@ -215,10 +225,11 @@ def get_pdis_nedrex_dataset(url, licenced, source):
)
return dataset
def get_drdi_nedrex_dataset(url, licenced, source):
version = get_today_version()
try:
version = get_metadata()['source_databases'][source]['date']
version = get_nedrex_source_version(source)
except RetryError:
pass
......@@ -230,10 +241,11 @@ def get_drdi_nedrex_dataset(url, licenced, source):
)
return dataset
def is_licenced_ppi_source(source):
version = get_today_version()
try:
version = get_metadata()['source_databases'][source]['date']
version = get_nedrex_source_version(source)
except RetryError:
pass
......@@ -243,10 +255,11 @@ def is_licenced_ppi_source(source):
return True
return False
def is_licenced_pdi_source(source):
version = get_today_version()
try:
version = get_metadata()['source_databases'][source]['date']
version = get_nedrex_source_version(source)
except RetryError:
pass
......@@ -256,10 +269,11 @@ def is_licenced_pdi_source(source):
return True
return False
def is_licenced_pdis_source(source):
version = get_today_version()
try:
version = get_metadata()['source_databases'][source]['date']
version = get_nedrex_source_version(source)
except RetryError:
pass
......@@ -269,10 +283,11 @@ def is_licenced_pdis_source(source):
return True
return False
def is_licenced_drdi_source(source):
version = get_today_version()
try:
version = get_metadata()['source_databases'][source]['date']
version = get_nedrex_source_version(source)
except RetryError:
pass
......@@ -281,3 +296,43 @@ def is_licenced_drdi_source(source):
except:
return True
return False
def remove_old_pdi_data(new_datasets, licenced):
for dataset in new_datasets:
try:
for d in models.PDIDataset.objects.filter(name=dataset.name, licenced=licenced):
if d != dataset:
d.delete()
except:
continue
def remove_old_ppi_data(new_datasets, licenced):
for dataset in new_datasets:
try:
for d in models.PPIDataset.objects.filter(name=dataset.name, licenced=licenced):
if d != dataset:
d.delete()
except:
continue
def remove_old_pdis_data(new_datasets, licenced):
for dataset in new_datasets:
try:
for d in models.PDisDataset.objects.filter(name=dataset.name, licenced=licenced):
if d != dataset:
d.delete()
except:
continue
def remove_old_drdi_data(new_datasets, licenced):
for dataset in new_datasets:
try:
for d in models.DrDiDataset.objects.filter(name=dataset.name, licenced=licenced):
if d != dataset:
d.delete()
except:
continue
......@@ -169,3 +169,6 @@ CACHES = {
CELERY_BROKER_URL = os.environ.get('CELERY_BROKER_URL')
# timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
CELERY_TIMEZONE = 'Europe/Berlin'
DEFAULTS = { 'ppi': 'NeDRex', 'pdi': 'NeDRex', 'pdis': 'NeDRex', 'drdi': 'NeDRex'}
......@@ -29,7 +29,7 @@ urlpatterns = [
path('tasks/', tasks_view),
path('task_result/', result_view),
path('graph_export/', graph_export),
path('query_proteins/', query_proteins),
# path('query_proteins/', query_proteins),
path('query_tissue_proteins/', query_tissue_proteins),
path('adjacent_drugs/', adjacent_drugs),
path('adjacent_disorders/', adjacent_disorders),
......
......@@ -16,116 +16,55 @@ from rest_framework.response import Response
from rest_framework.views import APIView
from drugstone.util.query_db import query_proteins_by_identifier
from drugstone import models
from drugstone import serializers
from drugstone.models import Protein, Task, ProteinDrugInteraction, \
Drug, Tissue, ExpressionLevel, Network, ProteinDisorderAssociation, DrugDisorderIndication, Disorder, DrDiDataset, \
PDIDataset, PDisDataset, PPIDataset
from drugstone.serializers import ProteinSerializer, TaskSerializer, \
ProteinDrugInteractionSerializer, DrugSerializer, TaskStatusSerializer, TissueSerializer, NetworkSerializer, \
ProteinDisorderAssociationSerializer, DisorderSerializer, DrugDisorderIndicationSerializer
from drugstone.models import *
from drugstone.serializers import *
from drugstone.backend_tasks import start_task, refresh_from_redis, task_stats, task_result, task_parameters
# we might want to replace this class with some ProteinProteinInteraction view of user input proteins
# class ProteinViralInteractionView(APIView):
# """
# Protein-Virus-Interaction Network
# """
#
# def get(self, request):
# if not request.query_params.get('data'):
# proteins = Protein.objects.all()
# effects = ViralProtein.objects.all()
# edges = ProteinViralInteraction.objects.all()
#
# network = {
# 'proteins': ProteinSerializer(many=True).to_representation(proteins),
# 'effects': ViralProteinSerializer(many=True).to_representation(effects),
# 'edges': ProteinViralInteractionSerializer(many=True).to_representation(edges),
# }
# return Response(network)
#
# dataset_virus_list = json.loads(request.query_params.get('data', '[]'))
# effects = []
# for dataset_name, virus_name in dataset_virus_list:
# dataset_virus_object = DatasetVirus.objects.get(dataset=dataset_name, virus=virus_name)
# effects.extend(list(ViralProtein.objects.filter(dataset_virus=dataset_virus_object).all()))
#
# edges = []
# proteins = []
# for effect in effects:
# edge_objects = ProteinViralInteraction.objects.filter(effect=effect)
# for edge_object in edge_objects:
# edges.append(edge_object)
#
# if edge_object.protein not in proteins:
# proteins.append(edge_object.protein)
#
# network = {
# 'proteins': ProteinSerializer(many=True).to_representation(proteins),
# 'effects': ViralProteinSerializer(many=True).to_representation(effects),
# 'edges': ProteinViralInteractionSerializer(many=True).to_representation(edges),
# }
# return Response(network)
# class ProteinDrugInteractionView(APIView):
# """
# Protein-Drug-Interaction Network
# """
#
# def get(self, request) -> Response:
# if request.query_params.get('proteins'):
# print("getting drugs for proteins")
# protein_ac_list = json.loads(request.query_params.get('proteins'))
# proteins = list(Protein.objects.filter(uniprot_code__in=protein_ac_list).all())
# else:
# proteins = []
# task = Task.objects.get(token=request.query_params['token'])
# result = task_result(task)
# network = result['network']
# node_attributes = result.get('node_attributes')
# if not node_attributes:
# node_attributes = {}
# node_types = node_attributes.get('node_types')
# if not node_types:
# node_types = {}
# nodes = network['nodes']
# for node in nodes:
# node_type = node_types.get(node)
# details = None
# # if not node_type:
# # print('we should not see this 1')
# # node_type, details = infer_node_type_and_details(node)
# if node_type == 'protein':
# if details:
# proteins.append(details)
# else:
# try:
# proteins.append(Protein.objects.get(uniprot_code=node))
# except Protein.DoesNotExist:
# pass
#
# pd_interactions = []
# drugs = []
#
# for protein in proteins:
# pdi_object_list = ProteinDrugInteraction.objects.filter(protein=protein)
# for pdi_object in pdi_object_list:
# pd_interactions.append(pdi_object)
# drug = pdi_object.drug
# if drug not in drugs:
# drugs.append(drug)
#
# protein_drug_edges = {
# 'proteins': ProteinSerializer(many=True).to_representation(proteins),
# 'drugs': DrugSerializer(many=True).to_representation(drugs),
# 'edges': ProteinDrugInteractionSerializer(many=True).to_representation(pd_interactions),
# }
# return Response(protein_drug_edges)
from drugstone.settings import DEFAULTS
def get_ppi_ds(source, licenced):
try:
ds = models.PPIDataset.objects.filter(name__iexact=source, licenced=licenced).last()
ds.id
return ds
except:
if licenced:
return get_ppi_ds(source, False)
return None
def get_pdi_ds(source, licenced):
try:
ds = models.PDIDataset.objects.filter(name__iexact=source, licenced=licenced).last()
ds.id
return ds
except:
if licenced:
return get_pdi_ds(source, False)
return None
def get_pdis_ds(source, licenced):
try:
ds = models.PDisDataset.objects.filter(name__iexact=source, licenced=licenced).last()
ds.id
return ds
except:
if licenced:
return get_pdis_ds(source, False)
return None
def get_drdis_ds(source, licenced):
try:
ds = models.PDisDataset.objects.filter(name__iexact=source, licenced=licenced).last()
ds.id
return ds
except:
if licenced:
return get_pdis_ds(source, False)
return None
class TaskView(APIView):
......@@ -134,12 +73,16 @@ class TaskView(APIView):
chars = string.ascii_lowercase + string.ascii_uppercase + string.digits
token_str = ''.join(random.choice(chars) for _ in range(32))
parameters = request.data['parameters']
licenced = parameters.get('licenced', False)
# find databases based on parameter strings
parameters['ppi_dataset'] = serializers.PPIDatasetSerializer().to_representation(
models.PPIDataset.objects.filter(name__iexact=parameters.get('ppi_dataset', 'STRING')).last())
parameters['pdi_dataset'] = serializers.PDIDatasetSerializer().to_representation(
models.PDIDataset.objects.filter(name__iexact=parameters.get('pdi_dataset', 'DrugBank')).last())
print(get_ppi_ds(parameters.get('ppi_dataset', DEFAULTS['ppi']), licenced))
parameters['ppi_dataset'] = PPIDatasetSerializer().to_representation(
get_ppi_ds(parameters.get('ppi_dataset', DEFAULTS['ppi']), licenced))
print(get_pdi_ds(parameters.get('pdi_dataset', DEFAULTS['pdi']), licenced))
parameters['pdi_dataset'] = PDIDatasetSerializer().to_representation(
get_pdi_ds(parameters.get('pdi_dataset', DEFAULTS['pdi']), licenced))
task = Task.objects.create(token=token_str,
target=request.data['target'],
......@@ -166,13 +109,13 @@ class TaskView(APIView):
'stats': task_stats(task),
})
@api_view(['GET'])
def get_license(request) -> Response:
from drugstone.management.includes.DatasetLoader import import_license
return Response({'license': import_license()})
@api_view(['POST'])
def fetch_edges(request) -> Response:
"""Retrieves interactions between nodes given as a list of drugstone IDs.
......@@ -184,13 +127,14 @@ def fetch_edges(request) -> Response:
Returns:
Response: List of edges which are objects with 'from' and to ' attribtues'
"""
dataset = request.data.get('dataset', 'STRING')
dataset = request.data.get('dataset', DEFAULTS['ppi'])
drugstone_ids = [node['drugstone_id'][1:] for node in request.data.get('nodes', '[]') if 'drugstone_id' in node]
dataset_object = models.PPIDataset.objects.filter(name__iexact=dataset).last()
licenced = request.data.get('licenced', False)
dataset_object = get_ppi_ds(dataset, licenced)
interaction_objects = models.ProteinProteinInteraction.objects.filter(
Q(ppi_dataset=dataset_object) & Q(from_protein__in=drugstone_ids) & Q(to_protein__in=drugstone_ids))
return Response(serializers.ProteinProteinInteractionSerializer(many=True).to_representation(interaction_objects))
return Response(ProteinProteinInteractionSerializer(many=True).to_representation(interaction_objects))
@api_view(['POST'])
......@@ -257,25 +201,6 @@ def tasks_view(request) -> Response:
return Response(tasks_info)
# def infer_node_type_and_details(node) -> Tuple[str, Protein or Drug]:
# node_type_indicator = node[0]
# if node_type_indicator == 'p':
# node_id = int(node[1:])
# # protein
# prot = Protein.objects.get(id=node_id)
# return 'protein', prot
# elif node_type_indicator == 'd':
# node_id = int(node[2:])
# # drug
# if node_id[0] == 'r':
# drug = Drug.objects.get(id=node_id[1:])
# return 'drug', drug
# elif node_id[0] == 'i':
# disorder = Disorder.objects.get(id=node_id[1:])
# return 'disorder', disorder
# return None, None
@api_view(['POST'])
def create_network(request) -> Response:
if 'network' not in request.data:
......@@ -417,8 +342,9 @@ def result_view(request) -> Response:
if 'autofill_edges' in parameters['config'] and parameters['config']['autofill_edges']:
proteins = set(map(lambda n: n[node_name_attribute][1:],
filter(lambda n: node_name_attribute in n, parameters['input_network']['nodes'])))
dataset = 'STRING' if 'interaction_protein_protein' not in parameters['config'] else parameters['config'][
'interaction_protein_protein']
dataset = DEFAULTS['ppi'] if 'interaction_protein_protein' not in parameters['config'] else \
parameters['config'][
'interaction_protein_protein']
dataset_object = models.PPIDataset.objects.filter(name__iexact=dataset).last()
interaction_objects = models.ProteinProteinInteraction.objects.filter(
Q(ppi_dataset=dataset_object) & Q(from_protein__in=proteins) & Q(to_protein__in=proteins))
......@@ -545,20 +471,20 @@ def adjacent_disorders(request) -> Response:
data = request.data
if 'proteins' in data:
drugstone_ids = data.get('proteins', [])
pdi_dataset = PDisDataset.objects.filter(name__iexact=data.get('dataset', 'DisGeNET')).last()
pdi_dataset = get_pdis_ds(data.get('dataset', DEFAULTS['pdis']), data.get('licenced', False))
# find adjacent drugs by looking at drug-protein edges
pdis_objects = ProteinDisorderAssociation.objects.filter(protein__id__in=drugstone_ids,
pdis_dataset=pdi_dataset)
pdis_dataset_id=pdi_dataset.id)
disorders = {e.disorder for e in pdis_objects}
# serialize
edges = ProteinDisorderAssociationSerializer(many=True).to_representation(pdis_objects)
disorders = DisorderSerializer(many=True).to_representation(disorders)
elif 'drugs' in data:
drugstone_ids = data.get('drugs', [])
drdi_dataset = DrDiDataset.objects.filter(name__iexact=data.get('dataset', 'DrugBank')).last()
drdi_dataset = get_drdis_ds(data.get('dataset', DEFAULTS['drdi']), data.get('licenced', False))
# find adjacent drugs by looking at drug-protein edges
drdi_objects = DrugDisorderIndication.objects.filter(drug__id__in=drugstone_ids,
drdi_dataset=drdi_dataset)
drdi_dataset_id=drdi_dataset.id)
disorders = {e.disorder for e in drdi_objects}
# serialize
edges = DrugDisorderIndicationSerializer(many=True).to_representation(drdi_objects)
......@@ -581,9 +507,9 @@ def adjacent_drugs(request) -> Response:
"""
data = request.data
drugstone_ids = data.get('proteins', [])
pdi_dataset = PDIDataset.objects.filter(name__iexact=data.get('pdi_dataset', 'NeDRex')).last()
pdi_dataset = get_pdi_ds(data.get('pdi_dataset', DEFAULTS['pdi']), data.get('licenced', False))
# find adjacent drugs by looking at drug-protein edges
pdi_objects = ProteinDrugInteraction.objects.filter(protein__id__in=drugstone_ids, pdi_dataset=pdi_dataset)
pdi_objects = ProteinDrugInteraction.objects.filter(protein__id__in=drugstone_ids, pdi_dataset_id=pdi_dataset.id)
drugs = {e.drug for e in pdi_objects}
# serialize
pdis = ProteinDrugInteractionSerializer(many=True).to_representation(pdi_objects)
......
......@@ -4,7 +4,7 @@ python3 manage.py makemigrations drugstone
python3 manage.py migrate
python3 manage.py createfixtures
python3 manage.py cleanuptasks
python3 manage.py populate_db --update -a
python3 manage.py make_graphs
#python3 manage.py populate_db --update -a
#python3 manage.py make_graphs
/usr/bin/supervisord -c "/etc/supervisor/conf.d/supervisord.conf"
......@@ -75,7 +75,7 @@ def betweenness_centrality(task_hook: TaskHook):
Network-Based Prioritization of Candidate Disease Genes or Other Molecules, Bioinformatics 29(11),
2013, pp. 1471-1473, https://doi.org/10.1093/bioinformatics/btt164.
"""
# Type: list of str
# Semantics: Names of the seed proteins. Use UNIPROT IDs for host proteins, and
# names of the for SARS_CoV2_<IDENTIFIER> (e.g., SARS_CoV2_ORF6) for
......@@ -84,7 +84,7 @@ def betweenness_centrality(task_hook: TaskHook):
# utility in frontend.
# Acceptable values: UNIPROT IDs, identifiers of viral proteins.
seeds = task_hook.parameters["seeds"]
# Type: str.
# Semantics: The virus strain for which the analysis should be run, or the
# string literal "drugs" (if used for ranking drugs).
......@@ -95,7 +95,6 @@ def betweenness_centrality(task_hook: TaskHook):
# Acceptable values: "PPI", "PPDr"
# target_or_drugs = task_hook.parameters.get("target_or_drugs", "PPI")
# Type: list of str.
# Semantics: The datasets which should be considered for the analysis.
# Example: ["Krogan", "TUM"].
......@@ -104,7 +103,7 @@ def betweenness_centrality(task_hook: TaskHook):
# Reasonable default: [].
# Acceptable values: "Krogan", "TUM".
# datasets = task_hook.parameters.get("datasets", [])
# Type: list of str.
# Semantics: Virus-host edge types which should be ignored for the analysis.
# Example: ["Overexpression"].
......@@ -113,14 +112,14 @@ def betweenness_centrality(task_hook: TaskHook):
# Reasonable default: [].
# Acceptable values: "AP-MS", "overexpression".
# ignored_edge_types = task_hook.parameters.get("ignored_edge_types", [])
# Type: bool
# Semantics: Sepcifies whether also drugs targeting interactors of the seeds should be considered.
# Example: False.
# Reasonable default: False.
# Has no effect unless trust_rank.py is used for ranking drugs.
include_indirect_drugs = task_hook.parameters.get("include_indirect_drugs", False)
# Type: bool
# Semantics: Sepcifies whether should be included in the analysis when ranking drugs.
# Example: False.
......@@ -134,7 +133,7 @@ def betweenness_centrality(task_hook: TaskHook):
# Reasonable default: False.
# Has no effect when the algorithm is used for ranking drugs.
# ignore_non_seed_baits = task_hook.parameters.get("ignore_non_seed_baits", False)
# Type: int.
# Semantics: Number of returned proteins.
# Example: 20.
......@@ -155,7 +154,7 @@ def betweenness_centrality(task_hook: TaskHook):
# Reasonable default: 0.
# Acceptable values: Floats between 0 and 1.
hub_penalty = task_hook.parameters.get("hub_penalty", 0.0)
# Type: int.
# Semantics: Number of threads used for running the analysis.
# Example: 1.
......@@ -170,24 +169,27 @@ def betweenness_centrality(task_hook: TaskHook):
search_target = task_hook.parameters.get("target", "drug-target")
filterPaths = task_hook.parameters.get("filter_paths", True)
# Parsing input file.
task_hook.set_progress(0 / 3.0, "Parsing input.")
file_path = os.path.join(task_hook.data_directory, f"internal_{ppi_dataset['name']}_{pdi_dataset['name']}.gt")
filename = f"internal_{ppi_dataset['name']}_{pdi_dataset['name']}"
if ppi_dataset['licenced'] or pdi_dataset['licenced']:
filename += "_licenced"
filename = os.path.join(task_hook.data_directory, filename+".gt")
g, seed_ids, drug_ids = read_graph_tool_graph(
file_path,
seeds,
max_deg,
include_indirect_drugs,
include_non_approved_drugs,
target=search_target
)
filename,
seeds,
max_deg,
include_indirect_drugs,
include_non_approved_drugs,
target=search_target
)
weights = edge_weights(g, hub_penalty)
# Set number of threads if OpenMP support is enabled.
if gt.openmp_enabled():
gt.openmp_set_num_threads(num_threads)
# Call graph-tool to compute betweenness centrality.
task_hook.set_progress(1 / 3.0, "Computing betweenness centralities.")
scores = g.new_vertex_property("float")
......@@ -201,20 +203,19 @@ def betweenness_centrality(task_hook: TaskHook):
if num_paths > 0:
local_scores.a /= num_paths
scores.a += local_scores.a
# Compute and return the results.
task_hook.set_progress(2 / 3.0, "Formating results.")
task_hook.set_results(
scores_to_results(
search_target,
result_size,
g,
seed_ids,
drug_ids,
scores,
ppi_dataset,
pdi_dataset,
filterPaths
scores_to_results(
search_target,
result_size,
g,
seed_ids,
drug_ids,
scores,
ppi_dataset,
pdi_dataset,
filterPaths
)
)
)
......@@ -170,9 +170,12 @@ def closeness_centrality(task_hook: TaskHook):
# Parsing input file.
task_hook.set_progress(0 / 4.0, "Parsing input.")
file_path = os.path.join(task_hook.data_directory, f"internal_{ppi_dataset['name']}_{pdi_dataset['name']}.gt")
filename = f"internal_{ppi_dataset['name']}_{pdi_dataset['name']}"
if ppi_dataset['licenced'] or pdi_dataset['licenced']:
filename += "_licenced"
filename = os.path.join(task_hook.data_directory, filename+".gt")
# g, seed_ids, viral_protein_ids, drug_ids = read_graph_tool_graph(file_path, seeds, datasets, ignored_edge_types, max_deg, ignore_non_seed_baits, include_indirect_drugs, include_non_approved_drugs)
g, seed_ids, drug_ids = read_graph_tool_graph(file_path, seeds, max_deg, include_indirect_drugs, include_non_approved_drugs, search_target)
g, seed_ids, drug_ids = read_graph_tool_graph(filename, seeds, max_deg, include_indirect_drugs, include_non_approved_drugs, search_target)
task_hook.set_progress(1 / 4.0, "Computing edge weights.")
weights = edge_weights(g, hub_penalty)
......
......@@ -150,9 +150,12 @@ def degree_centrality(task_hook: TaskHook):
# Parsing input file.
task_hook.set_progress(0 / 3.0, "Parsing input.")
file_path = os.path.join(task_hook.data_directory, f"internal_{ppi_dataset['name']}_{pdi_dataset['name']}.gt")
filename = f"internal_{ppi_dataset['name']}_{pdi_dataset['name']}"
if ppi_dataset['licenced'] or pdi_dataset['licenced']:
filename += "_licenced"
filename = os.path.join(task_hook.data_directory, filename+".gt")
# g, seed_ids, viral_protein_ids, drug_ids = read_graph_tool_graph(file_path, seeds, datasets, ignored_edge_types, max_deg, ignore_non_seed_baits, False, include_non_approved_drugs)
g, seed_ids, drug_ids = read_graph_tool_graph(file_path, seeds, max_deg, False, include_non_approved_drugs, search_target)
g, seed_ids, drug_ids = read_graph_tool_graph(filename, seeds, max_deg, False, include_non_approved_drugs, search_target)
# Set number of threads if OpenMP support is enabled.
if gt.openmp_enabled():
......
......@@ -105,9 +105,11 @@ def multi_steiner(task_hook: TaskHook):
# Parsing input file.
task_hook.set_progress(0 / (float(num_trees + 3)), "Parsing input.")
file_path = os.path.join(task_hook.data_directory, f"internal_{ppi_dataset['name']}_{pdi_dataset['name']}.gt")
# g, seed_ids, _, _ = read_graph_tool_graph(file_path, seeds, datasets, ignored_edge_types, max_deg, ignore_non_seed_baits)
g, seed_ids, _ = read_graph_tool_graph(file_path, seeds, max_deg, target=search_target)
filename = f"internal_{ppi_dataset['name']}_{pdi_dataset['name']}"
if ppi_dataset['licenced'] or pdi_dataset['licenced']:
filename += "_licenced"
filename = os.path.join(task_hook.data_directory, filename+".gt")
g, seed_ids, _ = read_graph_tool_graph(filename, seeds, max_deg, target=search_target)
# seed_map = {g.vertex_properties["name"][node]: node for node in seed_ids}
seed_map = {g.vertex_properties[node_name_attribute][node]: node for node in seed_ids}
task_hook.set_progress(1 / (float(num_trees + 3)), "Computing edge weights.")
......
......@@ -86,9 +86,12 @@ def network_proximity(task_hook: TaskHook):
# Parsing input file.
task_hook.set_progress(0.0 / 8, "Parsing input.")
file_path = os.path.join(task_hook.data_directory, f"internal_{ppi_dataset['name']}_{pdi_dataset['name']}.gt")
filename = f"internal_{ppi_dataset['name']}_{pdi_dataset['name']}"
if ppi_dataset['licenced'] or pdi_dataset['licenced']:
filename += "_licenced"
filename = os.path.join(task_hook.data_directory, filename+".gt")
# g, seed_ids, _, drug_ids = read_graph_tool_graph(file_path, seeds, "", "", max_deg, False, True, include_non_approved_drugs)
g, seed_ids, drug_ids = read_graph_tool_graph(file_path, seeds, max_deg, True, include_non_approved_drugs, target=search_target)
g, seed_ids, drug_ids = read_graph_tool_graph(filename, seeds, max_deg, True, include_non_approved_drugs, target=search_target)
# Computing edge weights.
task_hook.set_progress(1.0 / 8, "Computing edge weights.")
weights = edge_weights(g, hub_penalty)
......
......@@ -198,8 +198,11 @@ def trust_rank(task_hook: TaskHook):
# Parsing input file.
task_hook.set_progress(0 / 4.0, "Parsing input.")
file_path = os.path.join(task_hook.data_directory, f"internal_{ppi_dataset['name']}_{pdi_dataset['name']}.gt")
g, seed_ids, drug_ids = read_graph_tool_graph(file_path, seeds, max_deg, include_indirect_drugs, include_non_approved_drugs, search_target)
filename = f"internal_{ppi_dataset['name']}_{pdi_dataset['name']}"
if ppi_dataset['licenced'] or pdi_dataset['licenced']:
filename += "_licenced"
filename = os.path.join(task_hook.data_directory, filename+".gt")
g, seed_ids, drug_ids = read_graph_tool_graph(filename, seeds, max_deg, include_indirect_drugs, include_non_approved_drugs, search_target)
task_hook.set_progress(1 / 4.0, "Computing edge weights.")
weights = edge_weights(g, hub_penalty, inverse=True)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment