Skip to content

Commit

Permalink
v2.2 Changes
Browse files Browse the repository at this point in the history
  • Loading branch information
HAShihab committed May 10, 2013
1 parent dfb6b48 commit e148151
Show file tree
Hide file tree
Showing 9 changed files with 96 additions and 49 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@
# Server Submission(s)
*.txt
*.tab

# Benchmarking
benchmark/
14 changes: 14 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
fathmm
======

This page is a continuous listing of new features and bug fixes for the
Functional Analysis through Hidden Markov Models software and server
(http://fathmm.biocompute.org.uk).

## 10th May 2013 (v2.2)

* We now use the Representative Proteome (RP) database when searching for homologous sequences.
* We now incorporate Pfam 27.0 into our domain-based predictions.
* Human: added support for ENSEMBL 71, UniProt 2013_05, and RefSeq 59.
* Cow: added support for ENSEMBL v71
* We have fixed a minor database bug
5 changes: 1 addition & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,6 @@ AP : Arabidopsis Plant Ontology
KW : UniProtKB KeyWords
```

## Known Issues:

* Using database v2.0, our predictions appear to be derived/written slower than previous version(s) of our
software - this has now been resolved in database v2.1 (missing index).
## Contributing:

We welcome any comments and/or suggestions that you may have regarding our software and server - please send an email directly to [email protected]
6 changes: 3 additions & 3 deletions cancer.html
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
<h2>Analyze Cancer-Associated Variants</h2>
<br />
<p>
Obtain instant predictions capable of distinguishing between cancer-promoting/driver mutations, passsenger mutations and other germline polymorphisms.
Obtain instant predictions capable of distinguishing between cancer-promoting/driver mutations, passenger mutations and other germline polymorphisms.
</p>
</div>

Expand Down Expand Up @@ -242,8 +242,8 @@ <h1>Input Format:</h1>
<h1>Prediction Threshold:</h1>
<br />
<p>
As described in our paper (submitted), our server uses a default prediction threshold of -0.75; however, this can be adjusted and tuned to cater
for your individual needs. If you are interested in minimising the number of false positives in your analysis, then you should opt
As described in our paper, our server uses a default prediction threshold of -0.75; however, this can be adjusted and tuned to cater
for your individual needs. For example, if you are interested in minimising the number of false positives in your analysis, then you should opt
for a more conservative threshold, e.g. -3.0; however, if you are interested in capturing a large proportion of cancer-associated mutations (regardless of
the number of false positives), then a less stringent threshold should be selected, e.g. 0.0 or higher. To inform you of this choice, the specificity and sensitivity
of our software at various prediction thresholds can be seen using the below interactive graph:
Expand Down
28 changes: 14 additions & 14 deletions cgi-bin/fathmm.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,16 @@ def map_position(domain, substitution):

# return if the amino acid substitution falls outside of the domain
# assignment
if int(substitution[1:-1]) < int(domain['seq_start']) or \
if int(substitution[1:-1]) < int(domain['seq_begin']) or \
int(substitution[1:-1]) > int(domain['seq_end']):
return None

# adjust the sequence/HMM position (Python has zero-based coordinates)
x = int(domain['seq_start']) - 1
y = int(domain['hmm_start']) - 1
x = int(domain['seq_begin']) - 1
y = int(domain['hmm_begin']) - 1

# map amino acid substitution onto the HMM
for residue in list(domain['alignment']):
for residue in list(domain['align']):
if residue.isupper() or residue.islower():
# upper-case (match)/lower-case (insertion) characters map
# onto a sequence residue
Expand Down Expand Up @@ -67,21 +67,21 @@ def fetch_prediction(facade, substitution):
else:
# derive a "Weighted" prediction depending on the selected
# pathogenicity weights ...
dbCursor.execute("select * from Weights where id='" + x['id'] + "' and type='" + options.weights + "'")
dbCursor.execute("select * from WEIGHTS where id='" + x['id'] + "' and type='" + options.weights + "'")
Weights = dbCursor.fetchone()

if Weights:
p = x[substitution[0]]
q = x[substitution[-1]]
r = Weights['polymorphic']
s = Weights['pathogenic']
r = Weights['other']
s = Weights['disease']

Score = "%.2f" % math.log(((1.0 - p) * (r + 1.0)) / ((1.0 - q) * (s + 1.0)), 2)

# derive domain-phenotype associations (via the most informative
# SUPERFAMILY HMM)
if not Phenotypes and x['accession']:
dbCursor.execute("select * from Phenotypes where accession='" + x['accession'] + "' and ontology='" + options.phenotypes + "' and origin=1 order by score")
dbCursor.execute("select * from PHENOTYPES where accession='" + x['accession'] + "' and type='" + options.phenotypes + "' and origin=1 order by score")
Phenotypes = dbCursor.fetchall()

if Score and Phenotypes:
Expand All @@ -104,7 +104,7 @@ def process_record(dbSNP, protein, substitution):


# fetch pre-computed sequence record
dbCursor.execute("select a.* from Clusters a, Protein b where a.id=b.cluster and b.name='" + protein + "'")
dbCursor.execute("select a.* from SEQUENCE a, PROTEIN b where a.id=b.id and b.name='" + protein + "'")
SeqRecord = dbCursor.fetchone()

if not SeqRecord:
Expand Down Expand Up @@ -138,7 +138,7 @@ def process_record(dbSNP, protein, substitution):
Facade = []

# fetch substitution-harbouring protein domains
dbCursor.execute("select * from Domains where id='" + SeqRecord['id'] + "' and " + substitution[1:-1] + " between seq_start and seq_end order by evalue")
dbCursor.execute("select * from DOMAINS where id='" + str(SeqRecord['id']) + "' and " + substitution[1:-1] + " between seq_begin and seq_end order by score")
DomRecord = dbCursor.fetchall()

for x in DomRecord:
Expand All @@ -147,7 +147,7 @@ def process_record(dbSNP, protein, substitution):

if residue:
# fetch description/probabilities for mapped position
dbCursor.execute("select a.*, b.accession, b.description from Probabilities a, Library b where a.id=b.id and a.id='" + str(x['hmm']) + "' and a.position='" + residue + "'")
dbCursor.execute("select a.*, b.accession, b.description from PROBABILITIES a, LIBRARY b where a.id=b.id and a.id='" + str(x['hmm']) + "' and a.position='" + residue + "'")
dbRecord = dbCursor.fetchone()

if dbRecord:
Expand All @@ -157,7 +157,7 @@ def process_record(dbSNP, protein, substitution):
# derive a prediction based on the most informative HMM
if options.weights.upper() == "UNWEIGHTED":
# if "Unweighted" prediction", append JackHMMER probabilities/conservation ...
dbCursor.execute("select a.*, b.accession, b.description from Probabilities a, Library b where a.id=b.id and a.id='" + SeqRecord['id'] + "' and a.position='" + substitution[1:-1] + "'")
dbCursor.execute("select a.*, b.accession, b.description from PROBABILITIES a, LIBRARY b where a.id=b.id and a.id='" + str(SeqRecord['id']) + "' and a.position='" + substitution[1:-1] + "'")
ConRecord = dbCursor.fetchone()

if ConRecord:
Expand All @@ -174,7 +174,7 @@ def process_record(dbSNP, protein, substitution):

if not Score:
# append JackHMMER probabilities/conservation
dbCursor.execute("select a.*, b.accession, b.description from Probabilities a, Library b where a.id=b.id and a.id='" + SeqRecord['id'] + "' and a.position='" + substitution[1:-1] + "'")
dbCursor.execute("select a.*, b.accession, b.description from PROBABILITIES a, LIBRARY b where a.id=b.id and a.id='" + str(SeqRecord['id']) + "' and a.position='" + substitution[1:-1] + "'")
ConRecord = dbCursor.fetchone()

if ConRecord:
Expand Down Expand Up @@ -320,7 +320,7 @@ def process_record(dbSNP, protein, substitution):
# dbSNP record ...
if re.compile("^rs\d+$", re.IGNORECASE).match(record):
# ... fetch protein consequence(s)
dbCursor.execute("select distinct * from Variants where id='" + record + "'")
dbCursor.execute("select distinct * from VARIANTS where id='" + record + "'")
dbRecords = dbCursor.fetchall()

if not dbRecords:
Expand Down
42 changes: 31 additions & 11 deletions cgi-bin/results.cgi
Original file line number Diff line number Diff line change
Expand Up @@ -210,9 +210,14 @@ if __name__ == '__main__':
<hr>
<footer>
<p>
We welcome any comments and/or suggestions that you may have regarding our software and server - please send an email directly to [email protected]
If you have found this resource useful, please cite the following work:
<br />
<a href="http://www.ncbi.nlm.nih.gov/pubmed/23033316">Shihab HA, Gough J, Cooper DN, Stenson PD, Barker GLA, Edwards KJ, Day INM, Gaunt, TR. (2013). Predicting the Functional, Molecular and Phenotypic Consequences of Amino Acid Substitutions using Hidden Markov Models. Hum. Mutat., <b>34</b>, 57-65 </a>
</p>
<p>
We welcome any comments and/or suggestions that you may have regarding our software and server - please send an email directly to [email protected]
</p>
</footer>
</footer>
</div>
</body>
Expand Down Expand Up @@ -323,9 +328,14 @@ if __name__ == '__main__':
<hr>
<footer>
<p>
We welcome any comments and/or suggestions that you may have regarding our software and server - please send an email directly to [email protected]
</p>
<p>
If you have found this resource useful, please cite the following work:
<br />
<a href="http://www.ncbi.nlm.nih.gov/pubmed/23033316">Shihab HA, Gough J, Cooper DN, Stenson PD, Barker GLA, Edwards KJ, Day INM, Gaunt, TR. (2013). Predicting the Functional, Molecular and Phenotypic Consequences of Amino Acid Substitutions using Hidden Markov Models. Hum. Mutat., <b>34</b>, 57-65 </a>
</p>
<p>
We welcome any comments and/or suggestions that you may have regarding our software and server - please send an email directly to [email protected]
</p>
</footer>
</div>
Expand Down Expand Up @@ -424,9 +434,14 @@ if __name__ == '__main__':
<hr>
<footer>
<p>
We welcome any comments and/or suggestions that you may have regarding our software and server - please send an email directly to [email protected]
</p>
<p>
If you have found this resource useful, please cite the following work:
<br />
<a href="http://www.ncbi.nlm.nih.gov/pubmed/23033316">Shihab HA, Gough J, Cooper DN, Stenson PD, Barker GLA, Edwards KJ, Day INM, Gaunt, TR. (2013). Predicting the Functional, Molecular and Phenotypic Consequences of Amino Acid Substitutions using Hidden Markov Models. Hum. Mutat., <b>34</b>, 57-65 </a>
</p>
<p>
We welcome any comments and/or suggestions that you may have regarding our software and server - please send an email directly to [email protected]
</p>
</footer>
</div>
Expand Down Expand Up @@ -549,9 +564,14 @@ if __name__ == '__main__':
<hr>
<footer>
<p>
We welcome any comments and/or suggestions that you may have regarding our software and server - please send an email directly to [email protected]
</p>
<p>
If you have found this resource useful, please cite the following work:
<br />
<a href="http://www.ncbi.nlm.nih.gov/pubmed/23033316">Shihab HA, Gough J, Cooper DN, Stenson PD, Barker GLA, Edwards KJ, Day INM, Gaunt, TR. (2013). Predicting the Functional, Molecular and Phenotypic Consequences of Amino Acid Substitutions using Hidden Markov Models. Hum. Mutat., <b>34</b>, 57-65 </a>
</p>
<p>
We welcome any comments and/or suggestions that you may have regarding our software and server - please send an email directly to [email protected]
</p>
</footer>
</div>
Expand Down
30 changes: 19 additions & 11 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,10 @@
</div>
</div>



<div class="hero-unit">
<h2>Functional Analysis through Hidden Markov Models</h2>
<h2>Functional Analysis through Hidden Markov Models (v2.2)</h2>
<br />
<p>
A high-throughput web-server capable of predicting the functional, molecular and phenotypic consequences of
Expand All @@ -91,43 +93,49 @@ <h2>Functional Analysis through Hidden Markov Models</h2>

<div id="info" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="head" aria-hidden="true">
<div class="modal-header">
<h3 id="head">About our Software and Server:</h3>
<h3 id="head">Description:</h3>
</div>
<div class="modal-body">
<p>
<br />
The Functional Analysis through Hidden Markov Models (fathmm) software and server is a <b>sequence-based algorithm</b> capable of predicting the
<b>functional and phenotypic consequences of protein missense variants</b> via the amalgamation of sequence conservation within hidden Markov
models (HMMs), representing the alignment of homologous sequences and conserved protein domains, with <b>'pathogenicity weights'</b>, representing
<b>functional and phenotypic consequences of protein missense variants</b> by combining sequence conservation within hidden Markov
models (HMMs), representing the alignment of homologous sequences and conserved protein domains, with <b>"pathogenicity weights"</b>, representing
the tolerance of the corresponding model to mutations.
<br /><br />

If you have found this resource useful, please cite the following work:
<br /><br />
Shihab HA <i>et al.</i> 2012. Predicting the Functional, Molecular, and Phenotypic Consequences of Amino Acid Substitutions
using Hidden Markov Models. Human Mutation <a href="http://www.ncbi.nlm.nih.gov/pubmed/23033316"><img src="./img/pubmed.png" /></a>

Shihab HA, Gough J, Cooper DN, Stenson PD, Barker GLA, Edwards KJ, Day INM, Gaunt, TR. (2013). Predicting the Functional, Molecular and
Phenotypic Consequences of Amino Acid Substitutions using Hidden Markov Models. <i>Hum. Mutat.</i>, <b>34</b>, 57-65
<a href="http://www.ncbi.nlm.nih.gov/pubmed/23033316"><img src="./img/pubmed.png" /></a>
<br />
</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
</div>
</div>




<div class="row">
<div class="span6">
<div class="well well-large" style="height: 150px;">
<h4>Analyze dbSNP/Protein Missense Variants</h4>
<br />
<p>Obtain instant predictions describing the <b>functional, molecular and phenotypic consequences</b> of protein missense variants.</p>
<p>Obtain instant predictions capable of discriminating between disease-causing mutations and neutral polymorphisms - including
predictions on the molecular and phenotypic consequences of protein missense variants.</p>
<p><a href="./inherited.html" class="btn pull-right">go &raquo;</a></p>
</div>
</div>
<div class="span6">
<div class="well well-large" style="height: 150px; background-image:url('./img/new.png'); background-repeat:no-repeat; background-position:top right; ">
<!--<div class="well well-large" style="height: 150px; background-image:url('./img/new.png'); background-repeat:no-repeat; background-position:top right; ">-->
<div class="well well-large" style="height: 150px;">
<h4>Analyze Cancer-Associated Variants</h4>
<br />
<p>Obtain instant predictions capable of distinguishing between <b>cancer-promoting/driver mutations</b>, <b>passsenger mutations</b> and <b>other germline polymorphisms</b>.</p>
<p>Obtain instant predictions capable of distinguishing between cancer-promoting/driver mutations, passenger mutations and other germline polymorphisms.</p>
<p><a href="./cancer.html" class="btn pull-right">go &raquo;</a></p>
</div>
</div>
Expand Down
Loading

0 comments on commit e148151

Please sign in to comment.