Skip to content

Finding ways to check if removing a gene is lethal for a human

License

Notifications You must be signed in to change notification settings

aichingert/dbi-cancer-research

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DBI cancer research

1. Background

This project is giving specialists the ability to quickly get a lethality score of a gene and producing a list of all it’s synthetic lethal pairs. It also uses two other beings for better results because human genes are not tested very well.

2. Team members

  • Ilming Winnie (parser)

  • Tobias Aichinger (transform, visualize)

  • Nikolaus Alexander (Documentation)

  • Breinesberger Markus (Documentation)

3. Entity Relationship Model

We have a rather simple data model, but it works for our use case. It uses a SynLeth table to store the synthetic relation of two genes and also has a gene table where it stores all the genes we have with the being.

RP3DYeGm48Jl HJz0Zdi7lSa2yioC7Fo2O8fDQ0TINeEehxx67y6XBaLbVggGXT9RTHdtr67Mba3Hz qoiv7LEg34Fs9UXtv7mAUYDaxh4xj4OdP668MsoDhHahvpNPb5I9eETbob3kqtV06WflxUgllioLTcLzuQOx1oz12jFrbcOsPvpr7vy9Xvi17RoU3CM7YJV mmmv3hYWWRZt42m00

4. Data

4.1. SynLethDB

The SynLethDB is used for getting the synthetic lethal pairs for the different beings (Human, Mouse and Yeast). We only used teh SynLethDB because it uses data from BioGrid. See:

synlet

4.2. Orthology databases

OMA is used to map the genes of different beings together.

oma

4.3. Gene essentiality

For gene essentiality OGEE (Online GEne Essential database v3.09) is used. There are two different types of essential genes

  • CSEGs Cancer-specific essential genes

  • CEGs Core-essential genes

Criteria used for classifying CSEGs and CEGs: CSEGs - Genes tested in more than 10 cell lines and essential in only one particular cancer. CEGs - Genes essential in 80% or more tested cell lines.

5. Architecture

FOz12y8m38Nl HMXz q14PdWyA8uKBp83j75RRXrscI8Yl TQbrxwVVU2taa5IMdGzV2bKuNgXWNf8GlGFyEsuTTiTP5K9lrVAHbbXNm1h1zoPYJ4tQ1Tuwid7lN1RblPA2sUJAKf7GaOJHvBrev5WFmwqgI6Pgmmq3u ruS70cdIVjDOek1Y3xpKIp42LQiwFWsi2ZU6wszOHajTGoGiYtzrHy0

In the architecture above you can see that we have three layers in our project. Starting with the parser, continuing with the transformer and the last thing is the visualizer.

5.1. Parser

Here we use a go program which reads all the files and brings the data the form of our erd which then gets inserted into the database.

5.2. Transform

Transform is a axum web application framework which has a single get request taking a gene identifier (name) as a path parameter and returns the transformed data (⇒ meaning we get the gene from the identifier from the database, and then we use that gene to map it to the other beings we have. After that we check if one of the genes is synthetic lethal and for the case of other beings we check that the gene is also contained in the human)

5.3. Visualize

Visualize is our frontend where you have a user interface for entering a gene identifier after that we get the gene from the database (or a gene not found we don’t know it), then we show three rows in the first row there are the lethal pairs for human genes in the second the lethal pairs for mouse genes and in the third row are the lethal pairs for the yeast genes and also a score we calculated

5.3.1. Score calculation

The score is not in percent or something it is just a rough number we calculate using the sum of the lethal pairs where we multiply the lethality score with the gene essentiality score which filters out the pairs where the gene is not essential.

Here is the code for the score calculation:

let mut score = genes.request_gene.essential_score.unwrap_or_default();

let pred = |g: &Lethal| -> f32 {
    g.lethality_score * g.gene.essential_score.unwrap_or_default()
};

let lethality_score =
    genes.yeast_genes.iter().map(pred).sum::<f32>()
    + genes.human_genes.iter().map(pred).sum::<f32>()
    + genes.mouse_genes.iter().map(pred).sum::<f32>();

score += (1. - score) * lethality_score;

5.4. What it looks like:

visualize

6. How to run the project local

This setup was tested on arch linux(but it should also work for other linux distributions like ubuntu)

  • Dependencies

    • go (version. go1.20.11)

    • rust (version. cargo 1.73.0/nightly toolchain)

      • trunk (cargo install trunk)

    • docker

after installing these things you should be able to run the start.sh file in the root of the project

chmod +x start.sh
./start.sh

About

Finding ways to check if removing a gene is lethal for a human

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published