generated from snakemake-workflows/snakemake-workflow-template
-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 4e69ba7
Showing
248 changed files
with
71,540 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Sphinx build info version 1 | ||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. | ||
config: f50760efaab9bfdde3bb0244d8299446 | ||
tags: 645f666f9bcd5a90fca523b33c5a78b7 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Empty file.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
|
||
AFDB tools | ||
===================== | ||
|
||
This module contains the utility functions for alpha fold db and uniprot. | ||
|
||
.. automodule:: src.AFDB_tools | ||
:members: | ||
:undoc-members: | ||
:show-inheritance: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
|
||
foldseek2tree | ||
===================== | ||
|
||
some docs from the function docstrings | ||
|
||
.. automodule:: src.foldseek2tree | ||
:members: | ||
:undoc-members: | ||
:show-inheritance: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
|
||
.. toctree:: | ||
:maxdepth: 2 | ||
:caption: Contents: | ||
|
||
treeinspector | ||
foldseek2tree | ||
AFDBtool | ||
treescore | ||
|
||
|
||
|
||
Foldtree | ||
===================== | ||
|
||
This is the documentation for foldtree, it's a combination of some utility functions and a snakemake workflow to make trees from alphafold structures. | ||
|
||
Installation | ||
------------ | ||
|
||
To use foldtree, first install snakemake: | ||
https://snakemake.readthedocs.io/en/stable/getting_started/installation.html | ||
|
||
|
||
Now we can clone the repo and create a conda environment with the software need to run fold tree | ||
|
||
|
||
.. code-block:: bash | ||
$git clone [email protected]:DessimozLab/fold_tree.git | ||
$cd cd fold_tree | ||
$mamba create -n foldtree --file= ./workflow/config/fold_tree.yaml | ||
$mamba activate foldtree | ||
Now, we're ready to run the pipeline. For most users, using the fold_tree pipeline should be sufficient for their needs. | ||
You can setup a fold_tree run by creating a folder for your output. | ||
|
||
|
||
.. code-block:: bash | ||
$mkdir myfam | ||
Now we can either add an identifiers.txt file containing the uniprot identifiers of all of the proteins we would like to make a tree with. | ||
|
||
.. code-block:: bash | ||
$mkdir myfam | ||
.. code-block:: bash | ||
└── myfam | ||
└── identifiers.txt | ||
Or we can run the pipeline on our own set of structures. Please note that discontinuities or other defects in the PDBs may adversly affect results. | ||
Let's make our structure directory and add some PDB files to it. In this case the identifiers file is blank. | ||
|
||
.. code-block:: bash | ||
└── myfam | ||
├── identifiers.txt | ||
└── structs | ||
├── struct1.pdb | ||
├── struct2.pdb | ||
└── struct3.pdb | ||
Now we're ready to build our trees. Let's run the pipeline. | ||
|
||
|
||
|
||
Usage | ||
----- | ||
|
||
To run the snakemake workflow on the test dataset try using. You can change the folder variable to the location of your data. | ||
|
||
.. code-block:: bash | ||
$ snakemake --cores 4 --use-conda -s ./workflow/fold_tree --config folder=./testdata filter=False customstructs=False --use-conda | ||
Or if you are using a slurm cluster you can use the slurm profile: | ||
|
||
.. code-block:: bash | ||
$ snakemake --cores 4 --use-conda -s ./workflow/fold_tree --config folder=./testdata filter=False customstructs=False --profile slurmsimple --use-conda | ||
The fold_tree workflow will create a tree for each of the uniprot identifiers in the identifier.txt file in the input folder. | ||
|
||
To use custom structures leave a blank identifier file and set the customstructs variable to True. | ||
|
||
.. code-block:: bash | ||
$ snakemake --cores 4 --use-conda -s ./workflow/fold_tree --config folder=./myfam filter=False customstructs=True --profile slurmsimple --use-conda | ||
To use the foldtree utility functions in your own work first install the repo as a python library. | ||
|
||
.. code-block:: bash | ||
$ git clone | ||
$ cd foldtree | ||
$ pip install -e . | ||
Then import the libraries in your script or notebooks | ||
|
||
.. code-block:: python | ||
from foldtree.src import foldseek2tree | ||
from foldtree.src import AFDBtools | ||
from foldtree.src import treescore | ||
# use the functions somehow. | ||
# comments/help are provided in the code | ||
There are also examples of how to use the different functions in the notebooks in the notebooks folder. | ||
|
||
Troubleshooting | ||
--------------- | ||
|
||
If you encounter any issues while using My Project, please file a bug report on our GitHub repository: https://github.com/DessimozLab/fold_tree/issues | ||
|
||
|
||
Credits | ||
------- | ||
|
||
This project was created by Dave Moi, Yannis Nevers and Charles Bernard at DessimozLab (DBC at the university of Lausanne). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
|
||
Tree inspector | ||
===================== | ||
|
||
We made a web application that allows to explore phylogenetic trees we inferred for this paper. | ||
|
||
The tree inspector associated to this work is based on the phylo.io tree viewer. | ||
The 3 showcase trees are the ones that are used in the | ||
foldtree manuscript. The trees used for benchmarking are also included and | ||
are sorted into HOGs inferred to have appeared at different taxonomic levels. | ||
|
||
Use the top navigation bar to switch between the different trees. | ||
|
||
`> Go to Treeinspector <https://dessimozlab.github.io/fold_tree/dist/treeinspector.html>`_ | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
|
||
Treescore | ||
===================== | ||
|
||
The tree string module has a few functions that are useful for | ||
scoring trees based on the taxonomic information in the tree. | ||
Trees that are more taxonomically plausible will have higher scores. | ||
|
||
The module uses the taxonomic information from uniprot to score trees | ||
using a recursive algorithm. The algorithm is described in the | ||
following paper: | ||
|
||
Simple chained guide trees give poorer multiple sequence alignments than inferred trees in simulation and phylogenetic benchmarks | ||
Tan G, Gil M, Löytynoja AP, Goldman N, Dessimoz C | ||
Proc. Natl. Acad. Sci. U. S. A., 2015 | ||
|
||
https://pubmed.ncbi.nlm.nih.gov/25564672/ | ||
|
||
.. automodule:: src.treescore | ||
:members: | ||
:undoc-members: | ||
:show-inheritance: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
/* Compatability shim for jQuery and underscores.js. | ||
* | ||
* Copyright Sphinx contributors | ||
* Released under the two clause BSD licence | ||
*/ | ||
|
||
/** | ||
* small helper function to urldecode strings | ||
* | ||
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL | ||
*/ | ||
jQuery.urldecode = function(x) { | ||
if (!x) { | ||
return x | ||
} | ||
return decodeURIComponent(x.replace(/\+/g, ' ')); | ||
}; | ||
|
||
/** | ||
* small helper function to urlencode strings | ||
*/ | ||
jQuery.urlencode = encodeURIComponent; | ||
|
||
/** | ||
* This function returns the parsed url parameters of the | ||
* current request. Multiple values per key are supported, | ||
* it will always return arrays of strings for the value parts. | ||
*/ | ||
jQuery.getQueryParameters = function(s) { | ||
if (typeof s === 'undefined') | ||
s = document.location.search; | ||
var parts = s.substr(s.indexOf('?') + 1).split('&'); | ||
var result = {}; | ||
for (var i = 0; i < parts.length; i++) { | ||
var tmp = parts[i].split('=', 2); | ||
var key = jQuery.urldecode(tmp[0]); | ||
var value = jQuery.urldecode(tmp[1]); | ||
if (key in result) | ||
result[key].push(value); | ||
else | ||
result[key] = [value]; | ||
} | ||
return result; | ||
}; | ||
|
||
/** | ||
* highlight a given string on a jquery object by wrapping it in | ||
* span elements with the given class name. | ||
*/ | ||
jQuery.fn.highlightText = function(text, className) { | ||
function highlight(node, addItems) { | ||
if (node.nodeType === 3) { | ||
var val = node.nodeValue; | ||
var pos = val.toLowerCase().indexOf(text); | ||
if (pos >= 0 && | ||
!jQuery(node.parentNode).hasClass(className) && | ||
!jQuery(node.parentNode).hasClass("nohighlight")) { | ||
var span; | ||
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); | ||
if (isInSVG) { | ||
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); | ||
} else { | ||
span = document.createElement("span"); | ||
span.className = className; | ||
} | ||
span.appendChild(document.createTextNode(val.substr(pos, text.length))); | ||
node.parentNode.insertBefore(span, node.parentNode.insertBefore( | ||
document.createTextNode(val.substr(pos + text.length)), | ||
node.nextSibling)); | ||
node.nodeValue = val.substr(0, pos); | ||
if (isInSVG) { | ||
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); | ||
var bbox = node.parentElement.getBBox(); | ||
rect.x.baseVal.value = bbox.x; | ||
rect.y.baseVal.value = bbox.y; | ||
rect.width.baseVal.value = bbox.width; | ||
rect.height.baseVal.value = bbox.height; | ||
rect.setAttribute('class', className); | ||
addItems.push({ | ||
"parent": node.parentNode, | ||
"target": rect}); | ||
} | ||
} | ||
} | ||
else if (!jQuery(node).is("button, select, textarea")) { | ||
jQuery.each(node.childNodes, function() { | ||
highlight(this, addItems); | ||
}); | ||
} | ||
} | ||
var addItems = []; | ||
var result = this.each(function() { | ||
highlight(this, addItems); | ||
}); | ||
for (var i = 0; i < addItems.length; ++i) { | ||
jQuery(addItems[i].parent).before(addItems[i].target); | ||
} | ||
return result; | ||
}; | ||
|
||
/* | ||
* backward compatibility for jQuery.browser | ||
* This will be supported until firefox bug is fixed. | ||
*/ | ||
if (!jQuery.browser) { | ||
jQuery.uaMatch = function(ua) { | ||
ua = ua.toLowerCase(); | ||
|
||
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || | ||
/(webkit)[ \/]([\w.]+)/.exec(ua) || | ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || | ||
/(msie) ([\w.]+)/.exec(ua) || | ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || | ||
[]; | ||
|
||
return { | ||
browser: match[ 1 ] || "", | ||
version: match[ 2 ] || "0" | ||
}; | ||
}; | ||
jQuery.browser = {}; | ||
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; | ||
} |
Oops, something went wrong.