Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Deep learning the cis-regulatory code for gene expression in selected model plants

DOI

Please follow the steps below to reproduce the results from our work.

  1. Download this repository.
  2. Change directory into the model subdirectory, run the fetch_genomes_and_annotation.sh script. Firstly, this will create 3 new subdirectories: genomes, gene_models, tpm_counts. Then, it will download genomes and gene models for 4 plant species, uncompress them and store them in genomes and gene models subdirectories respectively.
  3. Download expression counts for the project from supplementary data from publication and save these files within the tpm_counts subdirectory. NB: you should have 8 files, corresponding to 4 plant species and 2 tissues. For example, for Arabidopsis thaliana you would have arabidopsis_counts.csv and arabidopsis_root_counts.csv for leaf and root tissues respectively.

Training convolutional neural networks

  • To train SSR and SSC models, run the train_ssr_ssc_models_leaf.py and train_ssr_ssc_models_root.py for leaf and root tissues respectively.
  • Train the MSR models using train_msr_models_leaf.py and train_msr_models_root.py.

Only after training CNN models can you run the scripts below that compute importance scores and generate motifs. Also note that deepLIFT which is used to compute importance scores is currently only compatible with tensorflow 1.x. So if you build models with tensorflow 2.x, you won't be able to use these scripts.

Computing importance scores and obtaining motifs

  • Run the motif_discovery_... scripts for respective tissue and models.
  • Then run extract_motifs_ssr.py or extract_motifs_msr.py to get the motifs out of the output produced by modisco.

Random forest models

  • Firstly, create the features using the create_generic_feature.py script.
  • Then run either random_forest_msr.py or random_forest_ssr.py for MSR and SSR models respectively.

Investigate effect of different sequence lengths

To investigate the effects of different UTR or promoter sequence lengths, use the effect_of_different_... scripts. These scripts will build several models based on different length specified within the scripts.

Generating validation_genes.pickle file

This file contains information of genes that have homologs only within their chromosomes, such that when we use chromosome level cross validation for training, we mitigate the effects of homologs leaking information between our training and test set. While I provide the pickle file used for this project, one can generate this themselves by firstly going into the data directory that sits as a sibling directory to model directory, then running the commands below in the terminal:

wget https://ftp.ebi.ac.uk/ensemblgenomes/pub/release-52/plants/fasta/arabidopsis_thaliana/pep/Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
gunzip Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
makeblastdb -in Arabidopsis_thaliana.TAIR10.pep.all.fa -dbtype prot -title arabidopsis -parse_seqids -hash_index -out arabidopsis
blastp -db arabidopsis -query Arabidopsis_thaliana.TAIR10.pep.all.fa -out Blast_ara_to_ara -outfmt 6

The above assume that you have blast installed on your computer. The above 4 lines are just for Arabidopsis thaliana but should be edited and repeated for the other 4 species. Once this is done, run the produce_non_homologous_val_sets.py script.

About

Deep learning the cis-regulatory code for gene expression in selected model plants

Topics

Resources

Stars

26 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Deep learning the cis-regulatory code for gene expression in selected model plants

DOI

Please follow the steps below to reproduce the results from our work.

  1. Download this repository.
  2. Change directory into the model subdirectory, run the fetch_genomes_and_annotation.sh script. Firstly, this will create 3 new subdirectories: genomes, gene_models, tpm_counts. Then, it will download genomes and gene models for 4 plant species, uncompress them and store them in genomes and gene models subdirectories respectively.
  3. Download expression counts for the project from supplementary data from publication and save these files within the tpm_counts subdirectory. NB: you should have 8 files, corresponding to 4 plant species and 2 tissues. For example, for Arabidopsis thaliana you would have arabidopsis_counts.csv and arabidopsis_root_counts.csv for leaf and root tissues respectively.

Training convolutional neural networks

  • To train SSR and SSC models, run the train_ssr_ssc_models_leaf.py and train_ssr_ssc_models_root.py for leaf and root tissues respectively.
  • Train the MSR models using train_msr_models_leaf.py and train_msr_models_root.py.

Only after training CNN models can you run the scripts below that compute importance scores and generate motifs. Also note that deepLIFT which is used to compute importance scores is currently only compatible with tensorflow 1.x. So if you build models with tensorflow 2.x, you won't be able to use these scripts.

Computing importance scores and obtaining motifs

  • Run the motif_discovery_... scripts for respective tissue and models.
  • Then run extract_motifs_ssr.py or extract_motifs_msr.py to get the motifs out of the output produced by modisco.

Random forest models

  • Firstly, create the features using the create_generic_feature.py script.
  • Then run either random_forest_msr.py or random_forest_ssr.py for MSR and SSR models respectively.

Investigate effect of different sequence lengths

To investigate the effects of different UTR or promoter sequence lengths, use the effect_of_different_... scripts. These scripts will build several models based on different length specified within the scripts.

Generating validation_genes.pickle file

This file contains information of genes that have homologs only within their chromosomes, such that when we use chromosome level cross validation for training, we mitigate the effects of homologs leaking information between our training and test set. While I provide the pickle file used for this project, one can generate this themselves by firstly going into the data directory that sits as a sibling directory to model directory, then running the commands below in the terminal:

wget https://ftp.ebi.ac.uk/ensemblgenomes/pub/release-52/plants/fasta/arabidopsis_thaliana/pep/Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
gunzip Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
makeblastdb -in Arabidopsis_thaliana.TAIR10.pep.all.fa -dbtype prot -title arabidopsis -parse_seqids -hash_index -out arabidopsis
blastp -db arabidopsis -query Arabidopsis_thaliana.TAIR10.pep.all.fa -out Blast_ara_to_ara -outfmt 6

The above assume that you have blast installed on your computer. The above 4 lines are just for Arabidopsis thaliana but should be edited and repeated for the other 4 species. Once this is done, run the produce_non_homologous_val_sets.py script.

About

Deep learning the cis-regulatory code for gene expression in selected model plants

Topics

Resources

Stars

26 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Deep learning the cis-regulatory code for gene expression in selected model plants

DOI

Please follow the steps below to reproduce the results from our work.

  1. Download this repository.
  2. Change directory into the model subdirectory, run the fetch_genomes_and_annotation.sh script. Firstly, this will create 3 new subdirectories: genomes, gene_models, tpm_counts. Then, it will download genomes and gene models for 4 plant species, uncompress them and store them in genomes and gene models subdirectories respectively.
  3. Download expression counts for the project from supplementary data from publication and save these files within the tpm_counts subdirectory. NB: you should have 8 files, corresponding to 4 plant species and 2 tissues. For example, for Arabidopsis thaliana you would have arabidopsis_counts.csv and arabidopsis_root_counts.csv for leaf and root tissues respectively.

Training convolutional neural networks

  • To train SSR and SSC models, run the train_ssr_ssc_models_leaf.py and train_ssr_ssc_models_root.py for leaf and root tissues respectively.
  • Train the MSR models using train_msr_models_leaf.py and train_msr_models_root.py.

Only after training CNN models can you run the scripts below that compute importance scores and generate motifs. Also note that deepLIFT which is used to compute importance scores is currently only compatible with tensorflow 1.x. So if you build models with tensorflow 2.x, you won't be able to use these scripts.

Computing importance scores and obtaining motifs

  • Run the motif_discovery_... scripts for respective tissue and models.
  • Then run extract_motifs_ssr.py or extract_motifs_msr.py to get the motifs out of the output produced by modisco.

Random forest models

  • Firstly, create the features using the create_generic_feature.py script.
  • Then run either random_forest_msr.py or random_forest_ssr.py for MSR and SSR models respectively.

Investigate effect of different sequence lengths

To investigate the effects of different UTR or promoter sequence lengths, use the effect_of_different_... scripts. These scripts will build several models based on different length specified within the scripts.

Generating validation_genes.pickle file

This file contains information of genes that have homologs only within their chromosomes, such that when we use chromosome level cross validation for training, we mitigate the effects of homologs leaking information between our training and test set. While I provide the pickle file used for this project, one can generate this themselves by firstly going into the data directory that sits as a sibling directory to model directory, then running the commands below in the terminal:

wget https://ftp.ebi.ac.uk/ensemblgenomes/pub/release-52/plants/fasta/arabidopsis_thaliana/pep/Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
gunzip Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
makeblastdb -in Arabidopsis_thaliana.TAIR10.pep.all.fa -dbtype prot -title arabidopsis -parse_seqids -hash_index -out arabidopsis
blastp -db arabidopsis -query Arabidopsis_thaliana.TAIR10.pep.all.fa -out Blast_ara_to_ara -outfmt 6

The above assume that you have blast installed on your computer. The above 4 lines are just for Arabidopsis thaliana but should be edited and repeated for the other 4 species. Once this is done, run the produce_non_homologous_val_sets.py script.

About

Deep learning the cis-regulatory code for gene expression in selected model plants

Topics

Resources

Stars

26 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Deep learning the cis-regulatory code for gene expression in selected model plants

DOI

Please follow the steps below to reproduce the results from our work.

  1. Download this repository.
  2. Change directory into the model subdirectory, run the fetch_genomes_and_annotation.sh script. Firstly, this will create 3 new subdirectories: genomes, gene_models, tpm_counts. Then, it will download genomes and gene models for 4 plant species, uncompress them and store them in genomes and gene models subdirectories respectively.
  3. Download expression counts for the project from supplementary data from publication and save these files within the tpm_counts subdirectory. NB: you should have 8 files, corresponding to 4 plant species and 2 tissues. For example, for Arabidopsis thaliana you would have arabidopsis_counts.csv and arabidopsis_root_counts.csv for leaf and root tissues respectively.

Training convolutional neural networks

  • To train SSR and SSC models, run the train_ssr_ssc_models_leaf.py and train_ssr_ssc_models_root.py for leaf and root tissues respectively.
  • Train the MSR models using train_msr_models_leaf.py and train_msr_models_root.py.

Only after training CNN models can you run the scripts below that compute importance scores and generate motifs. Also note that deepLIFT which is used to compute importance scores is currently only compatible with tensorflow 1.x. So if you build models with tensorflow 2.x, you won't be able to use these scripts.

Computing importance scores and obtaining motifs

  • Run the motif_discovery_... scripts for respective tissue and models.
  • Then run extract_motifs_ssr.py or extract_motifs_msr.py to get the motifs out of the output produced by modisco.

Random forest models

  • Firstly, create the features using the create_generic_feature.py script.
  • Then run either random_forest_msr.py or random_forest_ssr.py for MSR and SSR models respectively.

Investigate effect of different sequence lengths

To investigate the effects of different UTR or promoter sequence lengths, use the effect_of_different_... scripts. These scripts will build several models based on different length specified within the scripts.

Generating validation_genes.pickle file

This file contains information of genes that have homologs only within their chromosomes, such that when we use chromosome level cross validation for training, we mitigate the effects of homologs leaking information between our training and test set. While I provide the pickle file used for this project, one can generate this themselves by firstly going into the data directory that sits as a sibling directory to model directory, then running the commands below in the terminal:

wget https://ftp.ebi.ac.uk/ensemblgenomes/pub/release-52/plants/fasta/arabidopsis_thaliana/pep/Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
gunzip Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
makeblastdb -in Arabidopsis_thaliana.TAIR10.pep.all.fa -dbtype prot -title arabidopsis -parse_seqids -hash_index -out arabidopsis
blastp -db arabidopsis -query Arabidopsis_thaliana.TAIR10.pep.all.fa -out Blast_ara_to_ara -outfmt 6

The above assume that you have blast installed on your computer. The above 4 lines are just for Arabidopsis thaliana but should be edited and repeated for the other 4 species. Once this is done, run the produce_non_homologous_val_sets.py script.

About

Deep learning the cis-regulatory code for gene expression in selected model plants

Topics

Resources

Stars

26 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Deep learning the cis-regulatory code for gene expression in selected model plants

DOI

Please follow the steps below to reproduce the results from our work.

  1. Download this repository.
  2. Change directory into the model subdirectory, run the fetch_genomes_and_annotation.sh script. Firstly, this will create 3 new subdirectories: genomes, gene_models, tpm_counts. Then, it will download genomes and gene models for 4 plant species, uncompress them and store them in genomes and gene models subdirectories respectively.
  3. Download expression counts for the project from supplementary data from publication and save these files within the tpm_counts subdirectory. NB: you should have 8 files, corresponding to 4 plant species and 2 tissues. For example, for Arabidopsis thaliana you would have arabidopsis_counts.csv and arabidopsis_root_counts.csv for leaf and root tissues respectively.

Training convolutional neural networks

  • To train SSR and SSC models, run the train_ssr_ssc_models_leaf.py and train_ssr_ssc_models_root.py for leaf and root tissues respectively.
  • Train the MSR models using train_msr_models_leaf.py and train_msr_models_root.py.

Only after training CNN models can you run the scripts below that compute importance scores and generate motifs. Also note that deepLIFT which is used to compute importance scores is currently only compatible with tensorflow 1.x. So if you build models with tensorflow 2.x, you won't be able to use these scripts.

Computing importance scores and obtaining motifs

  • Run the motif_discovery_... scripts for respective tissue and models.
  • Then run extract_motifs_ssr.py or extract_motifs_msr.py to get the motifs out of the output produced by modisco.

Random forest models

  • Firstly, create the features using the create_generic_feature.py script.
  • Then run either random_forest_msr.py or random_forest_ssr.py for MSR and SSR models respectively.

Investigate effect of different sequence lengths

To investigate the effects of different UTR or promoter sequence lengths, use the effect_of_different_... scripts. These scripts will build several models based on different length specified within the scripts.

Generating validation_genes.pickle file

This file contains information of genes that have homologs only within their chromosomes, such that when we use chromosome level cross validation for training, we mitigate the effects of homologs leaking information between our training and test set. While I provide the pickle file used for this project, one can generate this themselves by firstly going into the data directory that sits as a sibling directory to model directory, then running the commands below in the terminal:

wget https://ftp.ebi.ac.uk/ensemblgenomes/pub/release-52/plants/fasta/arabidopsis_thaliana/pep/Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
gunzip Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
makeblastdb -in Arabidopsis_thaliana.TAIR10.pep.all.fa -dbtype prot -title arabidopsis -parse_seqids -hash_index -out arabidopsis
blastp -db arabidopsis -query Arabidopsis_thaliana.TAIR10.pep.all.fa -out Blast_ara_to_ara -outfmt 6

The above assume that you have blast installed on your computer. The above 4 lines are just for Arabidopsis thaliana but should be edited and repeated for the other 4 species. Once this is done, run the produce_non_homologous_val_sets.py script.

About

Deep learning the cis-regulatory code for gene expression in selected model plants

Topics

Resources

Stars

26 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Deep learning the cis-regulatory code for gene expression in selected model plants

DOI

Please follow the steps below to reproduce the results from our work.

  1. Download this repository.
  2. Change directory into the model subdirectory, run the fetch_genomes_and_annotation.sh script. Firstly, this will create 3 new subdirectories: genomes, gene_models, tpm_counts. Then, it will download genomes and gene models for 4 plant species, uncompress them and store them in genomes and gene models subdirectories respectively.
  3. Download expression counts for the project from supplementary data from publication and save these files within the tpm_counts subdirectory. NB: you should have 8 files, corresponding to 4 plant species and 2 tissues. For example, for Arabidopsis thaliana you would have arabidopsis_counts.csv and arabidopsis_root_counts.csv for leaf and root tissues respectively.

Training convolutional neural networks

  • To train SSR and SSC models, run the train_ssr_ssc_models_leaf.py and train_ssr_ssc_models_root.py for leaf and root tissues respectively.
  • Train the MSR models using train_msr_models_leaf.py and train_msr_models_root.py.

Only after training CNN models can you run the scripts below that compute importance scores and generate motifs. Also note that deepLIFT which is used to compute importance scores is currently only compatible with tensorflow 1.x. So if you build models with tensorflow 2.x, you won't be able to use these scripts.

Computing importance scores and obtaining motifs

  • Run the motif_discovery_... scripts for respective tissue and models.
  • Then run extract_motifs_ssr.py or extract_motifs_msr.py to get the motifs out of the output produced by modisco.

Random forest models

  • Firstly, create the features using the create_generic_feature.py script.
  • Then run either random_forest_msr.py or random_forest_ssr.py for MSR and SSR models respectively.

Investigate effect of different sequence lengths

To investigate the effects of different UTR or promoter sequence lengths, use the effect_of_different_... scripts. These scripts will build several models based on different length specified within the scripts.

Generating validation_genes.pickle file

This file contains information of genes that have homologs only within their chromosomes, such that when we use chromosome level cross validation for training, we mitigate the effects of homologs leaking information between our training and test set. While I provide the pickle file used for this project, one can generate this themselves by firstly going into the data directory that sits as a sibling directory to model directory, then running the commands below in the terminal:

wget https://ftp.ebi.ac.uk/ensemblgenomes/pub/release-52/plants/fasta/arabidopsis_thaliana/pep/Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
gunzip Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
makeblastdb -in Arabidopsis_thaliana.TAIR10.pep.all.fa -dbtype prot -title arabidopsis -parse_seqids -hash_index -out arabidopsis
blastp -db arabidopsis -query Arabidopsis_thaliana.TAIR10.pep.all.fa -out Blast_ara_to_ara -outfmt 6

The above assume that you have blast installed on your computer. The above 4 lines are just for Arabidopsis thaliana but should be edited and repeated for the other 4 species. Once this is done, run the produce_non_homologous_val_sets.py script.

About

Deep learning the cis-regulatory code for gene expression in selected model plants

Topics

Resources

Stars

26 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Deep learning the cis-regulatory code for gene expression in selected model plants

DOI

Please follow the steps below to reproduce the results from our work.

  1. Download this repository.
  2. Change directory into the model subdirectory, run the fetch_genomes_and_annotation.sh script. Firstly, this will create 3 new subdirectories: genomes, gene_models, tpm_counts. Then, it will download genomes and gene models for 4 plant species, uncompress them and store them in genomes and gene models subdirectories respectively.
  3. Download expression counts for the project from supplementary data from publication and save these files within the tpm_counts subdirectory. NB: you should have 8 files, corresponding to 4 plant species and 2 tissues. For example, for Arabidopsis thaliana you would have arabidopsis_counts.csv and arabidopsis_root_counts.csv for leaf and root tissues respectively.

Training convolutional neural networks

  • To train SSR and SSC models, run the train_ssr_ssc_models_leaf.py and train_ssr_ssc_models_root.py for leaf and root tissues respectively.
  • Train the MSR models using train_msr_models_leaf.py and train_msr_models_root.py.

Only after training CNN models can you run the scripts below that compute importance scores and generate motifs. Also note that deepLIFT which is used to compute importance scores is currently only compatible with tensorflow 1.x. So if you build models with tensorflow 2.x, you won't be able to use these scripts.

Computing importance scores and obtaining motifs

  • Run the motif_discovery_... scripts for respective tissue and models.
  • Then run extract_motifs_ssr.py or extract_motifs_msr.py to get the motifs out of the output produced by modisco.

Random forest models

  • Firstly, create the features using the create_generic_feature.py script.
  • Then run either random_forest_msr.py or random_forest_ssr.py for MSR and SSR models respectively.

Investigate effect of different sequence lengths

To investigate the effects of different UTR or promoter sequence lengths, use the effect_of_different_... scripts. These scripts will build several models based on different length specified within the scripts.

Generating validation_genes.pickle file

This file contains information of genes that have homologs only within their chromosomes, such that when we use chromosome level cross validation for training, we mitigate the effects of homologs leaking information between our training and test set. While I provide the pickle file used for this project, one can generate this themselves by firstly going into the data directory that sits as a sibling directory to model directory, then running the commands below in the terminal:

wget https://ftp.ebi.ac.uk/ensemblgenomes/pub/release-52/plants/fasta/arabidopsis_thaliana/pep/Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
gunzip Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
makeblastdb -in Arabidopsis_thaliana.TAIR10.pep.all.fa -dbtype prot -title arabidopsis -parse_seqids -hash_index -out arabidopsis
blastp -db arabidopsis -query Arabidopsis_thaliana.TAIR10.pep.all.fa -out Blast_ara_to_ara -outfmt 6

The above assume that you have blast installed on your computer. The above 4 lines are just for Arabidopsis thaliana but should be edited and repeated for the other 4 species. Once this is done, run the produce_non_homologous_val_sets.py script.

About

Deep learning the cis-regulatory code for gene expression in selected model plants

Topics

Resources

Stars

26 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Deep learning the cis-regulatory code for gene expression in selected model plants

DOI

Please follow the steps below to reproduce the results from our work.

  1. Download this repository.
  2. Change directory into the model subdirectory, run the fetch_genomes_and_annotation.sh script. Firstly, this will create 3 new subdirectories: genomes, gene_models, tpm_counts. Then, it will download genomes and gene models for 4 plant species, uncompress them and store them in genomes and gene models subdirectories respectively.
  3. Download expression counts for the project from supplementary data from publication and save these files within the tpm_counts subdirectory. NB: you should have 8 files, corresponding to 4 plant species and 2 tissues. For example, for Arabidopsis thaliana you would have arabidopsis_counts.csv and arabidopsis_root_counts.csv for leaf and root tissues respectively.

Training convolutional neural networks

  • To train SSR and SSC models, run the train_ssr_ssc_models_leaf.py and train_ssr_ssc_models_root.py for leaf and root tissues respectively.
  • Train the MSR models using train_msr_models_leaf.py and train_msr_models_root.py.

Only after training CNN models can you run the scripts below that compute importance scores and generate motifs. Also note that deepLIFT which is used to compute importance scores is currently only compatible with tensorflow 1.x. So if you build models with tensorflow 2.x, you won't be able to use these scripts.

Computing importance scores and obtaining motifs

  • Run the motif_discovery_... scripts for respective tissue and models.
  • Then run extract_motifs_ssr.py or extract_motifs_msr.py to get the motifs out of the output produced by modisco.

Random forest models

  • Firstly, create the features using the create_generic_feature.py script.
  • Then run either random_forest_msr.py or random_forest_ssr.py for MSR and SSR models respectively.

Investigate effect of different sequence lengths

To investigate the effects of different UTR or promoter sequence lengths, use the effect_of_different_... scripts. These scripts will build several models based on different length specified within the scripts.

Generating validation_genes.pickle file

This file contains information of genes that have homologs only within their chromosomes, such that when we use chromosome level cross validation for training, we mitigate the effects of homologs leaking information between our training and test set. While I provide the pickle file used for this project, one can generate this themselves by firstly going into the data directory that sits as a sibling directory to model directory, then running the commands below in the terminal:

wget https://ftp.ebi.ac.uk/ensemblgenomes/pub/release-52/plants/fasta/arabidopsis_thaliana/pep/Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
gunzip Arabidopsis_thaliana.TAIR10.pep.all.fa.gz
makeblastdb -in Arabidopsis_thaliana.TAIR10.pep.all.fa -dbtype prot -title arabidopsis -parse_seqids -hash_index -out arabidopsis
blastp -db arabidopsis -query Arabidopsis_thaliana.TAIR10.pep.all.fa -out Blast_ara_to_ara -outfmt 6

The above assume that you have blast installed on your computer. The above 4 lines are just for Arabidopsis thaliana but should be edited and repeated for the other 4 species. Once this is done, run the produce_non_homologous_val_sets.py script.

About

Deep learning the cis-regulatory code for gene expression in selected model plants

Topics

Resources

Stars

26 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages