GoNetic 2 is a tool to identify subnetworks of interest in a gene interaction network using mutation and expression data. It applies NSGA-II optimization to select subnetworks that are both relevant to the omics data and consistent with the network structure.
GoNetic 2 is a complete rewrite of the original tool. It introduces support for expression data and a revised subnetwork selection procedure. The core idea remains unchanged: omics data is mapped to a network; paths of interest are identified and compiled into a logical formula; subnetworks are then evaluated for the presence of these paths using that formula.
The original GoNetic version (v1.0.0) is still available under tag v1.0.0 in this repository.
This repository contains a static binary of GoNetic for 64-bit linux, the source code is also provided.
The binary and code in this repository is only licensed for non-commercial academic use.
One of the following is required to run GoNetic:
- 64-bit linux to use the provided binary
- Go 1.23+ to build the source code, see Go installation instructions for details on how to install Go.
The following additional requirements are needed to run GoNetic:
- c2d compiler [1]:
- We are in no way affiliated with the c2d project. See the c2d manual for licensing information of the c2d compiler: "The c2d compiler is licensed only for non–commercial, research and educational use."
- Get the linux binary
c2d_linuxhere: http://reasoning.cs.ucla.edu/c2d/, place it in theetc/directory, and set execution permissions (e.g.chmod u+x c2d_linux) - You might have to install
libc6:i386or a similar compatibility library to run the c2d binary on your system, since it is a 32-bit binary.
- install WFG by running the etc/build-wfg.sh script in the etc folder.
./gonetic QTL -h
./gonetic QTL -q etc -n sample/network.txt -d sample/mutations.csv -o output
Other parameters are optional.
The mutations file is a tab or comma separated file with a headerline that starts with a #-character. The following columns are required:
gene name: an identifier of the mutated gene, should match the identifier of that gene in the network filecondition: an identifier of a sample or condition The following columns are optional:functional score: an impact score between 0 and 1, e.g. CADD scores. If this column is not present or should be ignored, add-e=falseto the command.freq increase: a frequency score between 0 and 1, e.g. variant allele frequency. If this column is not present or should be ignored, add-c=falseto the command. Additional columns can be present in the file, but are ignored by GoNetic.
The network file is a tab or comma separated file with a header line for each type of interaction that occurs in the network.
Header lines are of the form % <interaction identifier> [non-]regulatory.
Interaction entries have 5 columns:
- source gene name
- sink gene name
- interaction type identifier (e.g. pp for protein-protein interactions)
- "directed" for directed interactions, or "undirected" for bidirectional interactions
- an edge weight between 0 and 1
Example files can be found in the sample folder, here we show the header and the first 2 entries of these files.
- mutations.csv:
#gene name,condition,functional score,freq increase
PRDM16,Ls420,0.810177877122851,0.581176532205082
WRAP73,NYU160,0.816136367036238,0.863155362397098
- network.txt [2]:
% pp non-regulatory
% pd regulatory
A2M,APOA1,pp,directed,1.0
A2M,BMP1,pp,directed,1.0
The main output files are in the output/resulting_networks/sample-norm folder:
d3js_visualization: a html+js visualisation of the resulting network, tested in Firefox and Chromium-based browsers.weighted.network: a tab separated file containing the resulting network. The same type of header lines as in the input network file, each entry now consists of two columns: (1) an unweighted interaction in the same format as the input network file, and (2) the highest edge penalty for which this interaction was selected in the subnetwork selection phase.conditionSpecificMutationRanking.txt: a tab separated file containing all genes that are in the resulting network that are also mutated in the input data. The rank of the gene is based on the highest edge penalty for which this gene was selected in the subnetwork selection phase, where rank "1" corresponds with the highest edge penalty that lead to a valid subnetwork.
Gene sets can be visualized in the d3js_visualization as follows:
-
Create a new JavaScript file named
genesets.js. -
In this file define exactly one top level variable named
geneSets. Use the pattern:
const geneSets = {
SET_NAME_1: [
'GENE_A', 'GENE_B'
],
'Custom set 2': [
'GENE_C', 'GENE_D'
]
};
-
Each property of
geneSetsis one gene set.- Key: the gene set name, written as either an identifier or a quoted string.
- Value: an array of gene symbols written as strings. These arrays are flat lists without nesting.
-
Add additional gene sets by adding more properties to the object.
-
When finished, place
genesets.jsin thed3js_visualizationfolder next to the existing files so that the visualization code inhighestScoringSubnetwork.htmlcan access thegeneSetsvariable.
[1] Darwiche A. New advances in compiling CNF to decomposable negation normal form. Proc. of ECAI, 328-332
[2] Jassal B, Matthews L, Viteri G, Gong C, Lorente P, Fabregat A, Sidiropoulos K, Cook J, Gillespie M, Haw R, Loney F, May B, Milacic M, Rothfels K, Sevilla C, Shamovsky V, Shorser S, Varusai T, Weiser J, Wu G, Stein L, Hermjakob H, D'Eustachio P. The reactome pathway knowledgebase. Nucleic Acids Res. 2020 Jan 8;48(D1):D498-D503. doi: 10.1093/nar/gkz1031. PubMed PMID: 31691815.