Skip to content
Snippets Groups Projects
Commit 45466c25 authored by Le, Mia's avatar Le, Mia
Browse files

changed path creation

parent ea1acd89
No related branches found
No related tags found
No related merge requests found
Showing
with 235 additions and 1062 deletions
......@@ -32,10 +32,10 @@ class AlgorithmWrapper(object):
self.uid = uid
def set_homepath(self, path):
self.home_path = path
self.home_path = os.path.abspath(path)
def create_tmp_output_dir(self, tmp_dir):
out_dir = f'{tmp_dir}/{self.name}'
out_dir = os.path.join(tmp_dir, self.name)
if not os.path.exists(out_dir):
os.mkdir(out_dir)
print(f"created temporary directory for {self.name} named {out_dir}...")
......
......@@ -28,13 +28,14 @@ class DiamondWrapper(AlgorithmWrapper):
# Run DIAMOnD.
# path to diamond
diamond = f'cd {self.home_path}/tools/DIAMOnD/; python DIAMOnD.py'
diamond_path = os.path.join(self.home_path, 'tools/DIAMOnD/')
diamond = f'cd {diamond_path}; python DIAMOnD.py'
ppi = inputparams[0] # path to ppi inputfile
seeds = inputparams[1] # path to seed inputfile
nof_predictions = inputparams[2] # how many active genes should be predicted
out_filename = self.name_file('out') # name the outputfile
algo_output = f'{self.output_dir}/{out_filename}' # specify the output location
algo_output = os.join(self.output_dir, out_filename) # specify the output location
#MC:
#CONFIG alpha = 1
command = f'{diamond} {ppi} {seeds} {nof_predictions} {self.alpha} {algo_output}'
......@@ -50,9 +51,9 @@ class DiamondWrapper(AlgorithmWrapper):
# prepare inputfiles
# name ppi and seed file, specify path to files
ppi_filename = self.name_file('ppi')
ppi_file = f'{self.output_dir}/{ppi_filename}'
ppi_file = os.path.join(self.output_dir, ppi_filename)
seed_filename = self.name_file('seeds')
seed_file = f'{self.output_dir}/{seed_filename}'
seed_file = os.path.join(self.output_dir, seed_filename)
# create ppi file
with open(ppi_file, "w") as file:
......
......@@ -45,12 +45,11 @@ class DominoWrapper(AlgorithmWrapper):
outputname = (os.path.basename(seeds)).rsplit(".")[0]
#MC:
#CONFIG output_name = 'modules.out'
algo_output = f'{self.output_dir}/{outputname}/{self.output_name}'
algo_output = os.path.join(self.output_dir, outputname, self.output_name)
outputfilename = self.name_file('out', 'out')
command = f'mv {algo_output} {self.output_dir}/{outputfilename}'
command = f'mv {algo_output} {os.path.join(self.output_dir, outputfilename)}'
subprocess.call(command, shell=True, stdout=subprocess.PIPE)
algo_output = f'{self.output_dir}/{outputfilename}'
algo_output = os.path.join(self.output_dir, outputfilename)
assert os.path.exists(algo_output), f'Could not find output file {algo_output} for domino'
print(f"{self.name} results saved in {algo_output}")
......@@ -66,10 +65,10 @@ class DominoWrapper(AlgorithmWrapper):
print(f'creating {self.name} input files in {self.output_dir}')
ppi_filename = self.name_file('ppi', 'sif')
ppi_file = f'{self.output_dir}/{ppi_filename}'
ppi_file = os.path.join(self.output_dir, ppi_filename)
seed_filename = self.name_file('seeds')
seed_file = f'{self.output_dir}/{seed_filename}'
seed_file = os.path.join(self.output_dir, seed_filename)
# create the ppi_file which contains all edges in the ppi_network
with open(ppi_file, "w") as file:
......@@ -89,7 +88,7 @@ class DominoWrapper(AlgorithmWrapper):
print(f'{self.name} seeds are saved in {seed_file}')
slices_filename = self.name_file('slices')
slices_output = f'{self.output_dir}/{slices_filename}'
slices_output = os.path.join(self.output_dir, slices_filename)
if not os.path.exists(slices_output):
print('creating domino slices_file...')
......
......@@ -42,14 +42,14 @@ class RobustWrapper(AlgorithmWrapper):
# [5] reduction factor
# [6] number of steiner trees to be computed
# [7] threshold
robust = f'cd {self.home_path}/tools/robust; python robust.py'
robust_path = os.join(self.home_path, 'tools/robust')
robust = f'cd {robust_path}; python robust.py'
ppi = inputparams[0]
seeds = inputparams[1]
out_filename = self.name_file('out')
algo_output = f'{self.output_dir}/{out_filename}'
algo_output = os.path.join(self.output_dir, out_filename)
# algo_output = f'./ms.graphml'
#0.25 0.9 30 0.1
#MC:
......@@ -73,9 +73,9 @@ class RobustWrapper(AlgorithmWrapper):
# prepare inputfiles
ppi_filename = self.name_file('ppi')
ppi_file = f'{self.output_dir}/{ppi_filename}'
ppi_file = os.path.join(self.output_dir, ppi_filename)
seed_filename = self.name_file('seeds')
seed_file = f'{self.output_dir}/{seed_filename}'
seed_file = os.path.join(self.output_dir, seed_filename)
with open(ppi_file, "w") as file:
file.write('node1\tnode2\n')
......
......@@ -6,6 +6,11 @@ from configparser import ConfigParser
class TemplateWrapper(AlgorithmWrapper):
def __init__(self):
"""Each tool needs certain predefined instance variables:
The only instance variables that need to be defined for each tool individually are:
- name (string): The name of the algorithm/tool
- code (int): A unique integer code for this tool. Choose any number (<21) that is not taken by other tools yet (currently taken are: 0,1,2,3)
- any constant numbers or variables that are defined in the config file for this tool
The following variables are inherited from the AlgorithmWrapper Super Class:
- UID (string)
- weight (int)
......@@ -15,11 +20,6 @@ class TemplateWrapper(AlgorithmWrapper):
- home_path (string)
- config (string)
There is no need to redefine these variables when introducing a new algorithm.
The only instance variables that need to be defined for each tool individually are:
- name (string): The name of the algorithm/tool
- code (int): A unique integer code for this tool. Choose any number (<21) that is not taken by other tools yet (currently taken are: 0,1,2,3)
- any constant numbers or variables that are defined in the config file for this tool
"""
super().__init__()
self.name = '<tool_name>'
......@@ -42,7 +42,6 @@ class TemplateWrapper(AlgorithmWrapper):
Hint: Execute the algorithm and specify the outputfile name. From that outputfile
extract the predicted Active Module by using extract_output.
Args:
inputparams (list): A list of parameters for the algorithm that is defined via
prepare_input()
......@@ -109,7 +108,7 @@ class TemplateWrapper(AlgorithmWrapper):
transforms them into a list of vertices in the PPI network.
This list is handed back to the main CAMI suite for further
processing.
FYI: CAMI uses the indices in the PPI network to reference
Hint: CAMI uses the indices in the PPI network to reference
the input genes i.e. the genes in the list do not correspond
to the genes in the input files.
......
#!/usr/bin/env python3
from cProfile import label
import os
import sys
import shutil
from unittest import result
from turtle import color
from DiamondWrapper import DiamondWrapper
from DominoWrapper import DominoWrapper
from RobustWrapper import RobustWrapper
......@@ -48,16 +49,12 @@ def main(ppi_network, seeds, tools, tool_weights, consensus, evaluate,
if choice == 'y':
pass
else:
print('Abort. Please try again.')
print('Aborted because of missing seeds. Please try again.')
exit(1)
seed_lst = checked_seed_lst.copy()
print(f'Continuing with vertices at indices {[int(seed) for seed in seed_lst]} as input seeds')
# set weights for seed genes in ppi_graph
for seed in seed_lst:
ppi_graph.vertex_properties["cami_score"][seed] = seed_score #CONFIG seed_score = 10.0
# change directory to ~/cami/cami (home of cami.py)
cami_home = sys.argv[0].rsplit('/', 1)
os.chdir(cami_home[0])
......@@ -65,7 +62,7 @@ def main(ppi_network, seeds, tools, tool_weights, consensus, evaluate,
home_path = os.path.dirname(os.getcwd())
print(home_path)
if identifier==None:
identifier = uuid.uuid4()
identifier = str(uuid.uuid4())
if output_dir==None:
output_dir = f'{home_path}/data/output/{identifier}'
......@@ -106,7 +103,9 @@ def main(ppi_network, seeds, tools, tool_weights, consensus, evaluate,
for idx, tool in enumerate(tool_wrappers):
tool.set_weight(float(tool_weights[idx]))
cami = cami_suite.cami(ppi_graph, seed_lst, tool_wrappers, output_dir, identifier, tmp_dir, home_path, configuration)
original_ppi = ppi_graph.copy()
cami = cami_suite.cami(ppi_graph, seed_lst, tool_wrappers, output_dir, identifier, tmp_dir, home_path, configuration, seed_score)
if ncbi:
cami.ncbi = True
......@@ -140,220 +139,227 @@ def main(ppi_network, seeds, tools, tool_weights, consensus, evaluate,
elif (not consensus and not evaluate):
cami.reset_ppi_graph()
# SEED VARIATION
if seed_variation:
def make_consensus():
def make_consensus(vis=False):
result_sets = cami.make_predictions()
cami.create_consensus(result_sets)
if visualize:
if visualize and vis:
url = cami.visualize()
cami.download_diagram(url)
with open('/Users/Mia/cami_local/cami/data/output/explorativeness.tsv', 'a') as f:
make_consensus(vis=True)
seedname = seeds.rsplit('/',1)[0]
for tool in cami.result_gene_sets:
f.write(f'\n{seedname}\t{len(cami.seed_lst)}\t{tool}\t{len(cami.result_gene_sets[tool])}')
with open(f'{output_dir}/00_node_degrees.tsv', 'w') as node_degrees:
node_degrees.write('vertex\tout_degree\tin_degree\n')
for vertex in cami.ppi_graph.vertices():
node_degrees.write(f'{cami.ppi_vertex2gene[vertex]}\t{vertex.out_degree()}\t{vertex.in_degree()}\n')
# initialize cami and seed_var
random.seed(20)
removal_frac = 0.5
nof_iterations = 3
base_seeds = cami.origin_seed_lst
used_tools = [tool for tool in cami.result_gene_sets]
original_seeds = [cami.ppi_vertex2gene[seed] for seed in base_seeds]
print(f'Initializing CAMI and the seed variation by running CAMI with all given seeds:{original_seeds}')
#make_consensus(vis=True)
random.seed(50)
removal_frac = 0.2
nof_iterations = int(seed_variation)
used_tools = list(cami.result_gene_sets.keys())
nof_seeds = len(base_seeds)
nof_removals = int(nof_seeds * removal_frac)
make_consensus()
nof_removals = max([int(nof_seeds * removal_frac), 1])
variation_results = []
with open(f'{output_dir}/seedvariation_results1.tsv', 'w') as res_table1:
with open(f'{output_dir}/seedvariation_results2.tsv', 'w') as res_table2:
result_file_1 = f'{output_dir}/00_seedvariation_results1.tsv'
result_file_2 = f'{output_dir}/00_seedvariation_results2.tsv'
result_file_3 = f'{output_dir}/00_seedvariation_results3.tsv'
result_file_4 = f'{output_dir}/00_seedvariation_results4.tsv'
with open(result_file_1, 'w') as res_table1:
with open(result_file_2, 'w') as res_table2:
with open(result_file_3, 'w') as res_table3:
with open(result_file_4, 'w') as res_table4:
res_table1.write('id')
res_table2.write('id\tnof_removed_seeds\tremoved_seeds\t{used_seeds}')
res_table2.write('\ttool')
res_table2.write(f'\trediscovery_prevalence')
res_table2.write('\trediscovery_rate')
res_table2.write('\trediscovered_seeds')
res_table2.write('id\tnof_removed_seeds\tremoved_seeds\t{used_seeds}\ttool\trediscovery_prevalence')
res_table2.write('\trediscovery_rate\trediscovered_seeds')
for tool in used_tools:
res_table1.write(f'\t{tool}')
res_table1.write('\n')
res_table2.write('\n')
res_table3.write('id\ttrue_positives\trediscoveries/module_size\n')
tp_rate_dict = {k:list() for k in used_tools}
module_size_dict = {k:list() for k in used_tools}
for ident in range(nof_iterations):
res_table1.write(f'{ident}')
# update uid
new_identifier = identifier + f'_{ident}'
cami.reset_cami(new_uid=new_identifier)
# cami.ppi_graph = original_ppi
#remove seeds
print(f'Removing {nof_removals} seeds from the original seed list...')
removed_seeds_idx = random.sample(list(range(nof_seeds)), nof_removals)
removed_seeds = cami.remove_seeds(removed_seeds_idx)
rem_seeds = [cami.ppi_vertex2gene[seed] for seed in removed_seeds]
print(f'Removed: {rem_seeds} from the seed list')
print('Updating tools and repeat CAMI')
# reinitialize tools
cami.initialize_all_tools()
# repeat consensus
if ident%5==0:
make_consensus(vis=True)
else:
make_consensus()
used_seeds = [cami.ppi_vertex2gene[seed] for seed in cami.seed_lst]
rem_seeds = [cami.ppi_vertex2gene[seed] for seed in removed_seeds]
result_dict = cami.result_gene_sets
redisc_rate_dict = {}
redisc_seeds_dict = {}
print(result_dict)
for tool in result_dict:
nof_predictions = len(result_dict[tool]) + len(used_seeds)
redisc_seeds = list(set(result_dict[tool]).intersection(set(rem_seeds)))
redisc_prev = len(redisc_seeds)
redisc_rate = redisc_prev / nof_removals
redisc_rate_dict[tool] = redisc_rate #true positive rate: rate verhältnis von gefundenen und allgemein gefundenen
redisc_seeds_dict[tool] = redisc_seeds
tp_rate = redisc_prev / len(removed_seeds)
tp_rate_dict[tool].append(tp_rate)
module_size_frac = redisc_prev / nof_predictions
assert module_size_frac <= 1
module_size_dict[tool].append(module_size_frac)
res_table3.write(f'{ident}\t{tool}\t{tp_rate}\t{module_size_frac}\n')
res_table1.write('\t')
for idx,seed in enumerate(redisc_seeds):
if idx == 0:
res_table1.write(f'\t{redisc_seeds[0]}')
res_table1.write(f'{redisc_seeds[0]}')
else:
res_table1.write(f',{seed}')
res_table2.write(f'{tool}')
print(f'{tool} rediscovered {redisc_seeds} after removing {rem_seeds}.')
res_table2.write(f'{ident}\t{nof_removals},\t{rem_seeds}\t{used_seeds}\t{tool}\t{redisc_prev}\t{redisc_rate}\t{redisc_seeds}\n')
res_table2.write(f'{ident}\t{tool}\t{nof_removals},\t{rem_seeds}\t{used_seeds}\t{redisc_prev}\t{redisc_rate}\t{redisc_seeds}\n')
res_table1.write('\n')
variation_results.append((redisc_rate_dict, redisc_seeds_dict, used_seeds, rem_seeds))
print(variation_results)
print(f'Result tables are saved in the following locations:')
print(f'Rediscovered seeds: {result_file_1}')
print(f'Rediscovery Rates: {result_file_2}')
print(f'Sensitivity: {result_file_3}')
# print(variation_results)
rediscovery_rates_results = [results[0] for results in variation_results]
print(rediscovery_rates_results)
# print(rediscovery_rates_results)
tools = [tool for tool in rediscovery_rates_results[0].keys()]
print(tools)
redisc_rates = [[res[tool] for res in rediscovery_rates_results] for tool in tools]
#PLOT
# Create a figure instance
fig = plt.figure()
plt.figure(figsize=(16,6))
# Extract Figure and Axes instance
ax1 = plt.subplot(1,2,1, label='ax1')
# Create a plot
violins1 = ax1.violinplot(redisc_rates, showmeans=True, showextrema=True)
for violinpart in list(violins1.keys())[2:]:
violins1[violinpart].set_color('k')
for violin in violins1['bodies']:
violin.set_facecolor('red')
# Add title
ax1.set_title(f'Rediscovery rate after randomly removing {nof_removals} seeds\n{nof_iterations} times from {identifier} seeds.', wrap=True)
ax1.set_xticks(list(range(1,len(tools)+1)))
ax1.set_xticklabels(tools)
ax1.set_ylabel('Rediscovery rate (<rediscovered seeds>/<removed seeds>)', wrap=True)
# ax4 = plt.subplot(1,3,2, label='ax4')
# violins2 = ax4.violinplot([tp_rate_dict[tool] for tool in tools], showmeans=True, showextrema=True)
# for violinpart in list(violins2.keys())[2:]:
# violins2[violinpart].set_color('k')
# for violin in violins2['bodies']:
# violin.set_facecolor('orange')
# # Add title
# ax4.set_title(f'True positive rates after randomly removing {nof_removals} seeds\n{nof_iterations} times from {identifier} seeds.', wrap=True)
# ax4.set_xticks(list(range(1,len(tools)+1)))
# ax4.set_xticklabels(tools)
# ax4.set_ylabel('Sensitivity (TP/TP + FN)', wrap=True)
ax5 = plt.subplot(1,2,2)
violins3 = ax5.violinplot([module_size_dict[tool] for tool in tools], showmeans=True, showextrema=True)
# Add title
for violinpart in list(violins3.keys())[2:]:
violins3[violinpart].set_color('k')
for violin in violins3['bodies']:
violin.set_facecolor('blue')
ax5.set_title(f'Ratio of number of rediscovered seeds and predicted module size\nafter removing {nof_removals} seeds {nof_iterations} times from {identifier} seeds.', wrap=True)
ax5.set_xticks(list(range(1,len(tools)+1)))
ax5.set_xticklabels(tools)
ax5.set_ylabel('(<rediscovered seeds>/<module size>)')
plt.tight_layout
plt.savefig(f'{output_dir}/00_{identifier}_seed_variation_result.png')
print(f'Violin plot saved under: 00_{identifier}_seed_variation_result.png')
# plot TP Rate
# Extract Figure and Axes instance
fig, ax = plt.subplots()
fig2, ax2 = plt.subplots()
colors = ['red', 'blue', 'black', 'purple']
legend = []
# Create a plot
ax.violinplot(redisc_rates, showmeans=True, showextrema=True)
for idx,tool in enumerate(used_tools):
scatter = ax2.scatter(list(range(1,nof_iterations + 1)),tp_rate_dict[tool], color=colors[idx])
legend.append(scatter)
plt.legend(legend,
used_tools)
# Add title
ax.set_title(f'Rediscovery rate after randomly removing {nof_removals} seeds {nof_iterations} times from {identifier} seeds.')
ax.set_xticks(list(range(1,len(tools)+1)))
ax.set_xticklabels(tools)
# Save the figure and show
plt.tight_layout()
plt.savefig(f'{output_dir}/{identifier}_seed_variation_rediscovery_rates.png')
# variation_results:
# [tuple(<list of used seeds>,
# <list of removed_seeds>,
# <results dict: <tool>:<list of predicted genes>>), tuple(...), ...]
# # SEED VARIATION
# if seed_variation:
# random.seed(10)
# removal_frac = 0.3
# nof_iterations = 5
# result_sets = cami.make_predictions()
# cami.create_consensus(result_sets)
# if visualize:
# url = cami.visualize()
# cami.download_diagram(url)
# base_seeds = cami.seed_lst #lst
# base_results = cami.result_gene_sets #dict
# used_tools = [tool for tool in base_results]
# nof_removals = int(len(base_seeds) * removal_frac)
# nof_seeds = len(base_seeds)
# variation_results = []
# tool_dict = {'CAMI':0, 'DIAMOnD':1, 'DOMINO':2, 'ROBUST':3}
# with open(f'{output_dir}/seedvariation_results.tsv', 'w') as res_table:
# res_table.write('id')
# for tool in used_tools:
# res_table.write(f'\t{tool}')
# res_table.write('\n')
# for ident in range(nof_iterations):
# #reinitialize cami
# #cami.ppi_graph = ppi_graph
# cami.seed_lst = base_seeds
# new_identifier = identifier + f'_{ident}'
# #cami.result_gene_sets = {}
# #cami.cami_vertices = []
# res_table.write(f'{ident}')
# #remove seeds
# removed_seeds_idx = random.sample(list(range(nof_seeds)), nof_removals)
# removed_seeds = cami.remove_seeds(removed_seeds_idx).copy()
# cami = cami_suite.cami(ppi_graph, cami.seed_lst, tool_wrappers, output_dir, new_identifier, tmp_dir, home_path, configuration)
# cami.initialize_all_tools()
# cami.initial_seed_lst = initial_seedlst
# for seed in removed_seeds:
# cami.ppi_graph.vertex_properties["cami_score"][seed] = 0.0 #CONFIG seed_score = 10.0
# print(cami.ppi_graph.vertex_properties["predicted_by"][seed])
# for seed in cami.seed_lst:
# cami.ppi_graph.vertex_properties["cami_score"][seed] = 10.0
# print(cami.ppi_graph.vertex_properties["predicted_by"][seed])
# result_sets = cami.make_predictions()
# cami.create_consensus(result_sets)
# if visualize:
# url = cami.visualize()
# cami.download_diagram(url)
# used_seeds = [cami.ppi_vertex2gene[seed] for seed in cami.seed_lst]
# rem_seeds = [cami.ppi_vertex2gene[seed] for seed in removed_seeds]
# result_dict = cami.result_gene_sets
# redisc_rate_dict = {}
# redisc_seeds_dict = {}
# for tool in result_dict:
# redisc_seeds = list(set(result_dict[tool]).intersection(set(rem_seeds)))
# redisc_prev = len(redisc_seeds)
# redisc_rate = redisc_prev / nof_removals
# redisc_rate_dict[tool] = redisc_rate
# redisc_seeds_dict[tool] = redisc_seeds
# for idx,seed in enumerate(redisc_seeds):
# if idx == 0:
# res_table.write(f'\t{redisc_seeds[0]}')
# else:
# res_table.write(f',{seed}')
# res_table.write('\n')
# variation_results.append((redisc_rate_dict, redisc_seeds_dict, used_seeds, rem_seeds))
ax2.set_title(f'Sensitivity (TP/TP + FN) in {nof_iterations} iterations.', wrap=True)
# print(variation_results)
ax2.set_xticks(list(range(1,nof_iterations + 1)))
ax2.set_xticklabels([idx if idx%5==0 else '' for idx in range(1,nof_iterations+1)])
ax2.set_xlabel('Iterations')
ax2.set_ylabel('Sensitivity (TP/TP + FN)')
# Save the figure
sensitivity_file = f'{output_dir}/00_{identifier}_seed_variation_tp_rates.png'
fig2.savefig(sensitivity_file)
print(f'Sensitivity plot saved under {sensitivity_file}')
# plot module size frac
fig3, ax3 = plt.subplots()
legend = []
for idx,tool in enumerate(used_tools):
scatter = ax3.scatter(list(range(1,nof_iterations + 1)), module_size_dict[tool], color=colors[idx])
legend.append(scatter)
plt.legend(legend,
used_tools)
# Add title
ax3.set_title(f'Ratio of number of rediscovered seeds and CAMI module size', wrap=True)
# rediscovery_rates_results = [results[0] for results in variation_results]
# mean_discovery_rates = {}
# std_discovery_rates = {}
# for tool in used_tools:
# redisc_rates = [res[tool] for res in rediscovery_rates_results]
# mean_discovery_rates[tool] = np.mean(redisc_rates)
# std_discovery_rates[tool] = np.std(redisc_rates)
# # Create lists for the plot
# x_pos = np.arange(len(used_tools))
# redisc_rates = [mean_discovery_rates[tool] for tool in used_tools]
# redisc_error = [std_discovery_rates[tool] for tool in used_tools]
# # Build the plot
# fig, ax = plt.subplots()
# ax.bar(x_pos, redisc_rates, yerr=redisc_error, align='center', alpha=0.5, ecolor='black', capsize=10)
# ax.set_ylabel(f'Mean rediscovery rate after removing {removal_frac * 100}% of the original seeds.')
# ax.set_xticks(x_pos)
# ax.set_xticklabels(used_tools)
# ax.set_title(f'Rediscovery rate of AMIMs after removing random seeds from the original seed set:{[cami.ppi_vertex2gene[seed] for seed in base_seeds]}')
# ax.yaxis.grid(True)
# # Save the figure and show
# plt.tight_layout()
# plt.savefig(f'{output_dir}/{identifier}_seed_variation_rediscovery_rates.png')
# variation_results:
# [tuple(<list of used seeds>,
# <list of removed_seeds>,
# <results dict: <tool>:<list of predicted genes>>), tuple(...), ...]
ax3.set_xticks((list(range(1,nof_iterations + 1))))
ax3.set_xticklabels([idx if idx%5==0 else '' for idx in range(1,nof_iterations+1)])
ax3.set_xlabel('Iterations')
ax3.set_ylabel('Module size ratio (<rediscovered seeds>/<module size>)')
# Save the fig1ure
size_file = f'{output_dir}/00_{identifier}_redisc_modulesize_rate.png'
fig3.savefig(size_file)
print(f'Sensitivity plot saved under {size_file}')
if save_temps:
print(f'All temporary files were kept in {tmp_dir}')
......@@ -386,7 +392,7 @@ if __name__ == "__main__":
parser.add_argument('-w', '--tool_weights', nargs='+', action='store', default=None,
help="List of weights for the tools. If you have [domino, diamond, robust] as list of tools and diamonds weight should be twice as high as the other tools type: 1 2 1")
parser.add_argument('-c', '--consensus', action='store_true', help="run only the consensus prediction part of cami")
parser.add_argument('-var', '--seed_variation', action='store_true', help="vary the seeds of cami")
parser.add_argument('-var', '--seed_variation', action='store', help="repeat consensus selection multiple times (please provide the number of iterations) while removing 20 percent of the seeds.")
parser.add_argument('-e', '--evaluate', action='store_true', help="run only the evaluation part of cami")
parser.add_argument('-o', '--output_dir', action='store', help="path to output directory")
parser.add_argument('-id', '--identifier', action='store', help="ID for the current excecution of cami. Defaults to a randomly generated ID")
......
......@@ -31,7 +31,7 @@ class cami():
""" A module that is used for Active Module identifaction based on a
consensus approach
"""
def __init__(self, ppi_graph, seed_lst, tool_wrappers, output_dir, uid, tmp_dir, home_path, config):
def __init__(self, ppi_graph, seed_lst, tool_wrappers, output_dir, uid, tmp_dir, home_path, config, seed_score):
"""Instance variables of CAMI
:param ppi_graph: The PPI-Graph on which all predictions in CAMI are based of
......@@ -59,7 +59,7 @@ class cami():
self.tool_wrappers = tool_wrappers
self.output_dir = output_dir
self.tmp_dir = tmp_dir
self.uid = uid
self.uid = str(uid)
self.nof_tools = len(tool_wrappers)
self.result_gene_sets = {} #contains the genes predicted by the tools (not the indices)
self.code2toolname = {tool.code:tool.name for tool in self.tool_wrappers}
......@@ -68,16 +68,18 @@ class cami():
self.cami_vertices = []
self.ncbi = False
self.config = config
self.seed_score = seed_score
# set weights for seed genes in ppi_graph
for seed in self.seed_lst:
self.ppi_graph.vertex_properties["cami_score"][seed] = self.seed_score
def reset_cami(self, new_uid = ''):
self.uid = new_uid
self.ppi_graph = self.origin_ppi_graph.copy()
self.result_gene_sets = {}
self.cami_vertices = []
self.seed_lst = self.origin_seed_lst.copy()
def reset_ppi_graph(self):
self.ppi_graph = self.initial_ppi_graph.copy()
def set_initial_seed_lst(self, seedlst):
self.initial_seed_lst = seedlst
......@@ -100,7 +102,6 @@ class cami():
:return: A set of predicted vertices by the used tool
:rtype: set()
"""
# TODO: Rethink placement of creation of the temporary directory?
tool.create_tmp_output_dir(self.tmp_dir) # creates the temporary input directory
print(f"preparing {tool.name} input...")
inputparams = tool.prepare_input()
......@@ -160,7 +161,7 @@ class cami():
predicted_by = self.ppi_graph.vertex_properties["predicted_by"]
cami_vertices = set()
putative_vertices = set()
consens_threshold = min(self.nof_tools, 2)
consens_threshold = min(self.nof_tools, 2) # CONFIG: consensus_threshold = 2
#parse every result set of each tool
for tool in result_sets:
......@@ -328,8 +329,8 @@ class cami():
"""
removed_seeds = [self.seed_lst[idx] for idx in idx_lst]
self.seed_lst = [seed for seed in self.seed_lst if seed not in removed_seeds]
for seed in self.seed_lst:
self.ppi_graph.vertex_properties["cami_score"][seed] = self.seed_score
for seed in removed_seeds:
self.ppi_graph.vertex_properties["cami_score"][seed] = 0.0
return removed_seeds
\ No newline at end of file
def vary_seeds(self, removal_frac, nof_iterations):
result_sets = self.make_predictions
\ No newline at end of file
......@@ -13,7 +13,7 @@ output_name = 'modules.out'
[diamond]
alpha : 1
pred_factor : 3
pred_factor : 2
max_preds : 100
[robust]
......
......@@ -8,6 +8,6 @@ network = sys.argv[1]
seedfiles = sys.argv[2:]
config = 'seed_variationconf'
for seeds in seedfiles:
identifier = basename(seeds).rsplit('.')[0] + '_seedvariation'
command = f'./cami.py -n {network} -s {seeds} -id {identifier} -conf {config} -var -f;'
identifier = basename(seeds).rsplit('.')[0]
command = f'./cami.py -n {network} -s {seeds} -id {identifier} -conf {config} -var 50 -f -v;'
subprocess.call(command, shell=True)
\ No newline at end of file
......@@ -13,7 +13,7 @@ output_name = 'modules.out'
[diamond]
alpha : 1
pred_factor : 3
pred_factor : 2
max_preds : 100
[robust]
......
26123
80184
79583
79848
95681
27077
56623
200894
5147
4867
54806
57545
79600
23322
153241
91147
10464
8481
403
374654
79867
54903
9851
9731
51684
65062
9662
22832
80776
23271
79632
5108
22981
5048
830
10403
43740578
1639
26586
84445
5347
123811
121441
9113
79649
22919
51199
152185
80254
117178
154796
gene index_in_graph cami_score degree_in_graph ncbi_url ncbi_summary
9662 6686 3.0 230 https://www.ncbi.nlm.nih.gov/gene/9662 This gene encodes a centrosomal protein, which acts as a scaffolding protein during early centriole biogenesis, and is also required for centriole-centriole cohesion during interphase. Mutations in this gene are associated with autosomal recessive primary microcephaly-8. [provided by RefSeq, Jun 2012]
22832 21279 3.0 72 https://www.ncbi.nlm.nih.gov/gene/22832 Involved in cilium assembly. Located in axonemal microtubule; centriole; and centrosome. [provided by Alliance of Genome Resources, Nov 2021]
80776 20662 3.0 14 https://www.ncbi.nlm.nih.gov/gene/80776 This gene encodes a B9 domain protein, which are exclusively found in ciliated organisms. The gene is upregulated during mucociliary differentiation, and the encoded protein localizes to basal bodies and cilia. Disrupting expression of this gene results in ciliogenesis defects. [provided by RefSeq, Oct 2009]
23271 21328 3.0 10 https://www.ncbi.nlm.nih.gov/gene/23271 Enables microtubule minus-end binding activity. Involved in several processes, including axon development; regulation of dendrite development; and regulation of organelle organization. Located in cytosol and microtubule end. Colocalizes with Golgi apparatus; centrosome; and microtubule minus-end. [provided by Alliance of Genome Resources, Nov 2021]
79632 25067 3.0 24 https://www.ncbi.nlm.nih.gov/gene/79632 Located in extracellular space. [provided by Alliance of Genome Resources, Nov 2021]
5108 510 3.0 416 https://www.ncbi.nlm.nih.gov/gene/5108 The protein encoded by this gene is a component of centriolar satellites, which are electron dense granules scattered around centrosomes. Inhibition studies show that this protein is essential for the correct localization of several centrosomal proteins, and for anchoring microtubules to the centrosome. Chromosomal aberrations involving this gene are associated with papillary thyroid carcinomas and a variety of hematological malignancies, including atypical chronic myeloid leukemia and T-cell lymphoma. Multiple transcript variants encoding different isoforms have been found for this gene. [provided by RefSeq, Oct 2015]
22981 4227 2.0 191 https://www.ncbi.nlm.nih.gov/gene/22981 Predicted to enable calcium ion binding activity. Predicted to be involved in microtubule anchoring at centrosome. Located in cytosol; intercellular bridge; and microtubule cytoskeleton. [provided by Alliance of Genome Resources, Nov 2021]
5048 8200 2.0 118 https://www.ncbi.nlm.nih.gov/gene/5048 This locus was identified as encoding a gene that when mutated or lost caused the lissencephaly associated with Miller-Dieker lissencephaly syndrome. This gene encodes the non-catalytic alpha subunit of the intracellular Ib isoform of platelet-activating factor acteylhydrolase, a heterotrimeric enzyme that specifically catalyzes the removal of the acetyl group at the SN-2 position of platelet-activating factor (identified as 1-O-alkyl-2-acetyl-sn-glyceryl-3-phosphorylcholine). Two other isoforms of intracellular platelet-activating factor acetylhydrolase exist: one composed of multiple subunits, the other, a single subunit. In addition, a single-subunit isoform of this enzyme is found in serum. [provided by RefSeq, Apr 2009]
830 6673 2.0 113 https://www.ncbi.nlm.nih.gov/gene/830 The protein encoded by this gene is a member of the F-actin capping protein alpha subunit family. It is the alpha subunit of the barbed-end actin binding protein Cap Z. By capping the barbed end of actin filaments, Cap Z regulates the growth of the actin filaments at the barbed end. [provided by RefSeq, Jul 2008]
10403 4245 2.0 161 https://www.ncbi.nlm.nih.gov/gene/10403 This gene encodes a component of the NDC80 kinetochore complex. The encoded protein consists of an N-terminal microtubule binding domain and a C-terminal coiled-coiled domain that interacts with other components of the complex. This protein functions to organize and stabilize microtubule-kinetochore interactions and is required for proper chromosome segregation. [provided by RefSeq, Oct 2011]
43740578 25258 2.0 2604 https://www.ncbi.nlm.nih.gov/gene/43740578 Severe acute respiratory syndrome coronavirus 2 (SARS-CoV-2) is an enveloped, positive-sense, single-stranded RNA virus that causes coronavirus disease 2019 (COVID-19). Virus particles include the RNA genetic material and structural proteins needed for invasion of host cells. Once inside the cell the infecting RNA is used to encode structural proteins that make up virus particles, nonstructural proteins that direct virus assembly, transcription, replication and host control and accessory proteins whose function has not been determined.~ ORF1ab, the largest gene, contains overlapping open reading frames that encode polyproteins PP1ab and PP1a. The polyproteins are cleaved to yield 16 nonstructural proteins, NSP1-16. Production of the longer (PP1ab) or shorter protein (PP1a) depends on a -1 ribosomal frameshifting event. The proteins, based on similarity to other coronaviruses, include the papain-like proteinase protein (NSP3), 3C-like proteinase (NSP5), RNA-dependent RNA polymerase (NSP12, RdRp), helicase (NSP13, HEL), endoRNAse (NSP15), 2'-O-Ribose-Methyltransferase (NSP16) and other nonstructural proteins. SARS-CoV-2 nonstructural proteins are responsible for viral transcription, replication, proteolytic processing, suppression of host immune responses and suppression of host gene expression. The RNA-dependent RNA polymerase is a target of antiviral therapies.
1639 563 2.0 281 https://www.ncbi.nlm.nih.gov/gene/1639 This gene encodes the largest subunit of dynactin, a macromolecular complex consisting of 10 subunits ranging in size from 22 to 150 kD. Dynactin binds to both microtubules and cytoplasmic dynein. Dynactin is involved in a diverse array of cellular functions, including ER-to-Golgi transport, the centripetal movement of lysosomes and endosomes, spindle formation, chromosome movement, nuclear positioning, and axonogenesis. This subunit interacts with dynein intermediate chain by its domains directly binding to dynein and binds to microtubules via a highly conserved glycine-rich cytoskeleton-associated protein (CAP-Gly) domain in its N-terminus. Alternative splicing of this gene results in multiple transcript variants encoding distinct isoforms. Mutations in this gene cause distal hereditary motor neuronopathy type VIIB (HMN7B) which is also known as distal spinal and bulbar muscular atrophy (dSBMA). [provided by RefSeq, Oct 2008]
26586 16438 2.0 15 https://www.ncbi.nlm.nih.gov/gene/26586 This gene encodes a cytoskeleton-associated protein that stabalizes microtubules and plays a role in the regulation of cell division. The encoded protein is itself regulated through phosphorylation at multiple serine and threonine residues. There is a pseudogene of this gene on chromosome 14. Alternative splicing results in multiple transcript variations. [provided by RefSeq, Nov 2013]
84445 4153 2.0 112 https://www.ncbi.nlm.nih.gov/gene/84445 The protein encoded by this gene belongs to the leucine zipper tumor suppressor family of proteins, which function in transcription regulation and cell cycle control. This family member can repress beta-catenin-mediated transcriptional activation and is a negative regulator of the Wnt signaling pathway. It negatively regulates microtubule severing at centrosomes, and is necessary for central spindle formation and cytokinesis completion. It is implicated in cancer, where it may inhibit cell proliferation and decrease susceptibility to tumor development. Alternative splicing of this gene results in multiple transcript variants. [provided by RefSeq, Dec 2015]
5347 6907 2.0 374 https://www.ncbi.nlm.nih.gov/gene/5347 The Ser/Thr protein kinase encoded by this gene belongs to the CDC5/Polo subfamily. It is highly expressed during mitosis and elevated levels are found in many different types of cancer. Depletion of this protein in cancer cells dramatically inhibited cell proliferation and induced apoptosis; hence, it is a target for cancer therapy. [provided by RefSeq, Sep 2015]
123811 21319 2.0 9 https://www.ncbi.nlm.nih.gov/gene/123811 Enables identical protein binding activity. Involved in cilium assembly. Located in centriolar satellite and nucleoplasm. [provided by Alliance of Genome Resources, Nov 2021]
121441 14665 2.0 91 https://www.ncbi.nlm.nih.gov/gene/121441 Predicted to be involved in protein localization to centrosome. Located in centrosome; nucleoplasm; and plasma membrane. [provided by Alliance of Genome Resources, Nov 2021]
9113 9430 2.0 244 https://www.ncbi.nlm.nih.gov/gene/9113 The protein encoded by this gene is a putative serine/threonine kinase that localizes to the mitotic apparatus and complexes with cell cycle controller CDC2 kinase in early mitosis. The protein is phosphorylated in a cell-cycle dependent manner, with late prophase phosphorylation remaining through metaphase. The N-terminal region of the protein binds CDC2 to form a complex showing reduced H1 histone kinase activity, indicating a role as a negative regulator of CDC2/cyclin A. In addition, the C-terminal kinase domain binds to its own N-terminal region, suggesting potential negative regulation through interference with complex formation via intramolecular binding. Biochemical and genetic data suggest a role as a tumor suppressor. This is supported by studies in knockout mice showing development of soft-tissue sarcomas, ovarian stromal cell tumors and a high sensitivity to carcinogenic treatments. [provided by RefSeq, Apr 2017]
79649 21211 2.0 13 https://www.ncbi.nlm.nih.gov/gene/79649 The protein encoded by this gene belongs to the MAP7 (microtubule-associated protein 7) family. Alternatively spliced transcript variants encoding different isoforms have been found. [provided by RefSeq, Mar 2010]
22919 9823 2.0 234 https://www.ncbi.nlm.nih.gov/gene/22919 The protein encoded by this gene was first identified by its binding to the APC protein which is often mutated in familial and sporadic forms of colorectal cancer. This protein localizes to microtubules, especially the growing ends, in interphase cells. During mitosis, the protein is associated with the centrosomes and spindle microtubules. The protein also associates with components of the dynactin complex and the intermediate chain of cytoplasmic dynein. Because of these associations, it is thought that this protein is involved in the regulation of microtubule structures and chromosome stability. This gene is a member of the RP/EB family. [provided by RefSeq, Jul 2008]
51199 8034 2.0 139 https://www.ncbi.nlm.nih.gov/gene/51199 This gene encodes one of the proteins important for centrosomal function. This protein is important for positioning and anchoring the microtubules minus-ends in epithelial cells. Localization of this protein to the centrosome requires three leucine zippers in the central coiled-coil domain. Multiple alternatively spliced transcript variants that encode different isoforms have been reported. [provided by RefSeq, Jul 2008]
152185 14693 2.0 53 https://www.ncbi.nlm.nih.gov/gene/152185 Involved in metaphase plate congression; mitotic spindle assembly; and regulation of centriole replication. Located in centriole; centrosome; and spindle. [provided by Alliance of Genome Resources, Nov 2021]
80254 4587 2.0 82 https://www.ncbi.nlm.nih.gov/gene/80254 This gene encodes a protein with six coiled-coil domains. The protein is localized to the centrosome, a non-membraneous organelle that functions as the major microtubule-organizing center in animal cells. Several alternatively spliced transcript variants have been found, but their biological validity has not been determined. [provided by RefSeq, Jul 2008]
117178 9325 2.0 72 https://www.ncbi.nlm.nih.gov/gene/117178 This gene encodes a protein that binds the cancer-testis antigen Synovial Sarcoma X breakpoint 2 protein. The encoded protein may regulate the activity of Synovial Sarcoma X breakpoint 2 protein in malignant cells. Alternate splicing results in multiple transcript variants. A pseudogene of this gene is found on chromosome 3. [provided by RefSeq, Oct 2009]
154796 12155 2.0 191 https://www.ncbi.nlm.nih.gov/gene/154796 This gene belongs to the motin family of angiostatin binding proteins characterized by conserved coiled-coil domains and C-terminal PDZ binding motifs. The encoded protein is expressed predominantly in endothelial cells of capillaries as well as larger vessels of the placenta where it may mediate the inhibitory effect of angiostatin on tube formation and the migration of endothelial cells toward growth factors during the formation of new blood vessels. Alternative splicing results in multiple transcript variants encoding different isoforms. [provided by RefSeq, Jul 2008]
gene
22981
9924
91978
10982
64770
22924
23085
9631
1540
54785
90417
5116
55860
123811
9857
9662
89891
255758
5347
55112
5108
84318
830
219072
115106
84516
5567
79632
26986
3959
149041
53598
7283
55755
10403
51199
7798
117178
165055
79598
8655
10540
54801
51512
4850
116840
26005
3880
23093
55165
79649
10120
23019
29883
99100
225745
7840
29079
29110
22919
9113
10615
85456
49856
200081
10426
653784
11215
54820
114791
25904
55787
10844
4957
5048
80776
1780
159989
121441
57701
6491
7272
11116
1778
23271
1781
10121
103733
5576
84445
84260
192670
43740578
255967
10526
829
27161
7538
69654
43740572
9495
26058
27229
140735
2804
3796
90410
10807
64793
5575
246176
80097
11190
85459
9738
11004
18536
27185
10024
85379
832
54862
54542
54535
5577
80254
28952
8165
192669
51164
9125
29922
57568
85378
4848
13191
55142
7159
22832
9337
6990
55125
1859
57534
57489
22994
51143
10671
145508
54839
26586
324
26523
22995
6993
154796
55559
27327
79441
5573
23112
83658
9859
9659
4849
1783
60313
23354
343099
79596
163786
167838
55571
93323
246175
5566
10198
57536
23299
1639
81565
57472
9212
93594
57690
11258
152185
4591
167691
9465
9928
440145
55835
72083
55722
132320
157922
80817
54930
10142
gene
79796
23277
9364
374407
10806
56350
123811
92595
54622
9662
5108
84747
79632
80776
139324
57333
65988
203259
23271
22832
6102
169792
gene
22981
26586
154796
8239
55379
23224
79649
4893
83737
3845
995
9662
5108
5347
22919
9146
6103
9113
830
80254
79632
152185
80776
1639
6440
7157
121441
23271
10403
51199
22832
117178
84445
43740578
43740574
3309
CAMI predictions with 26 of initially 34 seeds: ['26123', '80184', '79583', '79848', '95681', '27077', '56623', '200894', '5147', '4867', '54806', '57545', '79600', '23322', '153241', '91147', '10464', '8481', '403', '374654', '79867', '54903', '9851', '9731', '51684', '65062'],
initially: ['26123', '80184', '51259', '79583', '79848', '95681', '23247', '27077', '56623', '200894', '5147', '4867', '9786', '80210', '54806', '57545', '79600', '317662', '23322', '153241', '91147', '10464', '8481', '65250', '403', '374654', '79867', '51524', '54903', '9851', '9731', '51684', '65062', '23116']
gene predicted_by cami_score index_in_graph degree_in_graph
5048 ['CAMI', 'DIAMOnD'] 2.0 8200 118
28952 ['DIAMOnD'] 1.0 18440 98
169792 ['DOMINO'] 1.0 4104 7
23299 ['DIAMOnD'] 1.0 9739 61
10121 ['DIAMOnD'] 1.0 9740 75
22995 ['DIAMOnD'] 1.0 14861 48
830 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 6673 113
8239 ['ROBUST'] 1.0 9751 208
832 ['DIAMOnD'] 1.0 12316 55
49856 ['DIAMOnD'] 1.0 6685 36
9662 ['CAMI', 'DIAMOnD', 'DOMINO', 'ROBUST'] 3.0 6686 230
55787 ['DIAMOnD'] 1.0 14881 29
149041 ['DIAMOnD'] 1.0 17450 327
10142 ['DIAMOnD'] 1.0 7723 70
1639 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 563 281
26586 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 16438 15
84445 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 4153 112
200081 ['DIAMOnD'] 1.0 6717 83
56350 ['DOMINO'] 1.0 9281 4
9146 ['ROBUST'] 1.0 67 250
10526 ['DIAMOnD'] 1.0 9286 43
18536 ['DIAMOnD'] 1.0 21578 10
89891 ['DIAMOnD'] 1.0 17483 29
57536 ['DIAMOnD'] 1.0 12875 8
79596 ['DIAMOnD'] 1.0 6731 41
4850 ['DIAMOnD'] 1.0 10831 36
27161 ['DIAMOnD'] 1.0 7760 191
7538 ['DIAMOnD'] 1.0 7763 60
1540 ['DIAMOnD'] 1.0 11350 321
829 ['DIAMOnD'] 1.0 8286 49
22919 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 9823 234
26058 ['DIAMOnD'] 1.0 610 44
81565 ['DIAMOnD'] 1.0 4195 104
29110 ['DIAMOnD'] 1.0 6755 365
55755 ['DIAMOnD'] 1.0 16998 59
27327 ['DIAMOnD'] 1.0 8810 135
5576 ['DIAMOnD'] 1.0 8299 83
9465 ['DIAMOnD'] 1.0 8300 25
117178 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 9325 72
23354 ['DIAMOnD'] 1.0 15469 31
11215 ['DIAMOnD'] 1.0 8303 31
9495 ['DIAMOnD'] 1.0 8301 35
11116 ['DIAMOnD'] 1.0 10353 75
203259 ['DOMINO'] 1.0 8833 10
22981 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 4227 191
60313 ['DIAMOnD'] 1.0 4230 20
324 ['DIAMOnD'] 1.0 6797 175
10403 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 4245 161
6440 ['ROBUST'] 1.0 14487 10
995 ['ROBUST'] 1.0 9369 121
9631 ['DIAMOnD'] 1.0 7835 66
5116 ['DIAMOnD'] 1.0 9372 47
6491 ['DIAMOnD'] 1.0 20125 49
3309 ['ROBUST'] 1.0 8350 339
145508 ['DIAMOnD'] 1.0 20642 29
3796 ['DIAMOnD'] 1.0 20643 20
55835 ['DIAMOnD'] 1.0 10918 72
84516 ['DIAMOnD'] 1.0 4265 33
43740578 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 25258 2604
2804 ['DIAMOnD'] 1.0 8873 18
246175 ['DIAMOnD'] 1.0 18092 82
57472 ['DIAMOnD'] 1.0 18093 38
7159 ['DIAMOnD'] 1.0 175 127
7283 ['DIAMOnD'] 1.0 6834 176
43740572 ['DIAMOnD'] 1.0 25267 365
139324 ['DOMINO'] 1.0 12980 2
65988 ['DOMINO'] 1.0 12979 4
80776 ['CAMI', 'DIAMOnD', 'DOMINO', 'ROBUST'] 3.0 20662 14
11004 ['DIAMOnD'] 1.0 10935 23
5566 ['DIAMOnD'] 1.0 6329 163
85456 ['DIAMOnD'] 1.0 9404 32
10807 ['DIAMOnD'] 1.0 8893 48
55571 ['DIAMOnD'] 1.0 20678 43
1778 ['DIAMOnD'] 1.0 7881 117
54622 ['DOMINO'] 1.0 8906 4
6993 ['DIAMOnD'] 1.0 9419 77
29922 ['DIAMOnD'] 1.0 4302 42
1859 ['DIAMOnD'] 1.0 7890 199
4957 ['DIAMOnD'] 1.0 19668 18
5567 ['DIAMOnD'] 1.0 213 80
9113 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 9430 244
57534 ['DIAMOnD'] 1.0 12502 103
7840 ['DIAMOnD'] 1.0 17626 16
79649 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 21211 13
51512 ['DIAMOnD'] 1.0 21212 24
255967 ['DIAMOnD'] 1.0 7899 26
10198 ['DIAMOnD'] 1.0 21214 8
9924 ['DIAMOnD'] 1.0 7898 25
1780 ['DIAMOnD'] 1.0 4321 63
9212 ['DIAMOnD'] 1.0 742 250
4893 ['ROBUST'] 1.0 237 329
57333 ['DOMINO'] 1.0 4334 3
9364 ['DOMINO'] 1.0 23286 2
54785 ['DIAMOnD'] 1.0 20729 111
13191 ['DIAMOnD'] 1.0 14585 20
5347 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 6907 374
103733 ['DIAMOnD'] 1.0 14587 18
85378 ['DIAMOnD'] 1.0 14588 26
99100 ['DIAMOnD'] 1.0 14590 8
90417 ['DIAMOnD'] 1.0 14591 31
54542 ['DIAMOnD'] 1.0 12544 147
64793 ['DIAMOnD'] 1.0 18177 27
219072 ['DIAMOnD'] 1.0 14593 16
84747 ['DOMINO'] 1.0 23290 4
10024 ['DIAMOnD'] 1.0 772 39
10844 ['DIAMOnD'] 1.0 14599 58
225745 ['DIAMOnD'] 1.0 14601 12
93323 ['DIAMOnD'] 1.0 14602 29
5573 ['DIAMOnD'] 1.0 266 81
5575 ['DIAMOnD'] 1.0 267 29
8165 ['DIAMOnD'] 1.0 268 143
165055 ['DIAMOnD'] 1.0 20753 37
54930 ['DIAMOnD'] 1.0 14611 23
26986 ['DIAMOnD'] 1.0 787 308
23019 ['DIAMOnD'] 1.0 6426 136
69654 ['DIAMOnD'] 1.0 14619 16
23224 ['ROBUST'] 1.0 16155 44
22832 ['CAMI', 'DIAMOnD', 'DOMINO', 'ROBUST'] 3.0 21279 72
55142 ['DIAMOnD'] 1.0 14623 37
23277 ['DOMINO'] 1.0 20772 10
53598 ['DIAMOnD'] 1.0 14629 16
55860 ['DIAMOnD'] 1.0 14630 31
54801 ['DIAMOnD'] 1.0 14633 49
163786 ['DIAMOnD'] 1.0 14123 68
9738 ['DIAMOnD'] 1.0 15148 77
27185 ['DIAMOnD'] 1.0 812 119
72083 ['DIAMOnD'] 1.0 14642 20
114791 ['DIAMOnD'] 1.0 14643 48
57489 ['DIAMOnD'] 1.0 20786 8
80097 ['DIAMOnD'] 1.0 14645 34
79441 ['DIAMOnD'] 1.0 14646 23
11258 ['DIAMOnD'] 1.0 14647 27
246176 ['DIAMOnD'] 1.0 25399 6
374407 ['DOMINO'] 1.0 25394 2
10120 ['DIAMOnD'] 1.0 14650 46
167691 ['DIAMOnD'] 1.0 21311 31
93594 ['DIAMOnD'] 1.0 21312 9
84318 ['DIAMOnD'] 1.0 21313 10
10615 ['DIAMOnD'] 1.0 14655 31
91978 ['DIAMOnD'] 1.0 21314 8
132320 ['DIAMOnD'] 1.0 21316 26
55379 ['ROBUST'] 1.0 17216 170
653784 ['DIAMOnD'] 1.0 14662 13
123811 ['CAMI', 'DIAMOnD', 'DOMINO'] 2.0 21319 9
10806 ['DOMINO'] 1.0 21320 2
121441 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 14665 91
343099 ['DIAMOnD'] 1.0 21321 9
54862 ['DIAMOnD'] 1.0 21323 12
157922 ['DIAMOnD'] 1.0 21322 6
57701 ['DIAMOnD'] 1.0 21325 12
440145 ['DIAMOnD'] 1.0 14669 37
26005 ['DIAMOnD'] 1.0 21327 6
23271 ['CAMI', 'DIAMOnD', 'DOMINO', 'ROBUST'] 3.0 21328 10
10982 ['DIAMOnD'] 1.0 3922 41
54839 ['DIAMOnD'] 1.0 21331 10
3845 ['ROBUST'] 1.0 340 999
92595 ['DOMINO'] 1.0 4437 7
23093 ['DIAMOnD'] 1.0 21335 6
79796 ['DOMINO'] 1.0 21336 5
83737 ['ROBUST'] 1.0 856 420
7157 ['ROBUST'] 1.0 345 3271
10671 ['DIAMOnD'] 1.0 14683 28
9928 ['DIAMOnD'] 1.0 15197 61
85459 ['DIAMOnD'] 1.0 21342 9
116840 ['DIAMOnD'] 1.0 19293 16
57690 ['DIAMOnD'] 1.0 16223 73
51199 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 8034 139
57568 ['DIAMOnD'] 1.0 19300 16
152185 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 14693 53
27229 ['DIAMOnD'] 1.0 14696 41
85379 ['DIAMOnD'] 1.0 19305 12
54820 ['DIAMOnD'] 1.0 14697 23
5577 ['DIAMOnD'] 1.0 10090 72
9125 ['DIAMOnD'] 1.0 17259 80
7798 ['DIAMOnD'] 1.0 19311 21
159989 ['DIAMOnD'] 1.0 4463 13
84260 ['DIAMOnD'] 1.0 3954 40
255758 ['DIAMOnD'] 1.0 21362 13
55112 ['DIAMOnD'] 1.0 21363 10
10540 ['DIAMOnD'] 1.0 3958 120
115106 ['DIAMOnD'] 1.0 14711 57
8655 ['DIAMOnD'] 1.0 6519 240
154796 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 12155 191
54535 ['DIAMOnD'] 1.0 8062 90
55165 ['DIAMOnD'] 1.0 4479 81
26523 ['DIAMOnD'] 1.0 8066 82
192669 ['DIAMOnD'] 1.0 8067 43
83658 ['DIAMOnD'] 1.0 4484 20
192670 ['DIAMOnD'] 1.0 8068 24
23085 ['DIAMOnD'] 1.0 6536 33
55559 ['DIAMOnD'] 1.0 11145 46
1783 ['DIAMOnD'] 1.0 17295 39
22994 ['DIAMOnD'] 1.0 15251 56
23112 ['DIAMOnD'] 1.0 8595 106
4591 ['DIAMOnD'] 1.0 3989 104
7272 ['DIAMOnD'] 1.0 11672 25
10426 ['DIAMOnD'] 1.0 12186 52
3959 ['DIAMOnD'] 1.0 11166 95
22924 ['DIAMOnD'] 1.0 4522 63
25904 ['DIAMOnD'] 1.0 6571 35
9337 ['DIAMOnD'] 1.0 4010 45
51164 ['DIAMOnD'] 1.0 11182 62
140735 ['DIAMOnD'] 1.0 4015 94
6103 ['ROBUST'] 1.0 431 27
55125 ['DIAMOnD'] 1.0 12213 50
167838 ['DIAMOnD'] 1.0 7605 28
64770 ['DIAMOnD'] 1.0 4538 80
3880 ['DIAMOnD'] 1.0 4027 36
9857 ['DIAMOnD'] 1.0 14271 50
1781 ['DIAMOnD'] 1.0 4035 102
6990 ['DIAMOnD'] 1.0 4036 18
29079 ['DIAMOnD'] 1.0 7621 307
4848 ['DIAMOnD'] 1.0 4037 92
4849 ['DIAMOnD'] 1.0 4038 62
43740574 ['ROBUST'] 1.0 25545 1364
9859 ['DIAMOnD'] 1.0 14795 56
51143 ['DIAMOnD'] 1.0 16852 55
9659 ['DIAMOnD'] 1.0 473 54
55722 ['DIAMOnD'] 1.0 4575 27
11190 ['DIAMOnD'] 1.0 10729 24
79632 ['CAMI', 'DIAMOnD', 'DOMINO', 'ROBUST'] 3.0 25067 24
80254 ['CAMI', 'DIAMOnD', 'ROBUST'] 2.0 4587 82
29883 ['DIAMOnD'] 1.0 8685 127
6102 ['DOMINO'] 1.0 9715 14
79598 ['DIAMOnD'] 1.0 12280 52
90410 ['DIAMOnD'] 1.0 4091 68
80817 ['DIAMOnD'] 1.0 4604 30
5108 ['CAMI', 'DIAMOnD', 'DOMINO', 'ROBUST'] 3.0 510 416
Source diff could not be displayed: it is too large. Options to address this: view the blob.
data/output/example_run/vdiagram_example_run.png

409 KiB

http://degradome.uniovi.es/cgi-bin/nVenn/nvenn.cgi?uid=11DAFB32
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment