My algorithm learns regulatory interaction between genes using Bayesian Network approach from gene expression data. After the algorithm has converged to a network of interacting genes, how to validate that the interactions are correct? I have used Lung Cancer dataset from NCBI GEO with ID: GDS2771. Also, how to get the set of genes responsible for a disease (in this case lung cancer) , and how to quantify their expression levels as over or under expressed?
-
1$\begingroup$ this may need some more detail of the model you use, for example, the model could have just randomly picked 10 genes and said they are interacting - though I assume it's doing something a bit more complex :) $\endgroup$– rg255Dec 14, 2014 at 10:22
-
1$\begingroup$ And yes I concur with GriffinEvo that you should first make sure the algorithm was used correctly;the parameters rightly adjusted etc. $\endgroup$– WYSIWYGDec 14, 2014 at 11:26
-
1$\begingroup$ Some important parameters of the algorithm are the discretization thresholds for classifying genes expression values as over, under or normal expressed. I am also quiet unsure about what should be the threshold values, and the other important parameter is atmost how many regulators can be there for a gene? Any idea about how to sort that out? $\endgroup$– AparajitaDec 14, 2014 at 11:42
-
$\begingroup$ I have tagged your post as bioinformatics too. If your query is related to model optimization then clarify that in the question. $\endgroup$– WYSIWYGDec 16, 2014 at 15:30
1 Answer
You can validate the interactions by knockding down (KD) or overexpressing (OE) a gene and checking the change in expression levels of the downstream nodes. You can do this in a high throughput fashion using microarray or RNAseq. For protein you can do an LC-MS. However this method cannot help you in:
- Differentiating direct vs indirect interactions
- Finding regulation in case of loops and other non-linear interactions in the network
Loops are tricky but sampling at multiple time intervals can let you know if oscillations exist or not. For most usual cases this approach works out.
Usually this is followed by another round of validation using a relatively low throughput but sensitive technique such as
- Real-time PCR (KD vs OE)
- Western blots (KD vs OE)
- Reporter assays (KD vs OE) would detect direct interactions. For e.g. possible promoter for a (Transcription Factor) TF (upstream of gene-Y) is used to express GFP to see if GFP responds to the TF; thereby validating the effect of TF on Gene-Y via the promoter.
In some cases you may have to do ChIP-seq to find out if a gene has binding sites for a TF in its promoter/enhancer. You may also use predictions for TF binding sites. For finding regulation by miRNAs you can see this post.
For finding complex dynamics such as pulses and oscillations you have to collect time-course data.
how to quantify their expression levels as over or under expressed?
For that you first need to define your control (up/down regulated wrt what?). Having done that you can compare the expression and use right statistical tests to check differential regulation. If you have just one sample then most tests won't work. For RNAseq, EM algorithms are used which use a bayesian model to obtain likelihoods and p-value (I have used cufflinks and eXpress). Then a FDR correction can be performed when comparing the test vs control. I am not very sure about algorithms used for comparing LC-MS data for proteins.
-
$\begingroup$ well i am not doing any wet lab experiments, i am using machine learning techniques on expression data matrix. Then how would i knock down or over express a gene's expression pattern??Is it by setting low values for knock down and high values for over expression and then check how the regulatory interactions change for that gene? $\endgroup$ Dec 14, 2014 at 11:47
-
8$\begingroup$ @Aparajita You said "validate".. You have to do wet-lab experiments to validate. Your model can only do predictions from a given data. You would need to test if it predicts correctly, a control experiment. If not you should update your model parameters. $\endgroup$– WYSIWYGDec 14, 2014 at 11:58