Commit b14838e3 by Mustafa Tekpinar

Updated the documentation.

parent 8d766d4d
# Sphinx build info version 1 # 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. # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 1d56d17901c6f429146d20c07a73dc21 config: 22c71542c2e9339759d7f2af8f251cf8
tags: 645f666f9bcd5a90fca523b33c5a78b7 tags: 645f666f9bcd5a90fca523b33c5a78b7
...@@ -29,13 +29,13 @@ file in fasta format: ...@@ -29,13 +29,13 @@ file in fasta format:
.. code:: bash .. code:: bash
wget http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/blob/master/data/aliBLAT.fasta wget http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/raw/8d766d4d11af0e93c9da8fc2c5cc1bfc457d2936/data/aliBLAT.fasta
If you don’t have wget, you can try the same command with curl: If you don’t have wget, you can try the same command with curl:
.. code:: bash .. code:: bash
curl http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/blob/master/data/aliBLAT.fasta curl http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/raw/8d766d4d11af0e93c9da8fc2c5cc1bfc457d2936/data/aliBLAT.fasta >aliBLAT.fasta
Please verify that the aliBLAT.fasta file is in the folder. Please verify that the aliBLAT.fasta file is in the folder.
...@@ -43,7 +43,7 @@ Now, we will download the PDB (Protein Databank) file for BLAT: ...@@ -43,7 +43,7 @@ Now, we will download the PDB (Protein Databank) file for BLAT:
.. code:: bash .. code:: bash
wget http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/blob/master/data/blat-af2.pdb wget http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/raw/8d766d4d11af0e93c9da8fc2c5cc1bfc457d2936/data/blat-af2.pdb
Single point mutation calculations Single point mutation calculations
---------------------------------- ----------------------------------
...@@ -81,7 +81,7 @@ In this step, we will use only evolutionary information from an MSA file: ...@@ -81,7 +81,7 @@ In this step, we will use only evolutionary information from an MSA file:
.. code:: bash .. code:: bash
python $ESGEMME_PATH/esgemme.py aliBLAT.fasta -r input -f aliBLAT.fasta esgemme aliBLAT.fasta -r input -f aliBLAT.fasta
After a few minutes of calculation, you must see at least two files named After a few minutes of calculation, you must see at least two files named
BLAT_normPred_evolCombi.txt and BLAT_normPred_evolCombi.png. You have BLAT_normPred_evolCombi.txt and BLAT_normPred_evolCombi.png. You have
...@@ -93,7 +93,7 @@ evolutionary information: ...@@ -93,7 +93,7 @@ evolutionary information:
.. code:: bash .. code:: bash
python $ESGEMME_PATH/esgemme.py aliBLAT.fasta -r input -f aliBLAT.fasta \ esgemme aliBLAT.fasta -r input -f aliBLAT.fasta \
--pdbfile blat-af2.pdb \ --pdbfile blat-af2.pdb \
--normweightmode sstjetormax --normweightmode sstjetormax
...@@ -113,13 +113,13 @@ structural information. First, let's do it without structural information: ...@@ -113,13 +113,13 @@ structural information. First, let's do it without structural information:
.. code:: bash .. code:: bash
python $ESGEMME_PATH/esgemme.py aliBLAT.fasta -r input -f aliBLAT.fasta \ esgemme aliBLAT.fasta -r input -f aliBLAT.fasta \
-m Stiffler_2015_BLAT_ECOLX.mut -m Stiffler_2015_BLAT_ECOLX.mut
You can include structural information in the following way: You can include structural information in the following way:
.. code:: bash .. code:: bash
python $ESGEMME_PATH/esgemme.py aliBLAT.fasta -r input -f aliBLAT.fasta \ esgemme aliBLAT.fasta -r input -f aliBLAT.fasta \
--pdbfile blat-af2.pdb \ --pdbfile blat-af2.pdb \
--normweightmode sstjetormax \ --normweightmode sstjetormax \
-m Stiffler_2015_BLAT_ECOLX.mut -m Stiffler_2015_BLAT_ECOLX.mut
......
...@@ -22,20 +22,115 @@ ESGEMME has the following external dependencies: ...@@ -22,20 +22,115 @@ ESGEMME has the following external dependencies:
These tools should be installed to be able to use ESGEMME. These tools should be installed to be able to use ESGEMME.
Getting the source code and preparing the environment: Preparation of the environment and installation of ESGEMME
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Download the ESGEMME source code from Step by step installation on Ubuntu 22.04
http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME. Define and export the
environment variable ESGEMME_PATH=/path-to-ESGEMME-directory/
Prepare your environment and install the required packages:
.. code:: bash
sudo apt-get update --fix-missing && \
sudo apt-get install -y --no-install-recommends apt-utils && \
sudo apt-get install -y software-properties-common && \
sudo apt-get install -y autotools-dev && \
sudo apt-get install -y automake && \
sudo apt-get install -y build-essential && \
sudo apt-get install -y python3-dev && \
sudo apt-get install -y python3-pip && \
sudo apt-get install -y r-base r-base-core && \
sudo apt-get install -y muscle && \
sudo apt-get install -y default-jre && \
sudo apt-get install -y ncbi-blast+ && \
sudo apt-get install -y nano && \
sudo apt-get install -y less && \
sudo apt-get install -y wget && \
sudo apt-get install csh && \
sudo apt-get install -y hmmer && \
sudo apt-get install -y libboost-all-dev && \
sudo apt-get clean && \
sudo rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
#Dssp installation
If you are using Ubuntu 20.04, you can install dssp by the following command
.. code:: bash
sudo apt-get install dssp
Otherwise, you can install it from the source by the following commands.
Please note that default dssp in Ubuntu 22.04 is not working properly.
.. code:: bash .. code:: bash
export ESGEMME_PATH=/path-to-ESGEMME-directory/ wget https://github.com/cmbi/dssp/archive/refs/heads/master.zip && \
unzip -o master.zip && cd dssp-master/ && \
./autogen.sh && \
./configure && \
make && \
sudo make install && \
sudo ln -s /usr/local/bin/mkdssp /usr/local/bin/dssp && \
cd ../ && \
sudo rm -rf dssp-master/ && \
sudo rm -f master.zip
#HHSUITE installation
.. code:: bash
wget https://github.com/soedinglab/hh-suite/releases/download/v3.3.0/hhsuite-3.3.0-AVX2-Linux.tar.gz && \
mkdir hhsuite && \
mv hhsuite-3.3.0-AVX2-Linux.tar.gz hhsuite/ && \
cd hhsuite && \
tar xvfz hhsuite-3.3.0-AVX2-Linux.tar.gz && \
rm -f hhsuite-3.3.0-AVX2-Linux.tar.gz
#Add it to your path permanently inside .bashrc or .profile or .bash_profile
Check the location of hhsuite folder and add it to your path
In my case it was in /home/tekpinar/research/lcqb folder. Therefore, I added the following line
to my .profile file.
PATH="/home/tekpinar/research/lcqb/hhsuite/bin:/home/tekpinar/research/lcqb/hhsuite/scripts:$PATH"
Then
source ~/.profile
#
cd ESGEMME
#Download ESGEMME from http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME repository and go inside the ESGEMME folder.!
.. code:: bash
cd ESGEMME
Configuring default.conf file Configuring default.conf file
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Inside ESGEMME folder, there is an important file called default.conf. Inside ESGEMME/esgemme folder, there is an important file called default.conf.
This file contains essential parameters of ESGEMME, such as paths of This file contains essential parameters of ESGEMME, such as paths of
external parts, default internal parameters. etc. You have to correct the Software section of this external parts, default internal parameters. etc. You have to correct the Software section of this
file according to your system. file according to your system.
.. code:: bash
pip3 install -e . &&\
cd ../
#Installing the required R packages
.. code:: bash
sudo Rscript -e 'install.packages("seqinr", repos="http://cran.us.r-project.org", dependencies=TRUE)'
#Installing secondary programs such as ev_couplings to obtain MSA files.
.. code:: bash
wget https://github.com/debbiemarkslab/plmc/archive/refs/heads/master.zip && \
unzip -o master.zip && \
cd plmc-master && \
make all-openmp32 && \
sudo cp bin/plmc /usr/local/bin/ && \
cd ../ && \
rm -rf master.zip plmc-master
/* Compatability shim for jQuery and underscores.js. /*
* _sphinx_javascript_frameworks_compat.js
* ~~~~~~~~~~
*
* Compatability shim for jQuery and underscores.js.
*
* WILL BE REMOVED IN Sphinx 6.0
* xref RemovedInSphinx60Warning
* *
* Copyright Sphinx contributors
* Released under the two clause BSD licence
*/ */
/** /**
* select a different prefix for underscore
*/
$u = _.noConflict();
/**
* small helper function to urldecode strings * 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 * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* *
* Sphinx stylesheet -- basic theme. * Sphinx stylesheet -- basic theme.
* *
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details. * :license: BSD, see LICENSE for details.
* *
*/ */
...@@ -324,17 +324,17 @@ aside.sidebar { ...@@ -324,17 +324,17 @@ aside.sidebar {
p.sidebar-title { p.sidebar-title {
font-weight: bold; font-weight: bold;
} }
nav.contents, nav.contents,
aside.topic, aside.topic,
div.admonition, div.topic, blockquote { div.admonition, div.topic, blockquote {
clear: left; clear: left;
} }
/* -- topics ---------------------------------------------------------------- */ /* -- topics ---------------------------------------------------------------- */
nav.contents, nav.contents,
aside.topic, aside.topic,
div.topic { div.topic {
border: 1px solid #ccc; border: 1px solid #ccc;
padding: 7px; padding: 7px;
...@@ -375,6 +375,7 @@ div.sidebar > :last-child, ...@@ -375,6 +375,7 @@ div.sidebar > :last-child,
aside.sidebar > :last-child, aside.sidebar > :last-child,
nav.contents > :last-child, nav.contents > :last-child,
aside.topic > :last-child, aside.topic > :last-child,
div.topic > :last-child, div.topic > :last-child,
div.admonition > :last-child { div.admonition > :last-child {
margin-bottom: 0; margin-bottom: 0;
...@@ -384,6 +385,7 @@ div.sidebar::after, ...@@ -384,6 +385,7 @@ div.sidebar::after,
aside.sidebar::after, aside.sidebar::after,
nav.contents::after, nav.contents::after,
aside.topic::after, aside.topic::after,
div.topic::after, div.topic::after,
div.admonition::after, div.admonition::after,
blockquote::after { blockquote::after {
...@@ -609,6 +611,25 @@ ul.simple p { ...@@ -609,6 +611,25 @@ ul.simple p {
margin-bottom: 0; margin-bottom: 0;
} }
/* Docutils 0.17 and older (footnotes & citations) */
dl.footnote > dt,
dl.citation > dt {
float: left;
margin-right: 0.5em;
}
dl.footnote > dd,
dl.citation > dd {
margin-bottom: 0em;
}
dl.footnote > dd:after,
dl.citation > dd:after {
content: "";
clear: both;
}
/* Docutils 0.18+ (footnotes & citations) */
aside.footnote > span, aside.footnote > span,
div.citation > span { div.citation > span {
float: left; float: left;
...@@ -633,6 +654,8 @@ div.citation > p:last-of-type:after { ...@@ -633,6 +654,8 @@ div.citation > p:last-of-type:after {
clear: both; clear: both;
} }
/* Footnotes & citations ends */
dl.field-list { dl.field-list {
display: grid; display: grid;
grid-template-columns: fit-content(30%) auto; grid-template-columns: fit-content(30%) auto;
...@@ -645,6 +668,10 @@ dl.field-list > dt { ...@@ -645,6 +668,10 @@ dl.field-list > dt {
padding-right: 5px; padding-right: 5px;
} }
dl.field-list > dt:after {
content: ":";
}
dl.field-list > dd { dl.field-list > dd {
padding-left: 0.5em; padding-left: 0.5em;
margin-top: 0em; margin-top: 0em;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -4,19 +4,12 @@ ...@@ -4,19 +4,12 @@
* *
* Base JavaScript utilities for all Sphinx HTML documentation. * Base JavaScript utilities for all Sphinx HTML documentation.
* *
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details. * :license: BSD, see LICENSE for details.
* *
*/ */
"use strict"; "use strict";
const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
"TEXTAREA",
"INPUT",
"SELECT",
"BUTTON",
]);
const _ready = (callback) => { const _ready = (callback) => {
if (document.readyState !== "loading") { if (document.readyState !== "loading") {
callback(); callback();
...@@ -26,10 +19,72 @@ const _ready = (callback) => { ...@@ -26,10 +19,72 @@ const _ready = (callback) => {
}; };
/** /**
* highlight a given string on a node by wrapping it in
* span elements with the given class name.
*/
const _highlight = (node, addItems, text, className) => {
if (node.nodeType === Node.TEXT_NODE) {
const val = node.nodeValue;
const parent = node.parentNode;
const pos = val.toLowerCase().indexOf(text);
if (
pos >= 0 &&
!parent.classList.contains(className) &&
!parent.classList.contains("nohighlight")
) {
let span;
const closestNode = parent.closest("body, svg, foreignObject");
const isInSVG = closestNode && closestNode.matches("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.classList.add(className);
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
parent.insertBefore(
span,
parent.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
node.nextSibling
)
);
node.nodeValue = val.substr(0, pos);
if (isInSVG) {
const rect = document.createElementNS(
"http://www.w3.org/2000/svg",
"rect"
);
const bbox = parent.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: parent, target: rect });
}
}
} else if (node.matches && !node.matches("button, select, textarea")) {
node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
}
};
const _highlightText = (thisNode, text, className) => {
let addItems = [];
_highlight(thisNode, addItems, text, className);
addItems.forEach((obj) =>
obj.parent.insertAdjacentElement("beforebegin", obj.target)
);
};
/**
* Small JavaScript module for the documentation. * Small JavaScript module for the documentation.
*/ */
const Documentation = { const Documentation = {
init: () => { init: () => {
Documentation.highlightSearchWords();
Documentation.initDomainIndexTable(); Documentation.initDomainIndexTable();
Documentation.initOnKeyListeners(); Documentation.initOnKeyListeners();
}, },
...@@ -72,6 +127,51 @@ const Documentation = { ...@@ -72,6 +127,51 @@ const Documentation = {
}, },
/** /**
* highlight the search words provided in the url in the text
*/
highlightSearchWords: () => {
const highlight =
new URLSearchParams(window.location.search).get("highlight") || "";
const terms = highlight.toLowerCase().split(/\s+/).filter(x => x);
if (terms.length === 0) return; // nothing to do
// There should never be more than one element matching "div.body"
const divBody = document.querySelectorAll("div.body");
const body = divBody.length ? divBody[0] : document.querySelector("body");
window.setTimeout(() => {
terms.forEach((term) => _highlightText(body, term, "highlighted"));
}, 10);
const searchBox = document.getElementById("searchbox");
if (searchBox === null) return;
searchBox.appendChild(
document
.createRange()
.createContextualFragment(
'<p class="highlight-link">' +
'<a href="javascript:Documentation.hideSearchWords()">' +
Documentation.gettext("Hide Search Matches") +
"</a></p>"
)
);
},
/**
* helper function to hide the search marks again
*/
hideSearchWords: () => {
document
.querySelectorAll("#searchbox .highlight-link")
.forEach((el) => el.remove());
document
.querySelectorAll("span.highlighted")
.forEach((el) => el.classList.remove("highlighted"));
const url = new URL(window.location);
url.searchParams.delete("highlight");
window.history.replaceState({}, "", url);
},
/**
* helper function to focus on search bar * helper function to focus on search bar
*/ */
focusSearchBar: () => { focusSearchBar: () => {
...@@ -110,11 +210,15 @@ const Documentation = { ...@@ -110,11 +210,15 @@ const Documentation = {
) )
return; return;
const blacklistedElements = new Set([
"TEXTAREA",
"INPUT",
"SELECT",
"BUTTON",
]);
document.addEventListener("keydown", (event) => { document.addEventListener("keydown", (event) => {
// bail for input elements if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements
if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys
// bail with special keys
if (event.altKey || event.ctrlKey || event.metaKey) return;
if (!event.shiftKey) { if (!event.shiftKey) {
switch (event.key) { switch (event.key) {
...@@ -136,6 +240,10 @@ const Documentation = { ...@@ -136,6 +240,10 @@ const Documentation = {
event.preventDefault(); event.preventDefault();
} }
break; break;
case "Escape":
if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
Documentation.hideSearchWords();
event.preventDefault();
} }
} }
......
...@@ -10,5 +10,5 @@ var DOCUMENTATION_OPTIONS = { ...@@ -10,5 +10,5 @@ var DOCUMENTATION_OPTIONS = {
SOURCELINK_SUFFIX: '.txt', SOURCELINK_SUFFIX: '.txt',
NAVIGATION_WITH_KEYS: false, NAVIGATION_WITH_KEYS: false,
SHOW_SEARCH_SUMMARY: true, SHOW_SEARCH_SUMMARY: true,
ENABLE_SEARCH_SHORTCUTS: true, ENABLE_SEARCH_SHORTCUTS: false,
}; };
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* This script contains the language-specific data used by searchtools.js, * This script contains the language-specific data used by searchtools.js,
* namely the list of stopwords, stemmer, scorer and splitter. * namely the list of stopwords, stemmer, scorer and splitter.
* *
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details. * :license: BSD, see LICENSE for details.
* *
*/ */
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* *
* Sphinx JavaScript utilities for the full-text search. * Sphinx JavaScript utilities for the full-text search.
* *
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details. * :license: BSD, see LICENSE for details.
* *
*/ */
...@@ -57,14 +57,14 @@ const _removeChildren = (element) => { ...@@ -57,14 +57,14 @@ const _removeChildren = (element) => {
const _escapeRegExp = (string) => const _escapeRegExp = (string) =>
string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
const _displayItem = (item, searchTerms) => { const _displayItem = (item, highlightTerms, searchTerms) => {
const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT;
const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
const [docName, title, anchor, descr, score, _filename] = item; const [docName, title, anchor, descr] = item;
let listItem = document.createElement("li"); let listItem = document.createElement("li");
let requestUrl; let requestUrl;
...@@ -82,12 +82,13 @@ const _displayItem = (item, searchTerms) => { ...@@ -82,12 +82,13 @@ const _displayItem = (item, searchTerms) => {
requestUrl = docUrlRoot + docName + docFileSuffix; requestUrl = docUrlRoot + docName + docFileSuffix;
linkUrl = docName + docLinkSuffix; linkUrl = docName + docLinkSuffix;
} }
const params = new URLSearchParams();
params.set("highlight", [...highlightTerms].join(" "));
let linkEl = listItem.appendChild(document.createElement("a")); let linkEl = listItem.appendChild(document.createElement("a"));
linkEl.href = linkUrl + anchor; linkEl.href = linkUrl + "?" + params.toString() + anchor;
linkEl.dataset.score = score;
linkEl.innerHTML = title; linkEl.innerHTML = title;
if (descr) if (descr)
listItem.appendChild(document.createElement("span")).innerHTML = listItem.appendChild(document.createElement("span")).innerText =
" (" + descr + ")"; " (" + descr + ")";
else if (showSearchSummary) else if (showSearchSummary)
fetch(requestUrl) fetch(requestUrl)
...@@ -95,7 +96,7 @@ const _displayItem = (item, searchTerms) => { ...@@ -95,7 +96,7 @@ const _displayItem = (item, searchTerms) => {
.then((data) => { .then((data) => {
if (data) if (data)
listItem.appendChild( listItem.appendChild(
Search.makeSearchSummary(data, searchTerms) Search.makeSearchSummary(data, searchTerms, highlightTerms)
); );
}); });
Search.output.appendChild(listItem); Search.output.appendChild(listItem);
...@@ -115,14 +116,15 @@ const _finishSearch = (resultCount) => { ...@@ -115,14 +116,15 @@ const _finishSearch = (resultCount) => {
const _displayNextItem = ( const _displayNextItem = (
results, results,
resultCount, resultCount,
highlightTerms,
searchTerms searchTerms
) => { ) => {
// results left, load the summary and display it // results left, load the summary and display it
// this is intended to be dynamic (don't sub resultsCount) // this is intended to be dynamic (don't sub resultsCount)
if (results.length) { if (results.length) {
_displayItem(results.pop(), searchTerms); _displayItem(results.pop(), highlightTerms, searchTerms);
setTimeout( setTimeout(
() => _displayNextItem(results, resultCount, searchTerms), () => _displayNextItem(results, resultCount, highlightTerms, searchTerms),
5 5
); );
} }
...@@ -153,8 +155,10 @@ const Search = { ...@@ -153,8 +155,10 @@ const Search = {
_pulse_status: -1, _pulse_status: -1,
htmlToText: (htmlString) => { htmlToText: (htmlString) => {
const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); const htmlElement = document
htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); .createRange()
.createContextualFragment(htmlString);
_removeChildren(htmlElement.querySelectorAll(".headerlink"));
const docContent = htmlElement.querySelector('[role="main"]'); const docContent = htmlElement.querySelector('[role="main"]');
if (docContent !== undefined) return docContent.textContent; if (docContent !== undefined) return docContent.textContent;
console.warn( console.warn(
...@@ -235,12 +239,6 @@ const Search = { ...@@ -235,12 +239,6 @@ const Search = {
* execute search (requires search index to be loaded) * execute search (requires search index to be loaded)
*/ */
query: (query) => { query: (query) => {
const filenames = Search._index.filenames;
const docNames = Search._index.docnames;
const titles = Search._index.titles;
const allTitles = Search._index.alltitles;
const indexEntries = Search._index.indexentries;
// stem the search terms and add them to the correct list // stem the search terms and add them to the correct list
const stemmer = new Stemmer(); const stemmer = new Stemmer();
const searchTerms = new Set(); const searchTerms = new Set();
...@@ -268,10 +266,6 @@ const Search = { ...@@ -268,10 +266,6 @@ const Search = {
} }
}); });
if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js
localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" "))
}
// console.debug("SEARCH: searching for:"); // console.debug("SEARCH: searching for:");
// console.info("required: ", [...searchTerms]); // console.info("required: ", [...searchTerms]);
// console.info("excluded: ", [...excludedTerms]); // console.info("excluded: ", [...excludedTerms]);
...@@ -280,40 +274,6 @@ const Search = { ...@@ -280,40 +274,6 @@ const Search = {
let results = []; let results = [];
_removeChildren(document.getElementById("search-progress")); _removeChildren(document.getElementById("search-progress"));
const queryLower = query.toLowerCase();
for (const [title, foundTitles] of Object.entries(allTitles)) {
if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) {
for (const [file, id] of foundTitles) {
let score = Math.round(100 * queryLower.length / title.length)
results.push([
docNames[file],
titles[file] !== title ? `${titles[file]} > ${title}` : title,
id !== null ? "#" + id : "",
null,
score,
filenames[file],
]);
}
}
}
// search for explicit entries in index directives
for (const [entry, foundEntries] of Object.entries(indexEntries)) {
if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
for (const [file, id] of foundEntries) {
let score = Math.round(100 * queryLower.length / entry.length)
results.push([
docNames[file],
titles[file],
id ? "#" + id : "",
null,
score,
filenames[file],
]);
}
}
}
// lookup as object // lookup as object
objectTerms.forEach((term) => objectTerms.forEach((term) =>
results.push(...Search.performObjectSearch(term, objectTerms)) results.push(...Search.performObjectSearch(term, objectTerms))
...@@ -360,7 +320,7 @@ const Search = { ...@@ -360,7 +320,7 @@ const Search = {
// console.info("search results:", Search.lastresults); // console.info("search results:", Search.lastresults);
// print the results // print the results
_displayNextItem(results, results.length, searchTerms); _displayNextItem(results, results.length, highlightTerms, searchTerms);
}, },
/** /**
...@@ -441,8 +401,8 @@ const Search = { ...@@ -441,8 +401,8 @@ const Search = {
// prepare search // prepare search
const terms = Search._index.terms; const terms = Search._index.terms;
const titleTerms = Search._index.titleterms; const titleTerms = Search._index.titleterms;
const filenames = Search._index.filenames;
const docNames = Search._index.docnames; const docNames = Search._index.docnames;
const filenames = Search._index.filenames;
const titles = Search._index.titles; const titles = Search._index.titles;
const scoreMap = new Map(); const scoreMap = new Map();
...@@ -539,15 +499,16 @@ const Search = { ...@@ -539,15 +499,16 @@ const Search = {
/** /**
* helper function to return a node containing the * helper function to return a node containing the
* search summary for a given text. keywords is a list * search summary for a given text. keywords is a list
* of stemmed words. * of stemmed words, highlightWords is the list of normal, unstemmed
* words. the first one is used to find the occurrence, the
* latter for highlighting it.
*/ */
makeSearchSummary: (htmlText, keywords) => { makeSearchSummary: (htmlText, keywords, highlightWords) => {
const text = Search.htmlToText(htmlText); const text = Search.htmlToText(htmlText).toLowerCase();
if (text === "") return null; if (text === "") return null;
const textLower = text.toLowerCase();
const actualStartPosition = [...keywords] const actualStartPosition = [...keywords]
.map((k) => textLower.indexOf(k.toLowerCase())) .map((k) => text.indexOf(k.toLowerCase()))
.filter((i) => i > -1) .filter((i) => i > -1)
.slice(-1)[0]; .slice(-1)[0];
const startWithContext = Math.max(actualStartPosition - 120, 0); const startWithContext = Math.max(actualStartPosition - 120, 0);
...@@ -555,9 +516,13 @@ const Search = { ...@@ -555,9 +516,13 @@ const Search = {
const top = startWithContext === 0 ? "" : "..."; const top = startWithContext === 0 ? "" : "...";
const tail = startWithContext + 240 < text.length ? "..." : ""; const tail = startWithContext + 240 < text.length ? "..." : "";
let summary = document.createElement("p"); let summary = document.createElement("div");
summary.classList.add("context"); summary.classList.add("context");
summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; summary.innerText = top + text.substr(startWithContext, 240).trim() + tail;
highlightWords.forEach((highlightWord) =>
_highlightText(summary, highlightWord, "highlighted")
);
return summary; return summary;
}, },
......
...@@ -11,11 +11,11 @@ ...@@ -11,11 +11,11 @@
<script src="_static/js/html5shiv.min.js"></script> <script src="_static/js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script> <script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script> <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/doctools.js"></script> <script src="_static/doctools.js"></script>
<script src="_static/sphinx_highlight.js"></script>
<script src="_static/js/theme.js"></script> <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
......
...@@ -11,11 +11,11 @@ ...@@ -11,11 +11,11 @@
<script src="_static/js/html5shiv.min.js"></script> <script src="_static/js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script> <script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script> <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/doctools.js"></script> <script src="_static/doctools.js"></script>
<script src="_static/sphinx_highlight.js"></script>
<script src="_static/js/theme.js"></script> <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="analysis.html">Analyzing and Modifying the ESGEMME Output</a></li> <li class="toctree-l1"><a class="reference internal" href="analysis.html">Analyzing and Modifying the ESGEMME Output</a></li>
<li class="toctree-l1"><a class="reference internal" href="analysis.html#raw-esgemme-scores-and-their-interpretation">Raw ESGEMME Scores and Their Interpretation</a></li>
<li class="toctree-l1"><a class="reference internal" href="input-preparation.html">Preparing Your Own Input</a></li> <li class="toctree-l1"><a class="reference internal" href="input-preparation.html">Preparing Your Own Input</a></li>
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li> <li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
</ul> </ul>
...@@ -97,8 +96,8 @@ commands.</p> ...@@ -97,8 +96,8 @@ commands.</p>
<p>Let’s start our favorite terminal app.</p> <p>Let’s start our favorite terminal app.</p>
<p>You must create a folder called docker-tutorial and go to that empty <p>You must create a folder called docker-tutorial and go to that empty
folder:</p> folder:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>mkdir<span class="w"> </span>docker-tutorial <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>mkdir docker-tutorial
<span class="nb">cd</span><span class="w"> </span>docker-tutorial <span class="nb">cd</span> docker-tutorial
</pre></div> </pre></div>
</div> </div>
</section> </section>
...@@ -107,35 +106,35 @@ folder:</p> ...@@ -107,35 +106,35 @@ folder:</p>
<p>Let’s download the sample data provided in the ESGEMME repository for <p>Let’s download the sample data provided in the ESGEMME repository for
this exercise. First, we will download the multiple sequence alignment this exercise. First, we will download the multiple sequence alignment
file in fasta format:</p> file in fasta format:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>wget<span class="w"> </span>http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/blob/master/data/aliBLAT.fasta <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>wget http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/raw/8d766d4d11af0e93c9da8fc2c5cc1bfc457d2936/data/aliBLAT.fasta
</pre></div> </pre></div>
</div> </div>
<p>If you don’t have wget, you can try the same command with curl:</p> <p>If you don’t have wget, you can try the same command with curl:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>curl<span class="w"> </span>http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/blob/master/data/aliBLAT.fasta <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>curl http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/raw/8d766d4d11af0e93c9da8fc2c5cc1bfc457d2936/data/aliBLAT.fasta &gt;aliBLAT.fasta
</pre></div> </pre></div>
</div> </div>
<p>Please verify that the aliBLAT.fasta file is in the folder.</p> <p>Please verify that the aliBLAT.fasta file is in the folder.</p>
<p>Now, we will download the PDB (Protein Databank) file for BLAT:</p> <p>Now, we will download the PDB (Protein Databank) file for BLAT:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>wget<span class="w"> </span>http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/blob/master/data/blat-af2.pdb <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>wget http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/raw/8d766d4d11af0e93c9da8fc2c5cc1bfc457d2936/data/blat-af2.pdb
</pre></div> </pre></div>
</div> </div>
</section> </section>
<section id="single-point-mutation-calculations"> <section id="single-point-mutation-calculations">
<h2>Single point mutation calculations<a class="headerlink" href="#single-point-mutation-calculations" title="Permalink to this heading"></a></h2> <h2>Single point mutation calculations<a class="headerlink" href="#single-point-mutation-calculations" title="Permalink to this heading"></a></h2>
<p>In order to make sure that the docker is installed:</p> <p>In order to make sure that the docker is installed:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>docker<span class="w"> </span>-h <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo docker -h
</pre></div> </pre></div>
</div> </div>
<p>If it shows you a list of options, you are on a good track. On MacOS, <p>If it shows you a list of options, you are on a good track. On MacOS,
you may not need ‘sudo’ word before the docker command at all.</p> you may not need ‘sudo’ word before the docker command at all.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>docker<span class="w"> </span>run<span class="w"> </span>-ti<span class="w"> </span>--rm<span class="w"> </span>--mount<span class="w"> </span><span class="nv">type</span><span class="o">=</span>bind,source<span class="o">=</span><span class="nv">$PWD</span>,target<span class="o">=</span>/home/tekpinar/research/myexample<span class="w"> </span><span class="se">\</span> <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo docker run -ti --rm --mount <span class="nv">type</span><span class="o">=</span>bind,source<span class="o">=</span><span class="nv">$PWD</span>,target<span class="o">=</span>/home/tekpinar/research/myexample <span class="se">\</span>
tekpinar/esgemme-docker:v1.3.0 tekpinar/esgemme-docker:v1.3.0
</pre></div> </pre></div>
</div> </div>
<p>You are in the container (your virtual operating system) now. You <p>You are in the container (your virtual operating system) now. You
created a folder called myexample in your container with the previous created a folder called myexample in your container with the previous
command. Let’s change to that folder.</p> command. Let’s change to that folder.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span><span class="w"> </span>../myexample/ <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> ../myexample/
</pre></div> </pre></div>
</div> </div>
<p>When you check the data in that folder with ‘ls’ command, you are <p>When you check the data in that folder with ‘ls’ command, you are
...@@ -145,7 +144,7 @@ docker container are pointing to the same place.</p> ...@@ -145,7 +144,7 @@ docker container are pointing to the same place.</p>
<section id="obtaining-the-entire-single-point-mutation-landscape"> <section id="obtaining-the-entire-single-point-mutation-landscape">
<h3>Obtaining the entire single point mutation landscape<a class="headerlink" href="#obtaining-the-entire-single-point-mutation-landscape" title="Permalink to this heading"></a></h3> <h3>Obtaining the entire single point mutation landscape<a class="headerlink" href="#obtaining-the-entire-single-point-mutation-landscape" title="Permalink to this heading"></a></h3>
<p>In this step, we will use only evolutionary information from an MSA file:</p> <p>In this step, we will use only evolutionary information from an MSA file:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python<span class="w"> </span><span class="nv">$ESGEMME_PATH</span>/esgemme.py<span class="w"> </span>aliBLAT.fasta<span class="w"> </span>-r<span class="w"> </span>input<span class="w"> </span>-f<span class="w"> </span>aliBLAT.fasta <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>esgemme aliBLAT.fasta -r input -f aliBLAT.fasta
</pre></div> </pre></div>
</div> </div>
<p>After a few minutes of calculation, you must see at least two files named <p>After a few minutes of calculation, you must see at least two files named
...@@ -154,9 +153,9 @@ the entire single point mutational landscape of BLAT protein in these ...@@ -154,9 +153,9 @@ the entire single point mutational landscape of BLAT protein in these
files.</p> files.</p>
<p>If you want to utilize structural information (highly recommended) as well as <p>If you want to utilize structural information (highly recommended) as well as
evolutionary information:</p> evolutionary information:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python<span class="w"> </span><span class="nv">$ESGEMME_PATH</span>/esgemme.py<span class="w"> </span>aliBLAT.fasta<span class="w"> </span>-r<span class="w"> </span>input<span class="w"> </span>-f<span class="w"> </span>aliBLAT.fasta<span class="w"> </span><span class="se">\</span> <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>esgemme aliBLAT.fasta -r input -f aliBLAT.fasta <span class="se">\</span>
--pdbfile<span class="w"> </span>blat-af2.pdb<span class="w"> </span><span class="se">\</span> --pdbfile blat-af2.pdb <span class="se">\</span>
--normweightmode<span class="w"> </span>sstjetormax --normweightmode sstjetormax
</pre></div> </pre></div>
</div> </div>
</section> </section>
...@@ -166,19 +165,19 @@ evolutionary information:</p> ...@@ -166,19 +165,19 @@ evolutionary information:</p>
you have to prepare a mut file. The format is a simple text file and you have to prepare a mut file. The format is a simple text file and
each line contains a single point mutation such as D26A…. each line contains a single point mutation such as D26A….
Fortunately, we have an example mut in data folder of ESGEMME repository.</p> Fortunately, we have an example mut in data folder of ESGEMME repository.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>wget<span class="w"> </span>http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/raw/master/data/Stiffler_2015_BLAT_ECOLX.mut <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>wget http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/raw/master/data/Stiffler_2015_BLAT_ECOLX.mut
</pre></div> </pre></div>
</div> </div>
<p>Similar to the previous step, there are two possible ways to do the calculations: with or without <p>Similar to the previous step, there are two possible ways to do the calculations: with or without
structural information. First, let’s do it without structural information:</p> structural information. First, let’s do it without structural information:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python<span class="w"> </span><span class="nv">$ESGEMME_PATH</span>/esgemme.py<span class="w"> </span>aliBLAT.fasta<span class="w"> </span>-r<span class="w"> </span>input<span class="w"> </span>-f<span class="w"> </span>aliBLAT.fasta<span class="w"> </span><span class="se">\</span> <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>esgemme aliBLAT.fasta -r input -f aliBLAT.fasta <span class="se">\</span>
-m<span class="w"> </span>Stiffler_2015_BLAT_ECOLX.mut -m Stiffler_2015_BLAT_ECOLX.mut
</pre></div> </pre></div>
</div> </div>
<p>You can include structural information in the following way: <p>You can include structural information in the following way:
.. code:: bash</p> .. code:: bash</p>
<blockquote> <blockquote>
<div><p>python $ESGEMME_PATH/esgemme.py aliBLAT.fasta -r input -f aliBLAT.fasta –pdbfile blat-af2.pdb –normweightmode sstjetormax -m Stiffler_2015_BLAT_ECOLX.mut</p> <div><p>esgemme aliBLAT.fasta -r input -f aliBLAT.fasta –pdbfile blat-af2.pdb –normweightmode sstjetormax -m Stiffler_2015_BLAT_ECOLX.mut</p>
</div></blockquote> </div></blockquote>
<p>You will have BLAT_normPred_evolCombi.txt file in your folder. However, the output <p>You will have BLAT_normPred_evolCombi.txt file in your folder. However, the output
format is completely different from the entire mutational landscape scanning file. format is completely different from the entire mutational landscape scanning file.
......
...@@ -10,11 +10,11 @@ ...@@ -10,11 +10,11 @@
<script src="_static/js/html5shiv.min.js"></script> <script src="_static/js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script> <script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script> <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/doctools.js"></script> <script src="_static/doctools.js"></script>
<script src="_static/sphinx_highlight.js"></script>
<script src="_static/js/theme.js"></script> <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="#" /> <link rel="index" title="Index" href="#" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
......
...@@ -11,11 +11,11 @@ ...@@ -11,11 +11,11 @@
<script src="_static/js/html5shiv.min.js"></script> <script src="_static/js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script> <script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script> <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/doctools.js"></script> <script src="_static/doctools.js"></script>
<script src="_static/sphinx_highlight.js"></script>
<script src="_static/js/theme.js"></script> <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul> <li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="installation.html#installing-the-dependencies">Installing the dependencies:</a></li> <li class="toctree-l2"><a class="reference internal" href="installation.html#installing-the-dependencies">Installing the dependencies:</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation.html#getting-the-source-code-and-preparing-the-environment">Getting the source code and preparing the environment:</a></li> <li class="toctree-l2"><a class="reference internal" href="installation.html#preparation-of-the-environment-and-installation-of-esgemme">Preparation of the environment and installation of ESGEMME</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation.html#configuring-default-conf-file">Configuring default.conf file</a></li> <li class="toctree-l2"><a class="reference internal" href="installation.html#configuring-default-conf-file">Configuring default.conf file</a></li>
</ul> </ul>
</li> </li>
......
...@@ -11,11 +11,11 @@ ...@@ -11,11 +11,11 @@
<script src="_static/js/html5shiv.min.js"></script> <script src="_static/js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script> <script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script> <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/doctools.js"></script> <script src="_static/doctools.js"></script>
<script src="_static/sphinx_highlight.js"></script>
<script src="_static/js/theme.js"></script> <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
...@@ -46,7 +46,6 @@ ...@@ -46,7 +46,6 @@
<ul class="current"> <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="docker.html">Using ESGEMME via Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="docker.html">Using ESGEMME via Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="analysis.html">Analyzing and Modifying the ESGEMME Output</a></li> <li class="toctree-l1"><a class="reference internal" href="analysis.html">Analyzing and Modifying the ESGEMME Output</a></li>
<li class="toctree-l1"><a class="reference internal" href="analysis.html#raw-esgemme-scores-and-their-interpretation">Raw ESGEMME Scores and Their Interpretation</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Preparing Your Own Input</a><ul> <li class="toctree-l1 current"><a class="current reference internal" href="#">Preparing Your Own Input</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#preparing-your-input-msa-and-pdb-with-colabfold">Preparing Your Input MSA and PDB with Colabfold</a></li> <li class="toctree-l2"><a class="reference internal" href="#preparing-your-input-msa-and-pdb-with-colabfold">Preparing Your Input MSA and PDB with Colabfold</a></li>
</ul> </ul>
...@@ -109,25 +108,25 @@ We have to clean those gaps. We can do that with a GUI program like Ugene ...@@ -109,25 +108,25 @@ We have to clean those gaps. We can do that with a GUI program like Ugene
or Jalview. However, it is a labor intensive procedure. Here, I will use a or Jalview. However, it is a labor intensive procedure. Here, I will use a
small tool that I developed and added to the ESGEMME docker image that I created.</p></li> small tool that I developed and added to the ESGEMME docker image that I created.</p></li>
<li><p>Start the docker image with the following command:</p> <li><p>Start the docker image with the following command:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo<span class="w"> </span>docker<span class="w"> </span>run<span class="w"> </span>-ti<span class="w"> </span>--rm<span class="w"> </span>--mount<span class="w"> </span><span class="nv">type</span><span class="o">=</span>bind,source<span class="o">=</span><span class="nv">$PWD</span>,target<span class="o">=</span>/home/tekpinar/research/myexample<span class="w"> </span><span class="se">\</span> <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo docker run -ti --rm --mount <span class="nv">type</span><span class="o">=</span>bind,source<span class="o">=</span><span class="nv">$PWD</span>,target<span class="o">=</span>/home/tekpinar/research/myexample <span class="se">\</span>
tekpinar/esgemme-docker:v1.3.0 tekpinar/esgemme-docker:v1.3.0
</pre></div> </pre></div>
</div> </div>
</li> </li>
<li><p>Now, change the directory to myexample folder.</p> <li><p>Now, change the directory to myexample folder.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span><span class="w"> </span>../myexample/ <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> ../myexample/
ls<span class="w"> </span>-l ls -l
</pre></div> </pre></div>
</div> </div>
<p>We are supposed to see our a3m and pdb files in this folder.</p> <p>We are supposed to see our a3m and pdb files in this folder.</p>
</li> </li>
<li><p>Let’s use a small script from hhsuite to convert a3m file to fasta format.</p> <li><p>Let’s use a small script from hhsuite to convert a3m file to fasta format.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>reformat.pl<span class="w"> </span>a3m<span class="w"> </span>fas<span class="w"> </span>AKE.a3m<span class="w"> </span>AKE.fasta <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>reformat.pl a3m fas AKE.a3m AKE.fasta
</pre></div> </pre></div>
</div> </div>
</li> </li>
<li><p>Final step and we are there:</p> <li><p>Final step and we are there:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>demust<span class="w"> </span>removegaps<span class="w"> </span>-i<span class="w"> </span>AKE.fasta<span class="w"> </span>-o<span class="w"> </span>AKE_nogaps.fasta <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>demust removegaps -i AKE.fasta -o AKE_nogaps.fasta
</pre></div> </pre></div>
</div> </div>
</li> </li>
......
...@@ -11,11 +11,11 @@ ...@@ -11,11 +11,11 @@
<script src="_static/js/html5shiv.min.js"></script> <script src="_static/js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script> <script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script> <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/doctools.js"></script> <script src="_static/doctools.js"></script>
<script src="_static/sphinx_highlight.js"></script>
<script src="_static/js/theme.js"></script> <script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
...@@ -45,11 +45,10 @@ ...@@ -45,11 +45,10 @@
<ul class="current"> <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="docker.html">Using ESGEMME via Docker</a></li> <li class="toctree-l1"><a class="reference internal" href="docker.html">Using ESGEMME via Docker</a></li>
<li class="toctree-l1"><a class="reference internal" href="analysis.html">Analyzing and Modifying the ESGEMME Output</a></li> <li class="toctree-l1"><a class="reference internal" href="analysis.html">Analyzing and Modifying the ESGEMME Output</a></li>
<li class="toctree-l1"><a class="reference internal" href="analysis.html#raw-esgemme-scores-and-their-interpretation">Raw ESGEMME Scores and Their Interpretation</a></li>
<li class="toctree-l1"><a class="reference internal" href="input-preparation.html">Preparing Your Own Input</a></li> <li class="toctree-l1"><a class="reference internal" href="input-preparation.html">Preparing Your Own Input</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Installation</a><ul> <li class="toctree-l1 current"><a class="current reference internal" href="#">Installation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#installing-the-dependencies">Installing the dependencies:</a></li> <li class="toctree-l2"><a class="reference internal" href="#installing-the-dependencies">Installing the dependencies:</a></li>
<li class="toctree-l2"><a class="reference internal" href="#getting-the-source-code-and-preparing-the-environment">Getting the source code and preparing the environment:</a></li> <li class="toctree-l2"><a class="reference internal" href="#preparation-of-the-environment-and-installation-of-esgemme">Preparation of the environment and installation of ESGEMME</a></li>
<li class="toctree-l2"><a class="reference internal" href="#configuring-default-conf-file">Configuring default.conf file</a></li> <li class="toctree-l2"><a class="reference internal" href="#configuring-default-conf-file">Configuring default.conf file</a></li>
</ul> </ul>
</li> </li>
...@@ -101,21 +100,91 @@ steps required to install it from the source.</p> ...@@ -101,21 +100,91 @@ steps required to install it from the source.</p>
</ul> </ul>
<p>These tools should be installed to be able to use ESGEMME.</p> <p>These tools should be installed to be able to use ESGEMME.</p>
</section> </section>
<section id="getting-the-source-code-and-preparing-the-environment"> <section id="preparation-of-the-environment-and-installation-of-esgemme">
<h2>Getting the source code and preparing the environment:<a class="headerlink" href="#getting-the-source-code-and-preparing-the-environment" title="Permalink to this heading"></a></h2> <h2>Preparation of the environment and installation of ESGEMME<a class="headerlink" href="#preparation-of-the-environment-and-installation-of-esgemme" title="Permalink to this heading"></a></h2>
<p>Download the ESGEMME source code from <p>Step by step installation on Ubuntu 22.04</p>
<a class="reference external" href="http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME">http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME</a>. Define and export the <p>Prepare your environment and install the required packages:</p>
environment variable ESGEMME_PATH=/path-to-ESGEMME-directory/</p> <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo apt-get update --fix-missing <span class="o">&amp;&amp;</span> <span class="se">\</span>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">export</span><span class="w"> </span><span class="nv">ESGEMME_PATH</span><span class="o">=</span>/path-to-ESGEMME-directory/ sudo apt-get install -y --no-install-recommends apt-utils <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y software-properties-common <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y autotools-dev <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y automake <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y build-essential <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y python3-dev <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y python3-pip <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y r-base r-base-core <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y muscle <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y default-jre <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y ncbi-blast+ <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y nano <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y less <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y wget <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install csh <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y hmmer <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get install -y libboost-all-dev <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo apt-get clean <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
</pre></div> </pre></div>
</div> </div>
<p>#Dssp installation
If you are using Ubuntu 20.04, you can install dssp by the following command
.. code:: bash</p>
<blockquote>
<div><p>sudo apt-get install dssp</p>
</div></blockquote>
<p>Otherwise, you can install it from the source by the following commands.
Please note that default dssp in Ubuntu 22.04 is not working properly.
.. code:: bash</p>
<blockquote>
<div><p>wget <a class="reference external" href="https://github.com/cmbi/dssp/archive/refs/heads/master.zip">https://github.com/cmbi/dssp/archive/refs/heads/master.zip</a> &amp;&amp; unzip -o master.zip &amp;&amp; cd dssp-master/ &amp;&amp; ./autogen.sh &amp;&amp; ./configure &amp;&amp; make &amp;&amp; sudo make install &amp;&amp; sudo ln -s /usr/local/bin/mkdssp /usr/local/bin/dssp &amp;&amp; cd ../ &amp;&amp; sudo rm -rf dssp-master/ &amp;&amp; sudo rm -f master.zip</p>
</div></blockquote>
<p>#HHSUITE installation
.. code:: bash</p>
<blockquote>
<div><p>wget <a class="reference external" href="https://github.com/soedinglab/hh-suite/releases/download/v3.3.0/hhsuite-3.3.0-AVX2-Linux.tar.gz">https://github.com/soedinglab/hh-suite/releases/download/v3.3.0/hhsuite-3.3.0-AVX2-Linux.tar.gz</a> &amp;&amp; mkdir hhsuite &amp;&amp; mv hhsuite-3.3.0-AVX2-Linux.tar.gz hhsuite/ &amp;&amp; cd hhsuite &amp;&amp; tar xvfz hhsuite-3.3.0-AVX2-Linux.tar.gz &amp;&amp; rm -f hhsuite-3.3.0-AVX2-Linux.tar.gz</p>
</div></blockquote>
<p>#Add it to your path permanently inside .bashrc or .profile or .bash_profile
Check the location of hhsuite folder and add it to your path
In my case it was in /home/tekpinar/research/lcqb folder. Therefore, I added the following line
to my .profile file.
PATH=”/home/tekpinar/research/lcqb/hhsuite/bin:/home/tekpinar/research/lcqb/hhsuite/scripts:$PATH”</p>
<p>Then
source ~/.profile</p>
<p>#</p>
<blockquote>
<div><p>cd ESGEMME</p>
</div></blockquote>
<p>#Download ESGEMME from <a class="reference external" href="http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME">http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME</a> repository and go inside the ESGEMME folder.!
.. code:: bash</p>
<blockquote>
<div><p>cd ESGEMME</p>
</div></blockquote>
</section> </section>
<section id="configuring-default-conf-file"> <section id="configuring-default-conf-file">
<h2>Configuring default.conf file<a class="headerlink" href="#configuring-default-conf-file" title="Permalink to this heading"></a></h2> <h2>Configuring default.conf file<a class="headerlink" href="#configuring-default-conf-file" title="Permalink to this heading"></a></h2>
<p>Inside ESGEMME folder, there is an important file called default.conf. <p>Inside ESGEMME/esgemme folder, there is an important file called default.conf.
This file contains essential parameters of ESGEMME, such as paths of This file contains essential parameters of ESGEMME, such as paths of
external parts, default internal parameters. etc. You have to correct the Software section of this external parts, default internal parameters. etc. You have to correct the Software section of this
file according to your system.</p> file according to your system.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>pip3 install -e . <span class="o">&amp;&amp;</span><span class="se">\</span>
<span class="nb">cd</span> ../
</pre></div>
</div>
<p>#Installing the required R packages
.. code:: bash</p>
<blockquote>
<div><p>sudo Rscript -e ‘install.packages(“seqinr”, repos=”<a class="reference external" href="http://cran.us.r-project.org">http://cran.us.r-project.org</a>”, dependencies=TRUE)’</p>
</div></blockquote>
<p>#Installing secondary programs such as ev_couplings to obtain MSA files.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>wget https://github.com/debbiemarkslab/plmc/archive/refs/heads/master.zip <span class="o">&amp;&amp;</span> <span class="se">\</span>
unzip -o master.zip <span class="o">&amp;&amp;</span> <span class="se">\</span>
<span class="nb">cd</span> plmc-master <span class="o">&amp;&amp;</span> <span class="se">\</span>
make all-openmp32 <span class="o">&amp;&amp;</span> <span class="se">\</span>
sudo cp bin/plmc /usr/local/bin/ <span class="o">&amp;&amp;</span> <span class="se">\</span>
<span class="nb">cd</span> ../ <span class="o">&amp;&amp;</span> <span class="se">\</span>
rm -rf master.zip plmc-master
</pre></div>
</div>
</section> </section>
</section> </section>
......
...@@ -11,11 +11,11 @@ ...@@ -11,11 +11,11 @@
<script src="_static/js/html5shiv.min.js"></script> <script src="_static/js/html5shiv.min.js"></script>
<![endif]--> <![endif]-->
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script> <script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script> <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/doctools.js"></script> <script src="_static/doctools.js"></script>
<script src="_static/sphinx_highlight.js"></script>
<script src="_static/js/theme.js"></script> <script src="_static/js/theme.js"></script>
<script src="_static/searchtools.js"></script> <script src="_static/searchtools.js"></script>
<script src="_static/language_data.js"></script> <script src="_static/language_data.js"></script>
......
;; Common Lisp style file for xindy ;; style file for xindy
;; filename: LatinRules.xdy ;; filename: LatinRules.xdy
;; ;;
;; Please note that this data file deliberately uses strings
;; with single non-ascii bytes. This is intentional and
;; follows the usage observed in similar xindy support files.
;;
;; It is based upon xindy's files lang/general/utf8.xdy and ;; It is based upon xindy's files lang/general/utf8.xdy and
;; lang/general/utf8-lang.xdy which implement ;; lang/general/utf8-lang.xdy which implement
;; "a general sorting order for Western European languages". ;; "a general sorting order for Western European languages"
;; ;;
;; The aim for Sphinx is to be able to index in a Cyrillic document ;; The aim for Sphinx is to be able to index in a Cyrillic document
;; also terms using the Latin alphabets, inclusive of letters ;; also terms using the Latin alphabets, inclusive of letters
...@@ -18,7 +14,7 @@ ...@@ -18,7 +14,7 @@
;; ;;
;; So here we use only 0o266 or higher bytes. ;; So here we use only 0o266 or higher bytes.
;; (Ŋ, ŋ, IJ, and ij are absent from ;; (Ŋ, ŋ, IJ, and ij are absent from
;; lang/general/utf8.xdy and not included here.) ;; lang/general/utf8.xdy and not included here)
;; Contributed by the Sphinx team, 2018. ;; Contributed by the Sphinx team, 2018.
(define-letter-group "A" :prefixes ("¶")) (define-letter-group "A" :prefixes ("¶"))
......
\relax \relax
\providecommand\hyper@newdestlabel[2]{} \providecommand\hyper@newdestlabel[2]{}
\providecommand\babel@aux[2]{}
\@nameuse{bbl@beforestart} \@nameuse{bbl@beforestart}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} \providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined \HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
...@@ -63,11 +64,12 @@ ...@@ -63,11 +64,12 @@
\newlabel{installation::doc}{{4}{9}{Installation}{chapter.4}{}} \newlabel{installation::doc}{{4}{9}{Installation}{chapter.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.1}Installing the dependencies:}{9}{section.4.1}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {4.1}Installing the dependencies:}{9}{section.4.1}\protected@file@percent }
\newlabel{installation:installing-the-dependencies}{{4.1}{9}{Installing the dependencies:}{section.4.1}{}} \newlabel{installation:installing-the-dependencies}{{4.1}{9}{Installing the dependencies:}{section.4.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.2}Getting the source code and preparing the environment:}{9}{section.4.2}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {4.2}Preparation of the environment and installation of ESGEMME}{9}{section.4.2}\protected@file@percent }
\newlabel{installation:getting-the-source-code-and-preparing-the-environment}{{4.2}{9}{Getting the source code and preparing the environment:}{section.4.2}{}} \newlabel{installation:preparation-of-the-environment-and-installation-of-esgemme}{{4.2}{9}{Preparation of the environment and installation of ESGEMME}{section.4.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.3}Configuring default.conf file}{9}{section.4.3}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {4.3}Configuring default.conf file}{10}{section.4.3}\protected@file@percent }
\newlabel{installation:configuring-default-conf-file}{{4.3}{9}{Configuring default.conf file}{section.4.3}{}} \newlabel{installation:configuring-default-conf-file}{{4.3}{10}{Configuring default.conf file}{section.4.3}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Indices and tables}{11}{chapter.5}\protected@file@percent } \@writefile{toc}{\contentsline {chapter}{\numberline {5}Indices and tables}{13}{chapter.5}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }} \@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }}
\newlabel{index:indices-and-tables}{{5}{11}{Indices and tables}{chapter.5}{}} \newlabel{index:indices-and-tables}{{5}{13}{Indices and tables}{chapter.5}{}}
\gdef \@abspage@last{17}
...@@ -14,6 +14,6 @@ ...@@ -14,6 +14,6 @@
\BOOKMARK [1][-]{section.3.1}{\376\377\000P\000r\000e\000p\000a\000r\000i\000n\000g\000\040\000Y\000o\000u\000r\000\040\000I\000n\000p\000u\000t\000\040\000M\000S\000A\000\040\000a\000n\000d\000\040\000P\000D\000B\000\040\000w\000i\000t\000h\000\040\000C\000o\000l\000a\000b\000f\000o\000l\000d}{chapter.3}% 14 \BOOKMARK [1][-]{section.3.1}{\376\377\000P\000r\000e\000p\000a\000r\000i\000n\000g\000\040\000Y\000o\000u\000r\000\040\000I\000n\000p\000u\000t\000\040\000M\000S\000A\000\040\000a\000n\000d\000\040\000P\000D\000B\000\040\000w\000i\000t\000h\000\040\000C\000o\000l\000a\000b\000f\000o\000l\000d}{chapter.3}% 14
\BOOKMARK [0][-]{chapter.4}{\376\377\000I\000n\000s\000t\000a\000l\000l\000a\000t\000i\000o\000n}{}% 15 \BOOKMARK [0][-]{chapter.4}{\376\377\000I\000n\000s\000t\000a\000l\000l\000a\000t\000i\000o\000n}{}% 15
\BOOKMARK [1][-]{section.4.1}{\376\377\000I\000n\000s\000t\000a\000l\000l\000i\000n\000g\000\040\000t\000h\000e\000\040\000d\000e\000p\000e\000n\000d\000e\000n\000c\000i\000e\000s\000:}{chapter.4}% 16 \BOOKMARK [1][-]{section.4.1}{\376\377\000I\000n\000s\000t\000a\000l\000l\000i\000n\000g\000\040\000t\000h\000e\000\040\000d\000e\000p\000e\000n\000d\000e\000n\000c\000i\000e\000s\000:}{chapter.4}% 16
\BOOKMARK [1][-]{section.4.2}{\376\377\000G\000e\000t\000t\000i\000n\000g\000\040\000t\000h\000e\000\040\000s\000o\000u\000r\000c\000e\000\040\000c\000o\000d\000e\000\040\000a\000n\000d\000\040\000p\000r\000e\000p\000a\000r\000i\000n\000g\000\040\000t\000h\000e\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000:}{chapter.4}% 17 \BOOKMARK [1][-]{section.4.2}{\376\377\000P\000r\000e\000p\000a\000r\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000e\000n\000v\000i\000r\000o\000n\000m\000e\000n\000t\000\040\000a\000n\000d\000\040\000i\000n\000s\000t\000a\000l\000l\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000E\000S\000G\000E\000M\000M\000E}{chapter.4}% 17
\BOOKMARK [1][-]{section.4.3}{\376\377\000C\000o\000n\000f\000i\000g\000u\000r\000i\000n\000g\000\040\000d\000e\000f\000a\000u\000l\000t\000.\000c\000o\000n\000f\000\040\000f\000i\000l\000e}{chapter.4}% 18 \BOOKMARK [1][-]{section.4.3}{\376\377\000C\000o\000n\000f\000i\000g\000u\000r\000i\000n\000g\000\040\000d\000e\000f\000a\000u\000l\000t\000.\000c\000o\000n\000f\000\040\000f\000i\000l\000e}{chapter.4}% 18
\BOOKMARK [0][-]{chapter.5}{\376\377\000I\000n\000d\000i\000c\000e\000s\000\040\000a\000n\000d\000\040\000t\000a\000b\000l\000e\000s}{}% 19 \BOOKMARK [0][-]{chapter.5}{\376\377\000I\000n\000d\000i\000c\000e\000s\000\040\000a\000n\000d\000\040\000t\000a\000b\000l\000e\000s}{}% 19
\babel@toc {english}{} \babel@toc {english}{}\relax
\contentsline {chapter}{\numberline {1}Using ESGEMME via Docker}{1}{chapter.1}% \contentsline {chapter}{\numberline {1}Using ESGEMME via Docker}{1}{chapter.1}%
\contentsline {section}{\numberline {1.1}Requirements}{1}{section.1.1}% \contentsline {section}{\numberline {1.1}Requirements}{1}{section.1.1}%
\contentsline {section}{\numberline {1.2}Getting the example input data}{1}{section.1.2}% \contentsline {section}{\numberline {1.2}Getting the example input data}{1}{section.1.2}%
...@@ -15,6 +15,6 @@ ...@@ -15,6 +15,6 @@
\contentsline {section}{\numberline {3.1}Preparing Your Input MSA and PDB with Colabfold}{7}{section.3.1}% \contentsline {section}{\numberline {3.1}Preparing Your Input MSA and PDB with Colabfold}{7}{section.3.1}%
\contentsline {chapter}{\numberline {4}Installation}{9}{chapter.4}% \contentsline {chapter}{\numberline {4}Installation}{9}{chapter.4}%
\contentsline {section}{\numberline {4.1}Installing the dependencies:}{9}{section.4.1}% \contentsline {section}{\numberline {4.1}Installing the dependencies:}{9}{section.4.1}%
\contentsline {section}{\numberline {4.2}Getting the source code and preparing the environment:}{9}{section.4.2}% \contentsline {section}{\numberline {4.2}Preparation of the environment and installation of ESGEMME}{9}{section.4.2}%
\contentsline {section}{\numberline {4.3}Configuring default.conf file}{9}{section.4.3}% \contentsline {section}{\numberline {4.3}Configuring default.conf file}{10}{section.4.3}%
\contentsline {chapter}{\numberline {5}Indices and tables}{11}{chapter.5}% \contentsline {chapter}{\numberline {5}Indices and tables}{13}{chapter.5}%
\NeedsTeXFormat{LaTeX2e}[1995/12/01] \NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{sphinxhighlight}[2022/06/30 stylesheet for highlighting with pygments] \ProvidesPackage{sphinxhighlight}[2016/05/29 stylesheet for highlighting with pygments]
% Its contents depend on pygments_style configuration variable. % Its contents depend on pygments_style configuration variable.
...@@ -103,27 +103,4 @@ ...@@ -103,27 +103,4 @@
\def\PYGZrb{]} \def\PYGZrb{]}
\makeatother \makeatother
% Sphinx redefinitions \renewcommand\PYGZsq{\textquotesingle}
% Originally to obtain a straight single quote via package textcomp, then
% to fix problems for the 5.0.0 inline code highlighting (captions!).
% The \text is from amstext, a dependency of sphinx.sty. It is here only
% to avoid build errors if for some reason expansion is in math mode.
\def\PYGZbs{\text\textbackslash}
\def\PYGZus{\_}
\def\PYGZob{\{}
\def\PYGZcb{\}}
\def\PYGZca{\text\textasciicircum}
\def\PYGZam{\&}
\def\PYGZlt{\text\textless}
\def\PYGZgt{\text\textgreater}
\def\PYGZsh{\#}
\def\PYGZpc{\%}
\def\PYGZdl{\$}
\def\PYGZhy{\sphinxhyphen}% defined in sphinxlatexstyletext.sty
\def\PYGZsq{\text\textquotesingle}
\def\PYGZdq{"}
\def\PYGZti{\text\textasciitilde}
\makeatletter
% use \protected to allow syntax highlighting in captions
\protected\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+{\PYG@do{#2}}}
\makeatother
...@@ -119,7 +119,7 @@ ...@@ -119,7 +119,7 @@
\pysig@restore@itemsep@and@parskip \pysig@restore@itemsep@and@parskip
} }
% %
% Use a \parbox to accommodate long argument list in signatures % Use a \parbox to accomodate long argument list in signatures
% LaTeX did not imagine that an \item label could need multi-line rendering % LaTeX did not imagine that an \item label could need multi-line rendering
\newlength{\py@argswidth} \newlength{\py@argswidth}
\newcommand{\py@sigparams}[2]{% \newcommand{\py@sigparams}[2]{%
......
%% TOPIC AND CONTENTS BOXES %% TOPIC AND CONTENTS BOXES
% %
% change this info string if making any custom modification % change this info string if making any custom modification
\ProvidesFile{sphinxlatexshadowbox.sty}[2023/03/19 sphinxShadowBox] \ProvidesFile{sphinxlatexshadowbox.sty}[2021/01/27 sphinxShadowBox]
% Provides support for this output mark-up from Sphinx latex writer: % Provides support for this output mark-up from Sphinx latex writer:
% %
...@@ -16,58 +16,48 @@ ...@@ -16,58 +16,48 @@
% %
% Requires: % Requires:
\RequirePackage{framed} \RequirePackage{framed}
\RequirePackage{sphinxpackageboxes}
% At 5.1.0 the code formerly here in a definition of \spx@ShadowFBox has been % Again based on use of "framed.sty", this allows breakable framed boxes.
% refactored to hand over to a more powerful \spx@boxes@fcolorbox provided by \long\def\spx@ShadowFBox#1{%
% file sphinxpackageboxes.sty, it can draw rounded corners and add a background \leavevmode\begingroup
% color. % first we frame the box #1
\setbox\@tempboxa
\hbox{\vrule\@width\sphinxshadowrule
\vbox{\hrule\@height\sphinxshadowrule
\kern\sphinxshadowsep
\hbox{\kern\sphinxshadowsep #1\kern\sphinxshadowsep}%
\kern\sphinxshadowsep
\hrule\@height\sphinxshadowrule}%
\vrule\@width\sphinxshadowrule}%
% Now we add the shadow, like \shadowbox from fancybox.sty would do
\dimen@\dimexpr.5\sphinxshadowrule+\sphinxshadowsize\relax
\hbox{\vbox{\offinterlineskip
\hbox{\copy\@tempboxa\kern-.5\sphinxshadowrule
% add shadow on right side
\lower\sphinxshadowsize
\hbox{\vrule\@height\ht\@tempboxa \@width\dimen@}%
}%
\kern-\dimen@ % shift back vertically to bottom of frame
% and add shadow at bottom
\moveright\sphinxshadowsize
\vbox{\hrule\@width\wd\@tempboxa \@height\dimen@}%
}%
% move left by the size of right shadow so shadow adds no width
\kern-\sphinxshadowsize
}%
\endgroup
}
% At 6.2.0, \spx@ShadowFBox is so much simplified that it is now not % use framed.sty to allow page breaks in frame+shadow
% separately defined but directly incorporated into the \FrameCommand % works well inside Lists and Quote-like environments
% definition done by sphinxShadowBox environment below. % produced by ``topic'' directive (or local contents)
% could nest if LaTeX writer authorized it
% Use framed.sty \MakeFramed/\endMakeFramed to allow page breaks for topic
% boxes. Originally Sphinx used \shadowbox from fancybox.sty but it did not
% allow pagebreaks (which was problematic for "contents" directive if there
% are many subsections).
%
% Docutils does not allow topic to be nested within topics or other body
% elements. But the LaTeX code here does allow it:
%
% - a topic inside another topic would be rendered in a minipage (thus not
% allowing pagebreaks). Its external frame would adapt perfectly to
% the *current (smaller) width for text*.
%
% - a topic inside (nested) lists or quote environments would have its frame
% take the *full width* of the page, but its text contents on the other hand
% would obey exactly the current indentation plus inner separation. This is
% in contrast with the framing used for literal blocks, also based, but in a
% more sophisticated way on usage of \MakeFramed/\endMakeFramed, and
% adjusting to current text indentation.
\newenvironment{sphinxShadowBox} \newenvironment{sphinxShadowBox}
{% {\def\FrameCommand {\spx@ShadowFBox }%
\spx@boxes@fcolorbox@setup{topic}%
% we will use the dimen registers from sphinxpackageboxes.sty which now hold
% the values from options related to topic/contents
% MEMO: \spx@boxes@fcolorbox creates an \hbox but does not quit vertical
% mode; but in context of framed.sty's \FrameCommand TeX is already
% in restricted horizontal mode, so no need for a \leavevmode here.
\def\FrameCommand {\spx@boxes@fcolorbox}%
% 6.2.0 adds support for div.topic_box-decoration-break=slice.
% (it is yet undecided if slice style should inhibit a bottom shadow)
\ifspx@topic@border@open
\def\FirstFrameCommand
{\spx@boxes@fcolorbox@setup@openbottom\FrameCommand}%
\def\MidFrameCommand
{\spx@boxes@fcolorbox@setup@openboth \FrameCommand}%
\def\LastFrameCommand
{\spx@boxes@fcolorbox@setup@opentop \FrameCommand}%
\fi
\advance\spx@image@maxheight \advance\spx@image@maxheight
-\dimexpr\spx@boxes@border@top+\spx@boxes@border@bottom -\dimexpr2\sphinxshadowrule
+\spx@boxes@padding@top+\spx@boxes@padding@bottom +2\sphinxshadowsep
+\ifdim\spx@boxes@shadow@yoffset<\z@-\fi\spx@boxes@shadow@yoffset +\sphinxshadowsize
+\baselineskip\relax +\baselineskip\relax
% configure framed.sty not to add extra vertical spacing % configure framed.sty not to add extra vertical spacing
\ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}% \ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}%
...@@ -83,7 +73,7 @@ ...@@ -83,7 +73,7 @@
% use a minipage if we are already inside a framed environment % use a minipage if we are already inside a framed environment
\ifspx@inframed\begin{minipage}{\linewidth}\fi \ifspx@inframed\begin{minipage}{\linewidth}\fi
\MakeFramed {\spx@inframedtrue \MakeFramed {\spx@inframedtrue
% framed.sty puts into "\width" the added width (padding+border widths) % framed.sty puts into "\width" the added width (=2shadowsep+2shadowrule)
% adjust \hsize to what the contents must use % adjust \hsize to what the contents must use
\advance\hsize-\width \advance\hsize-\width
% adjust LaTeX parameters to behave properly in indented/quoted contexts % adjust LaTeX parameters to behave properly in indented/quoted contexts
...@@ -96,15 +86,9 @@ ...@@ -96,15 +86,9 @@
\@minipagerestore \@minipagerestore
\@setminipage \@setminipage
}% }%
\color@begingroup % workaround upstream framed.sty bug
\ifspx@topic@withtextcolor
\color{sphinxtopicTextColor}%
\fi
\spx@topic@TeXextras
}% }%
{% insert the "endminipage" code {% insert the "endminipage" code
\par\unskip \par\unskip
\color@endgroup % matches the \color@begingroup
\@minipagefalse \@minipagefalse
\endMakeFramed \endMakeFramed
\ifspx@inframed\end{minipage}\fi \ifspx@inframed\end{minipage}\fi
......
%% TITLES %% TITLES
% %
% change this info string if making any custom modification % change this info string if making any custom modification
\ProvidesFile{sphinxlatexstyleheadings.sty}[2023/02/11 headings] \ProvidesFile{sphinxlatexstyleheadings.sty}[2021/01/27 headings]
\RequirePackage[nobottomtitles*]{titlesec} \RequirePackage[nobottomtitles*]{titlesec}
\@ifpackagelater{titlesec}{2016/03/15}% \@ifpackagelater{titlesec}{2016/03/15}%
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
******** and Sphinx could not patch it, perhaps because your local ...|^^J% ******** and Sphinx could not patch it, perhaps because your local ...|^^J%
******** copy is already fixed without a changed release date. .......|^^J% ******** copy is already fixed without a changed release date. .......|^^J%
******** If not, you must update titlesec! ...........................|}}% ******** If not, you must update titlesec! ...........................|}}%
\sphinxbuildwarning{badtitlesec}%
\fi \fi
}% }%
}{} }{}
...@@ -36,15 +35,13 @@ ...@@ -36,15 +35,13 @@
{\py@TitleColor\thesection}{0.5em}{\py@TitleColor} {\py@TitleColor\thesection}{0.5em}{\py@TitleColor}
\titleformat{\subsection}{\large\py@HeaderFamily}% \titleformat{\subsection}{\large\py@HeaderFamily}%
{\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor} {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}
% \normalsize added as work-around to a lualatex-ja upstream problem \titleformat{\subsubsection}{\py@HeaderFamily}%
% https://osdn.net/projects/luatex-ja/ticket/47321
\titleformat{\subsubsection}{\normalsize\py@HeaderFamily}%
{\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor} {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}
% By default paragraphs (and subsubsections) will not be numbered because % By default paragraphs (and subsubsections) will not be numbered because
% sphinxmanual.cls and sphinxhowto.cls set secnumdepth to 2 % sphinxmanual.cls and sphinxhowto.cls set secnumdepth to 2
\titleformat{\paragraph}{\normalsize\py@HeaderFamily}% \titleformat{\paragraph}{\py@HeaderFamily}%
{\py@TitleColor\theparagraph}{0.5em}{\py@TitleColor} {\py@TitleColor\theparagraph}{0.5em}{\py@TitleColor}
\titleformat{\subparagraph}{\normalsize\py@HeaderFamily}% \titleformat{\subparagraph}{\py@HeaderFamily}%
{\py@TitleColor\thesubparagraph}{0.5em}{\py@TitleColor} {\py@TitleColor\thesubparagraph}{0.5em}{\py@TitleColor}
......
%% TEXT STYLING %% TEXT STYLING
% %
% change this info string if making any custom modification % change this info string if making any custom modification
\ProvidesFile{sphinxlatexstyletext.sty}[2023/03/26 text styling] \ProvidesFile{sphinxlatexstyletext.sty}[2021/12/06 text styling]
% Basically everything here consists of macros which are part of the latex % Basically everything here consists of macros which are part of the latex
% markup produced by the Sphinx latex writer % markup produced by the Sphinx latex writer
% But those arise rather from the default definitions of the respective
% latex environments done in sphinxlatexadmonitions.sty
\def\sphinxstylenotetitle #1{\sphinxstrong{#1} }
\let\sphinxstylehinttitle \sphinxstylenotetitle % #1 holds the localized notice name
\let\sphinxstyleimportanttitle\sphinxstylenotetitle % followed by a colon
\let\sphinxstyletiptitle \sphinxstylenotetitle
\let\sphinxstylewarningtitle \sphinxstylenotetitle
\let\sphinxstylecautiontitle \sphinxstylenotetitle
\let\sphinxstyleattentiontitle\sphinxstylenotetitle
\let\sphinxstyledangertitle \sphinxstylenotetitle
\let\sphinxstyleerrortitle \sphinxstylenotetitle
\def\sphinxstyleseealsotitle#1{\sphinxstrong{#1}\par\nopagebreak}
%
% A utility to remove a final colon. Removing last token is not easy in
% LaTeX, and there are additional complications:
% - some languages will make the : "active" in document body,
% - the generic admonition ends up using "note", so for \sphinxnotetitle to
% use it safely, the utility has to allow an input not having any final colon.
% - a bit far-fetched but maybe there is more than one colon inside the input
% (possible from a generic admonition title).
% Hence the scary code.
\def\sphinxremovefinalcolon#1{% #1 is the "active" : TeX token
\protected\def\sphinxremovefinalcolon ##1{%
% complications due to : possibly "active"
\begingroup\ifnum\catcode`:=\active
\def\x####1#1\relax{####1}%
\else\def\x####1:\relax{####1}\fi
\expandafter\endgroup\x##1\relax
% trick to let \x work also if input ##1 has no ending colon
\@gobblefour#1\relax:\relax\relax\relax
}%
}% end of wrapper to inject active :
\begingroup\catcode`:\active\expandafter\endgroup\sphinxremovefinalcolon:
% See doc/latex.rst for an example.
% Some custom font markup commands. % Some custom font markup commands.
\protected\def\sphinxstrong#1{\textbf{#1}} \protected\def\sphinxstrong#1{\textbf{#1}}
\protected\def\sphinxcode#1{\texttt{#1}} \protected\def\sphinxcode#1{\texttt{#1}}
...@@ -54,8 +19,6 @@ ...@@ -54,8 +19,6 @@
\protected\def\sphinxaccelerator#1{\underline{#1}} \protected\def\sphinxaccelerator#1{\underline{#1}}
\protected\def\sphinxcrossref#1{\emph{#1}} \protected\def\sphinxcrossref#1{\emph{#1}}
\protected\def\sphinxtermref#1{\emph{#1}} \protected\def\sphinxtermref#1{\emph{#1}}
\protected\def\sphinxsamedocref#1{\emph{#1}}
\protected\def\sphinxparam#1{\emph{#1}}
% \optional is used for ``[, arg]``, i.e. desc_optional nodes. % \optional is used for ``[, arg]``, i.e. desc_optional nodes.
\long\protected\def\sphinxoptional#1{% \long\protected\def\sphinxoptional#1{%
{\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}} {\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}}
...@@ -76,7 +39,6 @@ ...@@ -76,7 +39,6 @@
\protected\def\sphinxstyleothertitle #1{\textbf{#1}} \protected\def\sphinxstyleothertitle #1{\textbf{#1}}
\protected\def\sphinxstylesidebarsubtitle #1{~\\\textbf{#1} \smallskip} \protected\def\sphinxstylesidebarsubtitle #1{~\\\textbf{#1} \smallskip}
% \text.. commands do not allow multiple paragraphs % \text.. commands do not allow multiple paragraphs
% attention, this one is not self-delimiting
\protected\def\sphinxstyletheadfamily {\sffamily} \protected\def\sphinxstyletheadfamily {\sffamily}
\protected\def\sphinxstyleemphasis #1{\emph{#1}} \protected\def\sphinxstyleemphasis #1{\emph{#1}}
\protected\def\sphinxstyleliteralemphasis#1{\emph{\sphinxcode{#1}}} \protected\def\sphinxstyleliteralemphasis#1{\emph{\sphinxcode{#1}}}
...@@ -84,8 +46,8 @@ ...@@ -84,8 +46,8 @@
\protected\def\sphinxstyleliteralstrong#1{\sphinxbfcode{#1}} \protected\def\sphinxstyleliteralstrong#1{\sphinxbfcode{#1}}
\protected\def\sphinxstyleabbreviation #1{\textsc{#1}} \protected\def\sphinxstyleabbreviation #1{\textsc{#1}}
\protected\def\sphinxstyleliteralintitle#1{\sphinxcode{#1}} \protected\def\sphinxstyleliteralintitle#1{\sphinxcode{#1}}
\newcommand*\sphinxstylecodecontinued[1]{{\footnotesize(#1)}}% \newcommand*\sphinxstylecodecontinued[1]{\footnotesize(#1)}%
\newcommand*\sphinxstylecodecontinues[1]{{\footnotesize(#1)}}% \newcommand*\sphinxstylecodecontinues[1]{\footnotesize(#1)}%
% figure legend comes after caption and may contain arbitrary body elements % figure legend comes after caption and may contain arbitrary body elements
\newenvironment{sphinxlegend}{\par\small}{\par} \newenvironment{sphinxlegend}{\par\small}{\par}
% reduce hyperref "Token not allowed in a PDF string" warnings on PDF builds % reduce hyperref "Token not allowed in a PDF string" warnings on PDF builds
...@@ -105,9 +67,7 @@ ...@@ -105,9 +67,7 @@
\let\sphinxemail \@firstofone \let\sphinxemail \@firstofone
\let\sphinxcrossref \@firstofone \let\sphinxcrossref \@firstofone
\let\sphinxtermref \@firstofone \let\sphinxtermref \@firstofone
\let\sphinxsamedocref\@firstofone
\let\sphinxhyphen\sphinxhyphenforbookmarks \let\sphinxhyphen\sphinxhyphenforbookmarks
\def\PYG#1#2{#2}% (can not yet appear in section titles, but perhaps in future)
}} }}
% Special characters % Special characters
......
\NeedsTeXFormat{LaTeX2e} \NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{sphinxpackagefootnote}% \ProvidesPackage{sphinxpackagefootnote}%
[2022/08/15 v5.3.0 Sphinx custom footnotehyper package (Sphinx team)] [2022/02/12 v4.5.0 Sphinx custom footnotehyper package (Sphinx team)]
%% %%
%% Package: sphinxpackagefootnote %% Package: sphinxpackagefootnote
%% Version: based on footnotehyper.sty 2021/02/04 v1.1d %% Version: based on footnotehyper.sty 2021/02/04 v1.1d
...@@ -338,7 +338,6 @@ ...@@ -338,7 +338,6 @@
}% }%
% slight reformulation for Sphinx % slight reformulation for Sphinx
\def\FNH@bad@makefntext@alert{% \def\FNH@bad@makefntext@alert{%
\sphinxbuildwarning{badfootnotes}%
\PackageWarningNoLine{sphinxpackagefootnote}% \PackageWarningNoLine{sphinxpackagefootnote}%
{Footnotes will be sub-optimal, sorry. This is due to the document class or^^J {Footnotes will be sub-optimal, sorry. This is due to the document class or^^J
some package modifying macro \string\@makefntext.^^J some package modifying macro \string\@makefntext.^^J
......
...@@ -29,13 +29,13 @@ file in fasta format: ...@@ -29,13 +29,13 @@ file in fasta format:
.. code:: bash .. code:: bash
wget http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/blob/master/data/aliBLAT.fasta wget http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/raw/8d766d4d11af0e93c9da8fc2c5cc1bfc457d2936/data/aliBLAT.fasta
If you don’t have wget, you can try the same command with curl: If you don’t have wget, you can try the same command with curl:
.. code:: bash .. code:: bash
curl http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/blob/master/data/aliBLAT.fasta curl http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/raw/8d766d4d11af0e93c9da8fc2c5cc1bfc457d2936/data/aliBLAT.fasta >aliBLAT.fasta
Please verify that the aliBLAT.fasta file is in the folder. Please verify that the aliBLAT.fasta file is in the folder.
...@@ -43,7 +43,7 @@ Now, we will download the PDB (Protein Databank) file for BLAT: ...@@ -43,7 +43,7 @@ Now, we will download the PDB (Protein Databank) file for BLAT:
.. code:: bash .. code:: bash
wget http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/blob/master/data/blat-af2.pdb wget http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME/raw/8d766d4d11af0e93c9da8fc2c5cc1bfc457d2936/data/blat-af2.pdb
Single point mutation calculations Single point mutation calculations
---------------------------------- ----------------------------------
...@@ -81,7 +81,7 @@ In this step, we will use only evolutionary information from an MSA file: ...@@ -81,7 +81,7 @@ In this step, we will use only evolutionary information from an MSA file:
.. code:: bash .. code:: bash
python $ESGEMME_PATH/esgemme.py aliBLAT.fasta -r input -f aliBLAT.fasta esgemme aliBLAT.fasta -r input -f aliBLAT.fasta
After a few minutes of calculation, you must see at least two files named After a few minutes of calculation, you must see at least two files named
BLAT_normPred_evolCombi.txt and BLAT_normPred_evolCombi.png. You have BLAT_normPred_evolCombi.txt and BLAT_normPred_evolCombi.png. You have
...@@ -93,7 +93,7 @@ evolutionary information: ...@@ -93,7 +93,7 @@ evolutionary information:
.. code:: bash .. code:: bash
python $ESGEMME_PATH/esgemme.py aliBLAT.fasta -r input -f aliBLAT.fasta \ esgemme aliBLAT.fasta -r input -f aliBLAT.fasta \
--pdbfile blat-af2.pdb \ --pdbfile blat-af2.pdb \
--normweightmode sstjetormax --normweightmode sstjetormax
...@@ -113,13 +113,13 @@ structural information. First, let's do it without structural information: ...@@ -113,13 +113,13 @@ structural information. First, let's do it without structural information:
.. code:: bash .. code:: bash
python $ESGEMME_PATH/esgemme.py aliBLAT.fasta -r input -f aliBLAT.fasta \ esgemme aliBLAT.fasta -r input -f aliBLAT.fasta \
-m Stiffler_2015_BLAT_ECOLX.mut -m Stiffler_2015_BLAT_ECOLX.mut
You can include structural information in the following way: You can include structural information in the following way:
.. code:: bash .. code:: bash
python $ESGEMME_PATH/esgemme.py aliBLAT.fasta -r input -f aliBLAT.fasta \ esgemme aliBLAT.fasta -r input -f aliBLAT.fasta \
--pdbfile blat-af2.pdb \ --pdbfile blat-af2.pdb \
--normweightmode sstjetormax \ --normweightmode sstjetormax \
-m Stiffler_2015_BLAT_ECOLX.mut -m Stiffler_2015_BLAT_ECOLX.mut
......
...@@ -22,20 +22,115 @@ ESGEMME has the following external dependencies: ...@@ -22,20 +22,115 @@ ESGEMME has the following external dependencies:
These tools should be installed to be able to use ESGEMME. These tools should be installed to be able to use ESGEMME.
Getting the source code and preparing the environment: Preparation of the environment and installation of ESGEMME
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Download the ESGEMME source code from Step by step installation on Ubuntu 22.04
http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME. Define and export the
environment variable ESGEMME_PATH=/path-to-ESGEMME-directory/
Prepare your environment and install the required packages:
.. code:: bash
sudo apt-get update --fix-missing && \
sudo apt-get install -y --no-install-recommends apt-utils && \
sudo apt-get install -y software-properties-common && \
sudo apt-get install -y autotools-dev && \
sudo apt-get install -y automake && \
sudo apt-get install -y build-essential && \
sudo apt-get install -y python3-dev && \
sudo apt-get install -y python3-pip && \
sudo apt-get install -y r-base r-base-core && \
sudo apt-get install -y muscle && \
sudo apt-get install -y default-jre && \
sudo apt-get install -y ncbi-blast+ && \
sudo apt-get install -y nano && \
sudo apt-get install -y less && \
sudo apt-get install -y wget && \
sudo apt-get install csh && \
sudo apt-get install -y hmmer && \
sudo apt-get install -y libboost-all-dev && \
sudo apt-get clean && \
sudo rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
#Dssp installation
If you are using Ubuntu 20.04, you can install dssp by the following command
.. code:: bash
sudo apt-get install dssp
Otherwise, you can install it from the source by the following commands.
Please note that default dssp in Ubuntu 22.04 is not working properly.
.. code:: bash .. code:: bash
export ESGEMME_PATH=/path-to-ESGEMME-directory/ wget https://github.com/cmbi/dssp/archive/refs/heads/master.zip && \
unzip -o master.zip && cd dssp-master/ && \
./autogen.sh && \
./configure && \
make && \
sudo make install && \
sudo ln -s /usr/local/bin/mkdssp /usr/local/bin/dssp && \
cd ../ && \
sudo rm -rf dssp-master/ && \
sudo rm -f master.zip
#HHSUITE installation
.. code:: bash
wget https://github.com/soedinglab/hh-suite/releases/download/v3.3.0/hhsuite-3.3.0-AVX2-Linux.tar.gz && \
mkdir hhsuite && \
mv hhsuite-3.3.0-AVX2-Linux.tar.gz hhsuite/ && \
cd hhsuite && \
tar xvfz hhsuite-3.3.0-AVX2-Linux.tar.gz && \
rm -f hhsuite-3.3.0-AVX2-Linux.tar.gz
#Add it to your path permanently inside .bashrc or .profile or .bash_profile
Check the location of hhsuite folder and add it to your path
In my case it was in /home/tekpinar/research/lcqb folder. Therefore, I added the following line
to my .profile file.
PATH="/home/tekpinar/research/lcqb/hhsuite/bin:/home/tekpinar/research/lcqb/hhsuite/scripts:$PATH"
Then
source ~/.profile
#
cd ESGEMME
#Download ESGEMME from http://gitlab.lcqb.upmc.fr/tekpinar/ESGEMME repository and go inside the ESGEMME folder.!
.. code:: bash
cd ESGEMME
Configuring default.conf file Configuring default.conf file
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Inside ESGEMME folder, there is an important file called default.conf. Inside ESGEMME/esgemme folder, there is an important file called default.conf.
This file contains essential parameters of ESGEMME, such as paths of This file contains essential parameters of ESGEMME, such as paths of
external parts, default internal parameters. etc. You have to correct the Software section of this external parts, default internal parameters. etc. You have to correct the Software section of this
file according to your system. file according to your system.
.. code:: bash
pip3 install -e . &&\
cd ../
#Installing the required R packages
.. code:: bash
sudo Rscript -e 'install.packages("seqinr", repos="http://cran.us.r-project.org", dependencies=TRUE)'
#Installing secondary programs such as ev_couplings to obtain MSA files.
.. code:: bash
wget https://github.com/debbiemarkslab/plmc/archive/refs/heads/master.zip && \
unzip -o master.zip && \
cd plmc-master && \
make all-openmp32 && \
sudo cp bin/plmc /usr/local/bin/ && \
cd ../ && \
rm -rf master.zip plmc-master
...@@ -86,20 +86,12 @@ if ((normWeightMode=="max")){ ...@@ -86,20 +86,12 @@ if ((normWeightMode=="max")){
} }
}else if (normWeightMode=="tjetormax"){ }else if (normWeightMode=="tjetormax"){
print("Using tjetormax") print("Using tjetormax with inverse CV")
for (row in 1:nrow(jet)) { for (row in 1:nrow(jet)) {
if(sum(colnames(jet)=="traceMax")==1){ if(sum(colnames(jet)=="traceMax")==1){
if((jet[row, "traceMax"]>jet[row, "pc"]) & (jet[row, "traceMax"]>jet[row, "cv"])){ trace<-append(trace, max((jet[row, "traceMax"]+jet[row, "pc"])/2.0, max((jet[row, "traceMax"]+1.0-jet[row, "cv"])/2.0, (jet[row, "pc"]+1.0-jet[row, "cv"])/2.0 )))
trace<-append(trace, jet[row, "traceMax"])
}else{
trace<-append(trace, max((jet[row, "traceMax"]+jet[row, "pc"])/2.0, max((jet[row, "traceMax"]+jet[row, "cv"])/2.0, (jet[row, "pc"]+jet[row, "cv"])/2.0 )))
}
}else{ }else{
if((jet[row, "trace"]>jet[row, "pc"]) & (jet[row, "trace"]>jet[row, "cv"])){ trace<-append(trace, max((jet[row, "trace"]+jet[row, "pc"])/2.0, max((jet[row, "trace"]+1.0-jet[row, "cv"])/2.0, (jet[row, "pc"]+1.0-jet[row, "cv"])/2.0 )))
trace<-append(trace, jet[row, "trace"])
}else{
trace<-append(trace, max((jet[row, "trace"]+jet[row, "pc"])/2.0, max((jet[row, "trace"]+jet[row, "cv"])/2.0, (jet[row, "pc"]+jet[row, "cv"])/2.0 )))
}
} }
} }
}else{ }else{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment