Skip to content

Commit

Permalink
Display action of the drug on the target
Browse files Browse the repository at this point in the history
  • Loading branch information
krassowski committed Oct 8, 2020
1 parent 5f2d62d commit e6f9a9f
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 19 deletions.
17 changes: 13 additions & 4 deletions website/static/js_templates/node_tooltip.njk
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,27 @@
{% endif %}

{% if node.type === types.drug %}
{% set drug = node.data.drug %}
{% set interaction = node.data.interaction %}
<div class="badges">
{% for group in node.data.groups %}
{% for group in drug.groups %}
<div class="badge {{ group }}">{{ group }}</div>
{% endfor %}
</div>
<div>
{% if node.data.type %}
{{ node.data.type | title }}
{% if drug.type %}
{{ drug.type | title }}
{% endif %}
</div>
{% if interaction.actions %}
<div>
{% for action in interaction.actions %}
{{ action | title }}
{% endfor %}
</div>
{% endif %}
<p>
See more in DrugBank: <a href="https://www.drugbank.ca/drugs/{{ node.data.drugbank }}">{{ node.data.drugbank }}</a>
See more in DrugBank: <a href="https://www.drugbank.ca/drugs/{{ drug.drugbank }}">{{ drug.drugbank }}</a>
</p>
{% endif %}

Expand Down
8 changes: 4 additions & 4 deletions website/static/network.js
Original file line number Diff line number Diff line change
Expand Up @@ -915,14 +915,14 @@ var Network = function ()
kinase_nodes.forEach(function(kinase) {
var kinase_drugs = []
kinase.drugs_targeting_kinase_gene.forEach(
function(drug_data)
function(target_data)
{
var drug_node = {
name: drug_data.name,
name: target_data['drug'].name,
r: config.radius,
type: types.drug,
group: kinase.group,
data: drug_data
data: target_data
}
addEdge(drug_node, kinase)
kinase_drugs.push(drug_node)
Expand Down Expand Up @@ -1450,4 +1450,4 @@ var Network = function ()
}

return public_space
}
}
8 changes: 5 additions & 3 deletions website/tests/views/test_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ def create_network():
target = DrugTarget()
target.gene = known_interactor_of_x.protein.gene
target.drug = drug
target.actions = {'antagonist', 'inhibitor'}

group = KinaseGroup(
name='Group of kinases',
Expand Down Expand Up @@ -130,11 +131,12 @@ def test_representation(self):
assert kinase['name'] == 'Kinase Y'

# test kinase drugs
drugs = kinase['drugs_targeting_kinase_gene']
assert len(drugs) == 1
drug = drugs[0]
targets = kinase['drugs_targeting_kinase_gene']
assert len(targets) == 1
drug = targets[0]['drug']
assert drug['name'] == 'Drug targeting Kinase Y'
assert drug['drugbank'] == 'DB01'
assert set(targets[0]['interaction']['actions']) == {'antagonist', 'inhibitor'}

# test sites
assert len(representation['sites']) == 2
Expand Down
11 changes: 6 additions & 5 deletions website/views/_commons.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from collections import defaultdict
from typing import Dict, Set

from models import Gene
from models.bio.drug import Drug, DrugTarget
Expand All @@ -22,7 +23,7 @@ def represent_mutation(mutation, data_filter, representation_type=dict):
)


def drugs_interacting_with_kinases(filter_manager, kinases):
def drugs_interacting_with_kinases(filter_manager, kinases) -> Dict[Gene, Set[DrugTarget]]:
from sqlalchemy import and_

kinase_gene_ids = [kinase.protein.gene_id for kinase in kinases if kinase.protein]
Expand All @@ -34,8 +35,8 @@ def drugs_interacting_with_kinases(filter_manager, kinases):
),
lambda query: query.join(DrugTarget)
)
drugs_by_kinase = defaultdict(set)
targets_by_kinase = defaultdict(set)
for drug in drugs:
for target_gene in drug.target_genes:
drugs_by_kinase[target_gene].add(drug)
return drugs_by_kinase
for target in drug.targets:
targets_by_kinase[target.gene].add(target)
return targets_by_kinase
12 changes: 9 additions & 3 deletions website/views/network.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def __init__(self, protein, filter_manager, include_kinases_from_groups=False):

protein_kinases_names = [kinase.name for kinase in kinases]

drugs_by_kinase = drugs_interacting_with_kinases(filter_manager, kinases)
targets_by_kinase = drugs_interacting_with_kinases(filter_manager, kinases)

kinase_reprs = []
for kinase, count in kinases_counts.items():
Expand All @@ -101,7 +101,13 @@ def __init__(self, protein, filter_manager, include_kinases_from_groups=False):
json_repr['protein']['mutations_count'] = count

json_repr['drugs_targeting_kinase_gene'] = [
drug.to_json() for drug in drugs_by_kinase[kinase.protein.gene]
{
'drug': target.drug.to_json(),
'interaction': {
'actions': list(target.actions)
}
}
for target in targets_by_kinase[kinase.protein.gene]
]
kinase_reprs.append(json_repr)

Expand Down Expand Up @@ -261,7 +267,7 @@ def choose_impact(mutations, site, kinase_name, mimp_list):
continue
impact = choose_impact(site_mutations, site, kinase_name, site_mimp_kinases)
drugs = kinase['drugs_targeting_kinase_gene']
drugs = ','.join([drug['name'] for drug in drugs]) or ''
drugs = ','.join([drug['drug']['name'] for drug in drugs]) or ''
row = protein_and_site + [impact, kinase_name, drugs]
content.append('\t'.join(row))

Expand Down

0 comments on commit e6f9a9f

Please sign in to comment.