BioComp to propozycja języka domenowo-specyficznego (DSL) do edukacji i wdrażania biocomputingu obejmuje elementy języka opisu eksperymentów, symulacji, designu i utrzymania systemów biokomputerowych.
Główne składniki BioDSL obejmują:
- Definicje Molekularne
- Tworzenie Biologicznych Układów Logicznych
- Symulacje Eksperymentów
- Drukowanie i Inżynieria BioSystemów
- Monitorowanie i Utrzymanie Systemów
BioComp zostal zaimplementowany jako Kod Pythona z klasami i logiką do tworzenia instancji i ich przetwarzania.
Pliki YAML zawieraja parametry dla tych instancji.
Skrypt biocomp.py
analizuje plik YAML, tworzy niezbędne obiekty i uruchamia symulację w oparciu o parametry zawarte w pliku YAML.
pyparsing
: Biblioteka do parsowania, potrzebna do przetwarzania DSL.matplotlib
: Biblioteka do tworzenia wizualizacji, użyta do generowania wykresów wyników symulacji.numpy
: Biblioteka do operacji na tablicach wielowymiarowych, używana do generowania danych do symulacji.graphviz
: The addition of thegraphviz
module is necessary for graph visualization.
Aby zainstalować te wymagania w swoim środowisku Python, wykonaj następujące kroki:
python -m venv env
source env/bin/activate # Na Windows użyj: env\Scripts\activate
pip install -r requirements.txt
pip install --upgrade pip
To run this setup, follow these steps:
- Save the Python code in a file named
biocomp.py
. - Save the YAML content in a file named
biocomp.yaml
. - Execute the Python script from the command line, providing the YAML file as an argument:
This setup parses the YAML file, creates the necessary objects, and runs the simulation based on the parameters provided in the YAML file.
These examples include various configurations of molecules, logic gates, and simulation conditions.
Assuming you have implemented AND
, OR
, and NOT
gate logic in your actual LogicGate
class, these should yield appropriate outputs based on the conditions set in each YAML file.
Examples can handle various gate types (AND
, OR
, NOT
).
If not, you'll need to add the logic for these gate types in your LogicGate
class implementation.
To test your script with these examples, save each YAML configuration as separate files
digraph {
Input1Prot [label="Input1Prot (Protein)"]
Input2Prot [label="Input2Prot (Protein)"]
OutputProt [label="OutputProt (Protein)"]
"AND Gate"
Input1Prot -> "AND Gate"
Input2Prot -> "AND Gate"
"AND Gate" -> OutputProt
}
python biocomp.py 1/biocomp.yaml
Running simulation for BioCompSystem1
Conditions: {'time': 100, 'temperature': 37}
Expected Outputs: ['Protein OutputProt']
digraph {
Input1Prot [label="Input1Prot (Protein)"]
Input2Prot [label="Input2Prot (Protein)"]
OutputProt [label="OutputProt (Protein)"]
"OR Gate"
Input1Prot -> "OR Gate"
Input2Prot -> "OR Gate"
"OR Gate" -> OutputProt
}
python biocomp.py 2/biocomp.yaml
Running simulation for BioCompSystem2
Conditions: {'time': 150, 'temperature': 25}
Expected Outputs: ['Protein OutputProt']
digraph {
Input1Prot [label="Input1Prot (Protein)"]
Input2Prot [label="Input2Prot (Protein)"]
Input3Prot [label="Input3Prot (Protein)"]
OutputProt1 [label="OutputProt1 (Protein)"]
OutputProt2 [label="OutputProt2 (Protein)"]
"AND Gate"
Input1Prot -> "AND Gate"
Input2Prot -> "AND Gate"
"AND Gate" -> OutputProt1
"OR Gate"
OutputProt1 -> "OR Gate"
Input3Prot -> "OR Gate"
"OR Gate" -> OutputProt2
}
python biocomp.py 3/biocomp.yaml
Running simulation for BioCompSystem3
Conditions: {'time': 200, 'temperature': 30}
Expected Outputs: ['Protein OutputProt1', 'Protein OutputProt2']
digraph {
Input1Prot [label="Input1Prot (Protein)"]
OutputProt [label="OutputProt (Protein)"]
"NOT Gate"
Input1Prot -> "NOT Gate"
"NOT Gate" -> OutputProt
}
python biocomp.py 4/biocomp.yaml
Running simulation for BioCompSystem4
Conditions: {'time': 120, 'temperature': 37}
Expected Outputs: ['Protein OutputProt']
CONTRIBUTION are always welcome:
- did you found an Issue or Mistake?
- do you want to improve the article?
- are you interested do join another git projects?
- have something to contribute or discuss? Open a pull request or create an issue.
Na co dzień DevOps, ewangelista hipermodularyzacji, ostatnio entuzjasta biocomputing. Łączy doświadczenie w programowaniu i research-u poprzez wdrażanie nowatorskich rozwiązań. Szerokie spektrum zainteresowań, umiejętności analityczne i doświadczenie w branży owocują eksperymentalnymi projektami opensource.
<script type="module"> import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; //import mermaid from 'https://cdn.jsdelivr.net/npm/[email protected]/dist/mermaid.min.js'; mermaid.initialize({ startOnReady:true, theme: 'forest', flowchart:{ useMaxWidth:false, htmlLabels:true } }); mermaid.init(undefined, '.language-mermaid'); </script>