Skip to content
Snippets Groups Projects
Commit 2e921145 authored by AndiMajore's avatar AndiMajore
Browse files

data and package update

Former-commit-id: 219929d822b8a4fe95381ab46dc0370b55791fc2 [formerly df556a4356e02539a63f58ccb10d7cf347ff078a]
Former-commit-id: 5095e2c8acff349adf8cec3a4f486947bbf17107
parent 3c138010
No related branches found
No related tags found
No related merge requests found
......@@ -12,18 +12,15 @@ RUN apt-get install -y supervisor nginx
RUN apt-get install -y libgtk-3-dev
RUN apt-get install wget
COPY ./requirements.txt /usr/src/drugstone/requirements.txt
RUN conda install -y conda python=3.8
RUN conda install -c conda-forge -y graph-tool=2.45
RUN conda install -y conda=4.3.16
RUN conda install -c conda-forge -y graph-tool=2.32
RUN pip install gunicorn
RUN pip install pyvcf
COPY ./requirements.txt /usr/src/drugstone/requirements.txt
RUN pip install -r /usr/src/drugstone/requirements.txt
RUN pip install gunicorn
COPY ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf
#COPY scripts/docker-entrypoint.sh /usr/src/drugstone/docker-entrypoint.sh
# COPY ./scripts/ /usr/src/drugstone/scripts/
COPY ./python_nedrex/ /usr/src/drugstone/python_nedrex/
RUN pip install /usr/src/drugstone/python_nedrex/
......
......@@ -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 populate_db --update -a
python3 manage.py make_graphs
/usr/bin/supervisord -c "/etc/supervisor/conf.d/supervisord.conf"
......@@ -127,39 +127,52 @@ def multi_steiner(task_hook: TaskHook):
tree_edges.append((gtu.find_vertex(g, prop=g.vertex_properties[node_name_attribute], match=source_name)[0], gtu.find_vertex(g, prop=g.vertex_properties[node_name_attribute], match=target_name)[0]))
cost_first_tree = sum([weights[g.edge(source, target)] for source, target in tree_edges])
# returned_nodes = set(int(gtu.find_vertex(g, prop=g.vertex_properties['name'], match=first_tree.vertex_properties["name"][node])[0]) for node in range(first_tree.num_vertices()))
print(f"Before gtu: Costs={cost_first_tree}")
returned_nodes = set(int(gtu.find_vertex(g, prop=g.vertex_properties[node_name_attribute], match=first_tree.vertex_properties[node_name_attribute][node])[0]) for node in range(first_tree.num_vertices()))
print(f"After gtu: {returned_nodes}")
print(num_trees)
if num_trees > 1:
print("num_trees > 1")
is_bridge = find_bridges(g)
print("found bridges")
edge_filter = g.new_edge_property("boolean", True)
print("filtered edges")
found_new_tree = True
while len(tree_edges) > 0:
print(f"Tree edges length: {len(tree_edges)}")
if found_new_tree:
task_hook.set_progress(float(num_found_trees + 2) / (float(num_trees + 3)), "Computing Steiner tree {} of {}.".format(num_found_trees + 1, num_trees))
found_new_tree = False
tree_edge = tree_edges.pop()
print("1")
g_edge = g.edge(tree_edge[0], tree_edge[1])
if not is_bridge[g_edge]:
print("2")
edge_filter[g_edge] = False
g.set_edge_filter(edge_filter)
next_tree = steiner_tree(g, seeds, seed_map, weights, hub_penalty > 0)
print("3")
next_tree_edges = set()
for next_tree_edge in next_tree.edges():
# source_name = next_tree.vertex_properties["name"][next_tree.vertex_index[next_tree_edge.source()]]
# target_name = next_tree.vertex_properties["name"][next_tree.vertex_index[next_tree_edge.target()]]
# next_tree_edges.add((gtu.find_vertex(g, prop=g.vertex_properties['name'], match=source_name)[0], gtu.find_vertex(g, prop=g.vertex_properties['name'], match=target_name)[0]))
print("4")
source_name = next_tree.vertex_properties[node_name_attribute][next_tree.vertex_index[next_tree_edge.source()]]
target_name = next_tree.vertex_properties[node_name_attribute][next_tree.vertex_index[next_tree_edge.target()]]
next_tree_edges.add((gtu.find_vertex(g, prop=g.vertex_properties[node_name_attribute], match=source_name)[0],gtu.find_vertex(g, prop=g.vertex_properties[node_name_attribute], match=target_name)[0]))
cost_next_tree = sum([weights[g.edge(source, target)] for source, target in next_tree_edges])
if cost_next_tree <= cost_first_tree * ((100.0 + tolerance) / 100.0):
print("5")
found_new_tree = True
num_found_trees += 1
for node in range(next_tree.num_vertices()):
print("GTU again")
# returned_nodes.add(int(gtu.find_vertex(g, prop=g.vertex_properties['name'], match=next_tree.vertex_properties["name"][node])[0]))
returned_nodes.add(int(gtu.find_vertex(g, prop=g.vertex_properties[node_name_attribute],match=next_tree.vertex_properties[node_name_attribute][node])[0]))
print("GTU done")
removed_edges = []
print("6")
for source, target in tree_edges:
if not ((source, target) in set(next_tree_edges)) or ((target, source) in set(next_tree_edges)):
removed_edges.append((source, target))
......
......@@ -4,13 +4,16 @@ __time = 0
def __dfs_find_bridges(g, node, visited, disc, low, parent, is_bridge):
print("Dfs_find_bridges")
visited[node] = True
global __time
disc[node] = __time
low[node] = __time
__time += 1
print(f"Checking neighbors of {g.vertex(node)}")
print(f"Degree = {g.vertex(node).out_degree()}")
for nb in g.get_all_neighbors(node):
if not visited[nb]:
parent[nb] = node
......@@ -18,12 +21,12 @@ def __dfs_find_bridges(g, node, visited, disc, low, parent, is_bridge):
low[node] = min(low[node], low[nb])
if low[nb] > disc[node]:
is_bridge[g.edge(node, nb)] = True
elif int(nb) != parent[node]:
elif int(nb) != parent[node]: #TODO can in theory be removed because
low[node] = min(low[node], disc[nb])
def find_bridges(g):
r"""Finds all bridges in a graph."""
print("Finding bridges")
global __time
__time = 0
sys.setrecursionlimit(g.num_vertices() + 1)
......
......@@ -79,13 +79,25 @@ def read_graph_tool_graph(file_path, seeds, max_deg, include_indirect_drugs=Fals
# Check that all seed seeds have been matched and throw error, otherwise.
# print(deleted_nodes)
print(seed_ids)
for protein, found in is_matched.items():
if not found:
raise ValueError("Invalid seed protein {}. No node named {} in {}.".format(protein, protein, file_path))
# print(seed_ids)
# for protein, found in is_matched.items():
# if not found:
# raise ValueError("Invalid seed protein {}. No node named {} in {}.".format(protein, protein, file_path))
# Delete edges that should be ignored or are not contained in the selected dataset.
deleted_edges = []
for edge in g.edges():
if edge.source == edge.target:
deleted_edges.append(edge)
g.set_fast_edge_removal(fast=True)
for edge in deleted_edges:
g.remove_edge(edge)
g.set_fast_edge_removal(fast=False)
deleted_edges = []
if (drug_ids and not include_indirect_drugs): # If only_direct_drugs should be included, remove any drug-protein edges that the drug is not a direct neighbor of any seeds
direct_drugs = set()
for edge in g.edges():
......
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