Open aminjaber opened 1 year ago
Thank you for using BoolODE and for your feedback! I apologize for the late reply, I was traveling.
Your suggestion is very interesting, and I'll start by answering your second question: we currently do not support "constitutive" genes that are always ON or OFF. The purpose of BoolODE was to simply generate expression datasets for BEELINE. What you are suggesting allows for a deeper exploration of the effects of network perturbation. @tmmurali this can be an interesting standalone project if anyone is interested.
Some notes on simulating knockout-knockdowns in the current framework:
_strength
file to reflect those interactions. I am happy to help guide anyone who is interested in pursuing these directions! Please feel free to add on to this discussion with more thoughts/suggestions.
Thank you for your response! I've been going through the code and the various configuration options in "config-files/example-config.yaml" during the past two weeks, and I came across the configuration option "parameter_inputs" which according to the documentation:
A Parameter input is some node in the Boolean network that has a fixed value, say constitutively ON or OFF. These are identified as the nodes with no corresponding Boolean rules
This seems like an exact implementation of a gene knockout unless I'm mistaken. I also tracked the code and there is a routine to parse such an option and read the parameter inputs. Running this option did not work initially but then it did after fixing the following two bugs:
1- The code (run_experiment.py -- line 229) uses parameter_inputs_path
instead of parameter_inputs
to access the configuration option.
2- The if condition in line 115 of model_generator.py always evaluates to false. A quick fix is to have n in self.parameterInputsDF['Input'].unique()
instead of n in self.parameterInputsDF['Input']
I would appreciate your feedback on the above, especially if you think I misundertood this configuration option.
Ah I misunderstood your question. Yes, if a given gene network has nodes that do not have inputs, they are treated as you noted. My understanding of a "perturbation" is to take a given defined network and then systematically set each gene ON or OFF. To clarify, as long as you can produce the relevant input model files, you can use this feature to model knockouts and constitutive genes.
1- The code (run_experiment.py -- line 229) uses parameter_inputs_path instead of parameter_inputs to access the configuration option.
2- The if condition in line 115 of model_generator.py always evaluates to false. A quick fix is to have n in self.parameterInputsDF['Input'].unique() instead of n in self.parameterInputsDF['Input']
Thanks for your help with fixing these issues! Could you please create a pull request with the modifications? That way I can attribute the bug fixes to you. Thanks again for this!
Can you provide some more details on how you hope to use the gene perturbations? I am curious about the size of the networks you are simulating, and your overall strategy to interrogate systematic perturbations.
Let me start by congratulating you on this great simulation tool! So as the title suggests, is there a way to simulate a knockdown or knockout in BoolODE? In a related fashion, is there a way to set the boolean function of a gene to True or False and not make it a function of the other genes?