Package: caddiepy
caddiepyThe python package to theCancer Driver Drug Interaction Explorer (CADDIE). It  provides an interface for a variety of CADDIEs functionalities, giving the user the possibility to execute tasks on CADDIE programmatically without using the website. This allows to run a larger number of drug-target search or drug repurposing tasks and to implement CADDIE into your programs. For more information about CADDIE, visit thedocumentation.Working exampleimport caddiepy

gene_list = ['PTEN', 'MYC']

# verify that genes exist in CADDIE
caddie_gene_list = caddiepy.api.map_gene_id(gene_list).json()['genes']

task = caddiepy.Task('drug', 'network_proximity', [gene['graphId'] for gene in caddie_gene_list])
# customize parameters
task.set_parameter('result_size', 5)
task.set_parameter('include_indirect_drugs', True)
task.set_parameter('gene_interaction_datasets', ['IID'])
task.set_parameter('drug_interaction_datasets', ['DrugBank'])
# start task
task.run()
# get result when task is finished, if task is still running wait until it is finished
result = task.get_result()Pipeline example (drug target search folled by drug search)Note: The following pipeline can also be called as:gene_list = ['FBXW7', 'PTEN', 'MYC']
resulting_drugs = caddiepy.pipeline(gene_list)['drugObjects']gene_list = ['FBXW7', 'PTEN', 'MYC']

# verify that genes exist in CADDIE
caddie_gene_list = caddiepy.api.map_gene_id(gene_list).json()['genes']

task = caddiepy.Task('drug-target', 'multi-steiner', [gene['graphId'] for gene in caddie_gene_list])
# customize parameters
task.set_parameter('result_size', 20)
task.set_parameter('gene_interaction_datasets', ['BioGRID'])
# start task
task.run()
# get result when task is finished, if task is still running wait until it is finished
result_drug_targets = task.get_result()

task = caddiepy.Task('drug', 'trustrank', result_drug_targets['network']['nodes'])
# customize parameters
task.set_parameter('result_size', 20)
task.set_parameter('include_indirect_drugs', True)
task.set_parameter('gene_interaction_datasets', ['IID'])
task.set_parameter('drug_interaction_datasets', ['DrugBank'])
# start task
task.run()
# get result when task is finished, if task is still running wait until it is finished
resulting_drugs = task.get_result()['drugObjects']How to useImportImport the module:import caddiepy2 Steps to repurpose drugs and find drug-targetsStep 1: Map genes to CADDIE gene IDs. This step is necessary to verify the genes exist in the CADDIE database. The gene objects returned contains a mapping to different IDs.# gene list is a list of gene identifiers: entrez, uniprot ac or hugo
caddiepy.api.map_gene_id(gene_list)

# example to receive list of caddie IDs
caddie_gene_list = caddiepy.api.map_gene_id(gene_list).json()['genes']
caddie_gene_id_list = [gene['graphId'] for gene in caddie_gene_list]Step 2: Use CADDIE IDs to find putative drug-targets or candidate drugs using one of CADDIEs algorithmsDrug-target algorithms:multisteinerkeypathwayminertrustrankharmonic_centraliydegree_centraliybetweenness_centraliyDrug algorithms:trustrankharmonic_centraliydegree_centraliynetwork_proximity# target is either 'drug' or 'drug-target'
# caddie_gene_id_list is a list of caddie gene IDs (like g123, g234, ...)
task = caddiepy.Task(target, algorithm, caddie_gene_id_list)
# set parameters like this (for a full list of parameters and the available datasets look below)
task.set_parameter('result_size', 50)
task.set_parameter('gene_interaction_datasets', [gene_interaction_dataset1, gene_interaction_dataset2, ...])
task.set_parameter('drug_interaction_datasets', [drug_interaction_dataset1, drug_interaction_dataset2, ...])
# start task
task.run()
# get result when task is finished, if task is still running wait until it is finished
result = task.get_result()Algorithm parametersThe full list of parameters for each algorithm (for an explanation, visit thedocumentation). For all available input options (dataset names, cancer-types) see below.# multisteiner
task.set_parameter('num_trees', 5)
task.set_parameter('tolerance', 10)
task.set_parameter('hub_penalty', 0)
task.set_parameter('max_deg', sys.maxsize)
task.set_parameter('gene_interaction_datasets', gene_interaction_dataset_list)
task.set_parameter('mutation_cancer_type', mutation_cancer_type)
task.set_parameter('expression_cancer_type', expression_cancer_type)
task.set_parameter('tissue', tissue)

# keypathwayminer
task.set_parameter('k', 5)

# trustrank
task.set_parameter('damping_factor', 0.85)
task.set_parameter('hub_penalty', 0)
task.set_parameter('max_deg', sys.maxsize)
task.set_parameter('gene_interaction_datasets', gene_interaction_dataset_list)
task.set_parameter('drug_interaction_datasets', drug_interaction_dataset_list)
task.set_parameter('mutation_cancer_type', mutation_cancer_type)
task.set_parameter('expression_cancer_type', expression_cancer_type)
task.set_parameter('tissue', tissue)
task.set_parameter('include_nutraceutical_drugs', boolean)
task.set_parameter('only_atc_l_drugs', boolean)
task.set_parameter('include_indirect_drugs', boolean)
task.set_parameter('include_non_approved_drugs', boolean)
task.set_parameter('filter_paths', boolean)
task.set_parameter('available_drugs', available_drug_list)
# only avaibale if drug_interaction_dataset_list = ['drugbank']
task.set_parameter('drug_target_action', drug_effect)

# degree_centrality
task.set_parameter('hub_penalty', 0)
task.set_parameter('max_deg', sys.maxsize)
task.set_parameter('gene_interaction_datasets', gene_interaction_dataset_list)
task.set_parameter('drug_interaction_datasets', drug_interaction_dataset_list)
task.set_parameter('mutation_cancer_type', mutation_cancer_type)
task.set_parameter('expression_cancer_type', expression_cancer_type)
task.set_parameter('tissue', tissue)
task.set_parameter('include_nutraceutical_drugs', boolean)
task.set_parameter('only_atc_l_drugs', boolean)
task.set_parameter('include_indirect_drugs', boolean)
task.set_parameter('include_non_approved_drugs', boolean)
task.set_parameter('filter_paths', boolean)
task.set_parameter('available_drugs', available_drug_list)
# only avaibale if drug_interaction_dataset_list = ['drugbank']
task.set_parameter('drug_target_action', drug_effect)

# harmonic_centrality
task.set_parameter('hub_penalty', 0)
task.set_parameter('max_deg', sys.maxsize)
task.set_parameter('gene_interaction_datasets', gene_interaction_dataset_list)
task.set_parameter('drug_interaction_datasets', drug_interaction_dataset_list)
task.set_parameter('mutation_cancer_type', mutation_cancer_type)
task.set_parameter('expression_cancer_type', expression_cancer_type)
task.set_parameter('tissue', tissue)
task.set_parameter('include_nutraceutical_drugs', boolean)
task.set_parameter('only_atc_l_drugs', boolean)
task.set_parameter('include_indirect_drugs', boolean)
task.set_parameter('include_non_approved_drugs', boolean)
task.set_parameter('filter_paths', boolean)
task.set_parameter('available_drugs', available_drug_list)
# only avaibale if drug_interaction_dataset_list = ['drugbank']
task.set_parameter('drug_target_action', drug_effect)

# betweenness_centrality
task.set_parameter('hub_penalty', 0)
task.set_parameter('max_deg', sys.maxsize)
task.set_parameter('gene_interaction_datasets', gene_interaction_dataset_list)
task.set_parameter('mutation_cancer_type', mutation_cancer_type)
task.set_parameter('expression_cancer_type', expression_cancer_type)
task.set_parameter('tissue', tissue)
task.set_parameter('filter_paths', boolean)

# network_proximity
task.set_parameter('hub_penalty', 0)
task.set_parameter('max_deg', sys.maxsize)
task.set_parameter('gene_interaction_datasets', gene_interaction_dataset_list)
task.set_parameter('drug_interaction_datasets', drug_interaction_dataset_list)
task.set_parameter('mutation_cancer_type', mutation_cancer_type)
task.set_parameter('expression_cancer_type', expression_cancer_type)
task.set_parameter('tissue', tissue)
task.set_parameter('include_nutraceutical_drugs', boolean)
task.set_parameter('only_atc_l_drugs', boolean)
task.set_parameter('include_indirect_drugs', boolean)
task.set_parameter('include_non_approved_drugs', boolean)
task.set_parameter('filter_paths', boolean)
task.set_parameter('available_drugs', available_drug_list)
# only avaibale if drug_interaction_dataset_list = ['drugbank']
task.set_parameter('drug_target_action', drug_effect)List all available datasetsList all available gene interaction datasets:caddiepy.api.get_gene_interaction_datasets().json()List all available drug interaction datasets:caddiepy.api.get_drug_interaction_datasets().json()List all available tissues:caddiepy.api.get_tissues().json()List all available expression cancer types:caddiepy.api.get_expression_cancer_types().json()List all available mutation cancer types:caddiepy.api.get_mutation_cancer_types().json()List all available drug effects (only relevant when working with DrugBank):caddiepy.api.get_drug_effects().json()Look up drugs in the CADDIE database and their interactions with genes:caddiepy.api.drug_lookup(search_string, database_name)LoggingConfigure the logging level like this:import logging
logging.basicConfig(level=logging.DEBUG)