The people listed below are 'The Jalview Authors', who collectively
own the copyright to the Jalview source code and permit it to be released under GPL.
-This is the authoritative list. It was correct on 4th June 2014.
+This is the authoritative list. It was correct on 6th Oct 2016.
If you are releasing a version of Jalview, please make sure any
statement of authorship in the GUI reflects the list shown here.
In particular, check the resources/authors.props file !
--- /dev/null
+If you use Jalview in your work, please cite the Jalview 2 paper in Bioinformatics:
+
+Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M., Barton, G.J (2009),
+"Jalview version 2: A Multiple Sequence Alignment and Analysis Workbench,"
+Bioinformatics 25 (9) 1189-1191 doi: 10.1093/bioinformatics/btp033
-jalview.release=Release_2_9_0b1_Branch
-jalview.version=2.9.0b2
+jalview.release=Release_2_10_Branch
+jalview.version=2.10.0
quaqua: v.8.0 (latest stable) by Randel S Hofer. LGPL and BSD Modified license: downloaded from http://www.randelshofer.ch/quaqua/
-lib/htsjdk-1.120-SNAPSHOT.jar: built from maven master at https://github.com/samtools/htsjdk MIT License to Broad Institute
+lib/htsjdk-1.120-SNAPSHOT.jar: (currently not required for 2.10) built from maven master at https://github.com/samtools/htsjdk MIT License to Broad Institute
+
+lib/biojava-core-4.1.0.jar LGPLv2.1 - latest license at https://github.com/biojava/biojava/blob/master/LICENSE
+
+lib/biojava-ontology-4.1.0.jar LGPLv2.1 - latest license at https://github.com/biojava/biojava/blob/master/LICENSE
Additional dependencies
examples/javascript/jquery*.js : BSD license
examples/javascript/jshashtable-2.1.js : Apache License
-Tools not bundled with Jalview source
-jbake (http://jbake.org MIT license) was used to build the JalviewLite examples pages found in the examples directory.
-
<target name="compileApplet" depends="init,clean">
<mkdir dir="${outputDir}" />
- <javac source="${javac.source}" target="${javac.target}" srcdir="${sourceDir}" destdir="${outputDir}" debug="${javac.debug}" classpathref="jalviewlite.deps" includes="jalview/appletgui/**" excludes="ext/**,gui/**,jbgui/**,MCview/**,org/**,vamsas/**,jalview/ext/rbvi/**,jalview/ext/paradise/**,jalview/ext/ensembl/**,jalview/ext/so" />
+ <javac source="${javac.source}" target="${javac.target}" srcdir="${sourceDir}" destdir="${outputDir}" debug="${javac.debug}" classpathref="jalviewlite.deps" includes="jalview/appletgui/**" excludes="ext/**,gui/**,jbgui/**,MCview/**,org/**,vamsas/**,jalview/ext/rbvi/**,jalview/ext/paradise/**,jalview/ext/ensembl/**,jalview/ext/so/**" />
</target>
<target name="packageApplet" depends="compileApplet, buildPropertiesFile">
<!DOCTYPE html>
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ -->
<html>
<head>
<title>BioJSON Format Documentation</title>
</html>
-
\ No newline at end of file
+
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ -->
<!DOCTYPE html>
<html>
<head>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML+RDFa 1.1//EN">
-<html lang="en" dir="ltr" version="HTML+RDFa 1.1"
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ -->
+ <html lang="en" dir="ltr" version="HTML+RDFa 1.1"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/terms/"
xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:og="http://ogp.me/ns#"
<html>
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ -->
<header><title>BioJS viewer</title></header>
<body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML+RDFa 1.1//EN">
-<html lang="en" dir="ltr" version="HTML+RDFa 1.1"
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ -->
+ <html lang="en" dir="ltr" version="HTML+RDFa 1.1"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/terms/"
xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:og="http://ogp.me/ns#"
--- /dev/null
+>a
+QQQ
+>b
+QQQ
+>c
+QQQ
+>d
+QQQ
+>e
+QQQ
+>f
+QQQ
+>g
+QQQ
+>h
+QQQ
--- /dev/null
+feature_1 8c25cd
+
+STARTGROUP Jalview
+feature_1 a -1 1 1 feature_1 0.4
+feature_1 a -1 2 2 feature_1 0.6
+feature_1 b -1 1 1 feature_1 0.8
+feature_1 b -1 2 2 feature_1 1.0
+feature_1 c -1 1 1 feature_1 1.5
+feature_1 d -1 1 1 feature_1 2.0
+feature_1 e -1 1 1 feature_1 3.0
+ENDGROUP Jalview
<html>
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ -->
<input type="hidden" name="seqData" id="seqData" value='{"seqs":[{"name":"FER_CAPAA/1-97","start":1,"svid":"1.0","end":97,"id":"4362914","seq":"-----------------------------------------------------------ASYKVKLITPDGPIEFDCPDDVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDVTIETHKEAELVG-","order":1},{"name":"FER_CAPAN/1-144","start":1,"svid":"1.0","end":144,"id":"87519910","seq":"MA------SVSATMISTSFMPRKPAVTSL-KPIPNVGE--ALFGLKS-A--NGGKVTCMASYKVKLITPDGPIEFDCPDNVYILDQAEEAGHDLPYSCRAGSCSSCAGKIAGGAVDQTDGNFLDDDQLEEGWVLTCVAYPQSDVTIETHKEAELVG-","order":2},{"name":"FER1_SOLLC/1-144","start":1,"svid":"1.0","end":144,"id":"706449716","seq":"MA------SISGTMISTSFLPRKPAVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPEGPIEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGSVDQSDGNFLDEDQEAAGFVLTCVAYPKGDVTIETHKEEELTA-","order":3},{"name":"Q93XJ9_SOLTU/1-144","start":1,"svid":"1.0","end":144,"id":"1704607829","seq":"MA------SISGTMISTSFLPRKPVVTSL-KAISNVGE--ALFGLKS-G--RNGRITCMASYKVKLITPDGPIEFECPDDVYILDQAEEEGHDLPYSCRAGSCSSCAGKVTAGTVDQSDGKFLDDDQEAAGFVLTCVAYPKCDVTIETHKEEELTA-","order":4},{"name":"FER1_PEA/1-149","start":1,"svid":"1.0","end":149,"id":"1901660614","seq":"MATT---PALYGTAVSTSFLRTQPMPMSV-TTTKAFSN--GFLGLKT-SLKRGDLAVAMASYKVKLVTPDGTQEFECPSDVYILDHAEEVGIDLPYSCRAGSCSSCAGKVVGGEVDQSDGSFLDDEQIEAGFVLTCVAYPTSDVVIETHKEEDLTA-","order":5},{"name":"Q7XA98_TRIPR/1-152","start":1,"svid":"1.0","end":152,"id":"1329985289","seq":"MATT---PALYGTAVSTSFMRRQPVPMSV-ATTTTTKAFPSGFGLKSVSTKRGDLAVAMATYKVKLITPEGPQEFDCPDDVYILDHAEEVGIELPYSCRAGSCSSCAGKVVNGNVNQEDGSFLDDEQIEGGWVLTCVAFPTSDVTIETHKEEELTA-","order":6},{"name":"FER1_MESCR/1-148","start":1,"svid":"1.0","end":148,"id":"966876644","seq":"MAAT--TAALSGATMSTAFAPK--TPPMTAALPTNVGR--ALFGLKS-SASR-GRVTAMAAYKVTLVTPEGKQELECPDDVYILDAAEEAGIDLPYSCRAGSCSSCAGKVTSGSVNQDDGSFLDDDQIKEGWVLTCVAYPTGDVTIETHKEEELTA-","order":7},{"name":"FER1_SPIOL/1-147","start":1,"svid":"1.0","end":147,"id":"235809389","seq":"MAAT--TTTMMG--MATTFVPKPQAPPMMAALPSNTGR--SLFGLKT-GSR--GGRMTMAAYKVTLVTPTGNVEFQCPDDVYILDAAEEEGIDLPYSCRAGSCSSCAGKLKTGSLNQDDQSFLDDDQIDEGWVLTCAAYPVSDVTIETHKEEELTA-","order":8},{"name":"FER3_RAPSA/1-96","start":1,"svid":"1.0","end":96,"id":"924845395","seq":"-----------------------------------------------------------ATYKVKFITPEGEQEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDDQIAEGFVLTCAAYPTSDVTIETHREEDMV--","order":9},{"name":"FER1_ARATH/1-148","start":1,"svid":"1.0","end":148,"id":"1472020737","seq":"MAST----ALSSAIVGTSFIRRSPAPISLRSLPSANTQ--SLFGLKS-GTARGGRVTAMATYKVKFITPEGELEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSFLDDEQIGEGFVLTCAAYPTSDVTIETHKEEDIV--","order":10},{"name":"FER_BRANA/1-96","start":1,"svid":"1.0","end":96,"id":"1690335343","seq":"-----------------------------------------------------------ATYKVKFITPEGEQEVECDDDVYVLDAAEEAGIDLPYSCRAGSCSSCAGKVVSGFVDQSDESFLDDDQIAEGFVLTCAAYPTSDVTIETHKEEELV--","order":11},{"name":"FER2_ARATH/1-148","start":1,"svid":"1.0","end":148,"id":"467823576","seq":"MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGEQEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDDEQMSEGYVLTCVAYPTSDVVIETHKEEAIM--","order":12},{"name":"Q93Z60_ARATH/1-118","start":1,"svid":"1.0","end":118,"id":"752877418","seq":"MAST----ALSSAIVSTSFLRRQQTPISLRSLPFANTQ--SLFGLKS-STARGGRVTAMATYKVKFITPEGEQEVECEEDVYVLDAAEEAGLDLPYSCRAGSCSSCAGKVVSGSIDQSDQSFLDD--------------------------------","order":13},{"name":"FER1_MAIZE/1-150","start":1,"svid":"1.0","end":150,"id":"299304633","seq":"MATVLGSPRAPAFFFSSSSLRAAPAPTAV--ALPAAKV--GIMGRSA-SSRR--RLRAQATYNVKLITPEGEVELQVPDDVYILDQAEEDGIDLPYSCRAGSCSSCAGKVVSGSVDQSDQSYLDDGQIADGWVLTCHAYPTSDVVIETHKEEELTGA","order":14},{"name":"O80429_MAIZE/1-140","start":1,"svid":"1.0","end":140,"id":"1991448556","seq":"MAAT---------ALSMSILR---APPPCFSSPLRLRV--AVAKPLA-APMRRQLLRAQATYNVKLITPEGEVELQVPDDVYILDFAEEEGIDLPFSCRAGSCSSCAGKVVSGSVDQSDQSFLNDNQVADGWVLTCAAYPTSDVVIETHKEDDLL--","order":15},{"name":"1A70|/1-97","start":1,"svid":"1.0","end":97,"id":"2114395721","seq":"-----------------------------------------------------------AAYKVTLVTPTGNVEFQCPDDVYILDAAEEEGIDLPYSCRAGSCSSCAGKLKTGSLNQDDQSFLDDDQIDEGWVLTCAAYPVSDVTIETHKKEELTA","order":16}],"appSettings":{"globalColorScheme":"foo","webStartUrl":"www.jalview.org/services/launchApp","application":"Jalview","hiddenSeqs":"2114395721","showSeqFeatures":"false","version":"2.9"},"seqGroups":[{"displayText":true,"startRes":59,"groupName":"ferredoxin","endRes":124,"colourText":false,"seqsHash":["1472020737","299304633","966876644","1901660614","706449716","235809389","467823576","924845395","1690335343","4362914","87519910","752877418","1329985289","1991448556","1704607829"],"svid":"1.0","showNonconserved":false,"colourScheme":"Zappo","displayBoxes":true}],"alignAnnotation":[{"svid":"1.0","annotations":[{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"1","value":1,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"2","value":2,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"3","value":3,"secondaryStructure":"H"},{"displayCharacter":"","value":0,"secondaryStructure":"H"},{"displayCharacter":"","value":0,"secondaryStructure":"H"},{"displayCharacter":"","value":0,"secondaryStructure":"H"},{"displayCharacter":"","value":0,"secondaryStructure":"H"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"description":"Fe","displayCharacter":"Fe","value":0,"secondaryStructure":" "},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"description":"Fe","displayCharacter":"Fe","value":0,"secondaryStructure":" "},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"description":"Fe","displayCharacter":"Fe","value":0,"secondaryStructure":" "},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"4","value":4,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"5","value":5,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"6","value":6,"secondaryStructure":"H"},{"displayCharacter":"","value":0,"secondaryStructure":"H"},{"displayCharacter":"","value":0,"secondaryStructure":"H"},{"displayCharacter":"","value":0,"secondaryStructure":"H"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"7","value":7,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"description":"Fe","displayCharacter":"Fe","value":0,"secondaryStructure":" "},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"9","value":9,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"E"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"}],"description":"New description","label":"Secondary Structure"},{"svid":"1.0","annotations":[{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"description":"Fe","displayCharacter":"Fe","value":0,"secondaryStructure":" "},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"description":"Fe","displayCharacter":"Fe","value":0,"secondaryStructure":" "},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"description":"Fe","displayCharacter":"Fe","value":0,"secondaryStructure":" "},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"description":"Fe","displayCharacter":"Fe","value":0,"secondaryStructure":" "},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"},{"displayCharacter":"","value":0,"secondaryStructure":"\u0000"}],"description":"New description","label":"Iron Sulphur Contacts"}],"svid":"1.0","seqFeatures":[{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA: 1 1a70 ","xStart":59,"xEnd":60,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA: 2 1a70 ","xStart":60,"xEnd":61,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TYR: 3 1a70 ","xStart":61,"xEnd":62,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LYS: 4 1a70 ","xStart":62,"xEnd":63,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL: 5 1a70 ","xStart":63,"xEnd":64,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR: 6 1a70 ","xStart":64,"xEnd":65,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU: 7 1a70 ","xStart":65,"xEnd":66,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL: 8 1a70 ","xStart":66,"xEnd":67,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR: 9 1a70 ","xStart":67,"xEnd":68,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PRO: 10 1a70 ","xStart":68,"xEnd":69,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR: 11 1a70 ","xStart":69,"xEnd":70,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY: 12 1a70 ","xStart":70,"xEnd":71,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASN: 13 1a70 ","xStart":71,"xEnd":72,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL: 14 1a70 ","xStart":72,"xEnd":73,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU: 15 1a70 ","xStart":73,"xEnd":74,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PHE: 16 1a70 ","xStart":74,"xEnd":75,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLN: 17 1a70 ","xStart":75,"xEnd":76,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS: 18 1a70 ","xStart":76,"xEnd":77,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PRO: 19 1a70 ","xStart":77,"xEnd":78,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP: 20 1a70 ","xStart":78,"xEnd":79,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP: 21 1a70 ","xStart":79,"xEnd":80,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL: 22 1a70 ","xStart":80,"xEnd":81,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TYR: 23 1a70 ","xStart":81,"xEnd":82,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ILE: 24 1a70 ","xStart":82,"xEnd":83,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU: 25 1a70 ","xStart":83,"xEnd":84,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP: 26 1a70 ","xStart":84,"xEnd":85,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA: 27 1a70 ","xStart":85,"xEnd":86,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA: 28 1a70 ","xStart":86,"xEnd":87,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU: 29 1a70 ","xStart":87,"xEnd":88,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU: 30 1a70 ","xStart":88,"xEnd":89,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU: 31 1a70 ","xStart":89,"xEnd":90,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY: 32 1a70 ","xStart":90,"xEnd":91,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ILE: 33 1a70 ","xStart":91,"xEnd":92,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP: 34 1a70 ","xStart":92,"xEnd":93,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU: 35 1a70 ","xStart":93,"xEnd":94,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PRO: 36 1a70 ","xStart":94,"xEnd":95,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TYR: 37 1a70 ","xStart":95,"xEnd":96,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER: 38 1a70 ","xStart":96,"xEnd":97,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS: 39 1a70 ","xStart":97,"xEnd":98,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ARG: 40 1a70 ","xStart":98,"xEnd":99,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA: 41 1a70 ","xStart":99,"xEnd":100,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY: 42 1a70 ","xStart":100,"xEnd":101,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER: 43 1a70 ","xStart":101,"xEnd":102,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS: 44 1a70 ","xStart":102,"xEnd":103,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER: 45 1a70 ","xStart":103,"xEnd":104,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER: 46 1a70 ","xStart":104,"xEnd":105,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS: 47 1a70 ","xStart":105,"xEnd":106,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA: 48 1a70 ","xStart":106,"xEnd":107,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY: 49 1a70 ","xStart":107,"xEnd":108,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LYS: 50 1a70 ","xStart":108,"xEnd":109,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU: 51 1a70 ","xStart":109,"xEnd":110,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LYS: 52 1a70 ","xStart":110,"xEnd":111,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR: 53 1a70 ","xStart":111,"xEnd":112,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY: 54 1a70 ","xStart":112,"xEnd":113,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER: 55 1a70 ","xStart":113,"xEnd":114,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU: 56 1a70 ","xStart":114,"xEnd":115,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASN: 57 1a70 ","xStart":115,"xEnd":116,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLN: 58 1a70 ","xStart":116,"xEnd":117,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP: 59 1a70 ","xStart":117,"xEnd":118,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP: 60 1a70 ","xStart":118,"xEnd":119,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLN: 61 1a70 ","xStart":119,"xEnd":120,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER: 62 1a70 ","xStart":120,"xEnd":121,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PHE: 63 1a70 ","xStart":121,"xEnd":122,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU: 64 1a70 ","xStart":122,"xEnd":123,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP: 65 1a70 ","xStart":123,"xEnd":124,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP: 66 1a70 ","xStart":124,"xEnd":125,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP: 67 1a70 ","xStart":125,"xEnd":126,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLN: 68 1a70 ","xStart":126,"xEnd":127,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ILE: 69 1a70 ","xStart":127,"xEnd":128,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP: 70 1a70 ","xStart":128,"xEnd":129,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU: 71 1a70 ","xStart":129,"xEnd":130,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY: 72 1a70 ","xStart":130,"xEnd":131,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TRP: 73 1a70 ","xStart":131,"xEnd":132,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL: 74 1a70 ","xStart":132,"xEnd":133,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU: 75 1a70 ","xStart":133,"xEnd":134,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR: 76 1a70 ","xStart":134,"xEnd":135,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS: 77 1a70 ","xStart":135,"xEnd":136,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA: 78 1a70 ","xStart":136,"xEnd":137,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA: 79 1a70 ","xStart":137,"xEnd":138,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TYR: 80 1a70 ","xStart":138,"xEnd":139,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PRO: 81 1a70 ","xStart":139,"xEnd":140,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL: 82 1a70 ","xStart":140,"xEnd":141,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER: 83 1a70 ","xStart":141,"xEnd":142,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP: 84 1a70 ","xStart":142,"xEnd":143,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL: 85 1a70 ","xStart":143,"xEnd":144,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR: 86 1a70 ","xStart":144,"xEnd":145,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ILE: 87 1a70 ","xStart":145,"xEnd":146,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU: 88 1a70 ","xStart":146,"xEnd":147,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR: 89 1a70 ","xStart":147,"xEnd":148,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"HIS: 90 1a70 ","xStart":148,"xEnd":149,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LYS: 91 1a70 ","xStart":149,"xEnd":150,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU: 93 1a70 ","xStart":151,"xEnd":152,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU: 94 1a70 ","xStart":152,"xEnd":153,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU: 95 1a70 ","xStart":153,"xEnd":154,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR: 96 1a70 ","xStart":154,"xEnd":155,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA: 97 1a70 ","xStart":155,"xEnd":156,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:1 1a70 ","xStart":59,"xEnd":60,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:2 1a70 ","xStart":60,"xEnd":61,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TYR:3 1a70 ","xStart":61,"xEnd":62,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LYS:4 1a70 ","xStart":62,"xEnd":63,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:5 1a70 ","xStart":63,"xEnd":64,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:6 1a70 ","xStart":64,"xEnd":65,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:7 1a70 ","xStart":65,"xEnd":66,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:8 1a70 ","xStart":66,"xEnd":67,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:9 1a70 ","xStart":67,"xEnd":68,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PRO:10 1a70 ","xStart":68,"xEnd":69,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:11 1a70 ","xStart":69,"xEnd":70,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY:12 1a70 ","xStart":70,"xEnd":71,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASN:13 1a70 ","xStart":71,"xEnd":72,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:14 1a70 ","xStart":72,"xEnd":73,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:15 1a70 ","xStart":73,"xEnd":74,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PHE:16 1a70 ","xStart":74,"xEnd":75,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLN:17 1a70 ","xStart":75,"xEnd":76,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS:18 1a70 ","xStart":76,"xEnd":77,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PRO:19 1a70 ","xStart":77,"xEnd":78,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:20 1a70 ","xStart":78,"xEnd":79,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:21 1a70 ","xStart":79,"xEnd":80,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:22 1a70 ","xStart":80,"xEnd":81,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TYR:23 1a70 ","xStart":81,"xEnd":82,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ILE:24 1a70 ","xStart":82,"xEnd":83,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:25 1a70 ","xStart":83,"xEnd":84,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:26 1a70 ","xStart":84,"xEnd":85,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:27 1a70 ","xStart":85,"xEnd":86,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:28 1a70 ","xStart":86,"xEnd":87,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:29 1a70 ","xStart":87,"xEnd":88,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:30 1a70 ","xStart":88,"xEnd":89,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:31 1a70 ","xStart":89,"xEnd":90,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY:32 1a70 ","xStart":90,"xEnd":91,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ILE:33 1a70 ","xStart":91,"xEnd":92,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:34 1a70 ","xStart":92,"xEnd":93,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:35 1a70 ","xStart":93,"xEnd":94,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PRO:36 1a70 ","xStart":94,"xEnd":95,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TYR:37 1a70 ","xStart":95,"xEnd":96,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:38 1a70 ","xStart":96,"xEnd":97,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS:39 1a70 ","xStart":97,"xEnd":98,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ARG:40 1a70 ","xStart":98,"xEnd":99,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:41 1a70 ","xStart":99,"xEnd":100,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY:42 1a70 ","xStart":100,"xEnd":101,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:43 1a70 ","xStart":101,"xEnd":102,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS:44 1a70 ","xStart":102,"xEnd":103,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:45 1a70 ","xStart":103,"xEnd":104,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:46 1a70 ","xStart":104,"xEnd":105,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS:47 1a70 ","xStart":105,"xEnd":106,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:48 1a70 ","xStart":106,"xEnd":107,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY:49 1a70 ","xStart":107,"xEnd":108,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LYS:50 1a70 ","xStart":108,"xEnd":109,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:51 1a70 ","xStart":109,"xEnd":110,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LYS:52 1a70 ","xStart":110,"xEnd":111,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:53 1a70 ","xStart":111,"xEnd":112,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY:54 1a70 ","xStart":112,"xEnd":113,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:55 1a70 ","xStart":113,"xEnd":114,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:56 1a70 ","xStart":114,"xEnd":115,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASN:57 1a70 ","xStart":115,"xEnd":116,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLN:58 1a70 ","xStart":116,"xEnd":117,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:59 1a70 ","xStart":117,"xEnd":118,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:60 1a70 ","xStart":118,"xEnd":119,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLN:61 1a70 ","xStart":119,"xEnd":120,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:62 1a70 ","xStart":120,"xEnd":121,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PHE:63 1a70 ","xStart":121,"xEnd":122,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:64 1a70 ","xStart":122,"xEnd":123,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:65 1a70 ","xStart":123,"xEnd":124,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:66 1a70 ","xStart":124,"xEnd":125,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:67 1a70 ","xStart":125,"xEnd":126,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLN:68 1a70 ","xStart":126,"xEnd":127,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ILE:69 1a70 ","xStart":127,"xEnd":128,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:70 1a70 ","xStart":128,"xEnd":129,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:71 1a70 ","xStart":129,"xEnd":130,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY:72 1a70 ","xStart":130,"xEnd":131,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TRP:73 1a70 ","xStart":131,"xEnd":132,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:74 1a70 ","xStart":132,"xEnd":133,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:75 1a70 ","xStart":133,"xEnd":134,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:76 1a70 ","xStart":134,"xEnd":135,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS:77 1a70 ","xStart":135,"xEnd":136,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:78 1a70 ","xStart":136,"xEnd":137,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:79 1a70 ","xStart":137,"xEnd":138,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TYR:80 1a70 ","xStart":138,"xEnd":139,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PRO:81 1a70 ","xStart":139,"xEnd":140,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:82 1a70 ","xStart":140,"xEnd":141,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:83 1a70 ","xStart":141,"xEnd":142,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:84 1a70 ","xStart":142,"xEnd":143,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:85 1a70 ","xStart":143,"xEnd":144,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:86 1a70 ","xStart":144,"xEnd":145,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ILE:87 1a70 ","xStart":145,"xEnd":146,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:88 1a70 ","xStart":146,"xEnd":147,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:89 1a70 ","xStart":147,"xEnd":148,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"HIS:90 1a70 ","xStart":148,"xEnd":149,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LYS:91 1a70 ","xStart":149,"xEnd":150,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:93 1a70 ","xStart":151,"xEnd":152,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:94 1a70 ","xStart":152,"xEnd":153,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:95 1a70 ","xStart":153,"xEnd":154,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:96 1a70 ","xStart":154,"xEnd":155,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"235809389","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:97 1a70 ","xStart":155,"xEnd":156,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ALA: 1 1a70 ","xStart":59,"xEnd":60,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ALA: 2 1a70 ","xStart":60,"xEnd":61,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"TYR: 3 1a70 ","xStart":61,"xEnd":62,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"LYS: 4 1a70 ","xStart":62,"xEnd":63,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"VAL: 5 1a70 ","xStart":63,"xEnd":64,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"THR: 6 1a70 ","xStart":64,"xEnd":65,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"LEU: 7 1a70 ","xStart":65,"xEnd":66,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"VAL: 8 1a70 ","xStart":66,"xEnd":67,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"THR: 9 1a70 ","xStart":67,"xEnd":68,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"PRO: 10 1a70 ","xStart":68,"xEnd":69,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"THR: 11 1a70 ","xStart":69,"xEnd":70,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLY: 12 1a70 ","xStart":70,"xEnd":71,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ASN: 13 1a70 ","xStart":71,"xEnd":72,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"VAL: 14 1a70 ","xStart":72,"xEnd":73,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLU: 15 1a70 ","xStart":73,"xEnd":74,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"PHE: 16 1a70 ","xStart":74,"xEnd":75,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLN: 17 1a70 ","xStart":75,"xEnd":76,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"CYS: 18 1a70 ","xStart":76,"xEnd":77,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"PRO: 19 1a70 ","xStart":77,"xEnd":78,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ASP: 20 1a70 ","xStart":78,"xEnd":79,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ASP: 21 1a70 ","xStart":79,"xEnd":80,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"VAL: 22 1a70 ","xStart":80,"xEnd":81,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"TYR: 23 1a70 ","xStart":81,"xEnd":82,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ILE: 24 1a70 ","xStart":82,"xEnd":83,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"LEU: 25 1a70 ","xStart":83,"xEnd":84,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ASP: 26 1a70 ","xStart":84,"xEnd":85,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ALA: 27 1a70 ","xStart":85,"xEnd":86,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ALA: 28 1a70 ","xStart":86,"xEnd":87,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLU: 29 1a70 ","xStart":87,"xEnd":88,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLU: 30 1a70 ","xStart":88,"xEnd":89,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLU: 31 1a70 ","xStart":89,"xEnd":90,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLY: 32 1a70 ","xStart":90,"xEnd":91,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ILE: 33 1a70 ","xStart":91,"xEnd":92,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ASP: 34 1a70 ","xStart":92,"xEnd":93,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"LEU: 35 1a70 ","xStart":93,"xEnd":94,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"PRO: 36 1a70 ","xStart":94,"xEnd":95,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"TYR: 37 1a70 ","xStart":95,"xEnd":96,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"SER: 38 1a70 ","xStart":96,"xEnd":97,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"CYS: 39 1a70 ","xStart":97,"xEnd":98,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ARG: 40 1a70 ","xStart":98,"xEnd":99,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ALA: 41 1a70 ","xStart":99,"xEnd":100,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLY: 42 1a70 ","xStart":100,"xEnd":101,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"SER: 43 1a70 ","xStart":101,"xEnd":102,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"CYS: 44 1a70 ","xStart":102,"xEnd":103,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"SER: 45 1a70 ","xStart":103,"xEnd":104,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"SER: 46 1a70 ","xStart":104,"xEnd":105,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"CYS: 47 1a70 ","xStart":105,"xEnd":106,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ALA: 48 1a70 ","xStart":106,"xEnd":107,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLY: 49 1a70 ","xStart":107,"xEnd":108,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"LYS: 50 1a70 ","xStart":108,"xEnd":109,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"LEU: 51 1a70 ","xStart":109,"xEnd":110,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"LYS: 52 1a70 ","xStart":110,"xEnd":111,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"THR: 53 1a70 ","xStart":111,"xEnd":112,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLY: 54 1a70 ","xStart":112,"xEnd":113,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"SER: 55 1a70 ","xStart":113,"xEnd":114,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"LEU: 56 1a70 ","xStart":114,"xEnd":115,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ASN: 57 1a70 ","xStart":115,"xEnd":116,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLN: 58 1a70 ","xStart":116,"xEnd":117,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ASP: 59 1a70 ","xStart":117,"xEnd":118,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ASP: 60 1a70 ","xStart":118,"xEnd":119,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLN: 61 1a70 ","xStart":119,"xEnd":120,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"SER: 62 1a70 ","xStart":120,"xEnd":121,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"PHE: 63 1a70 ","xStart":121,"xEnd":122,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"LEU: 64 1a70 ","xStart":122,"xEnd":123,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ASP: 65 1a70 ","xStart":123,"xEnd":124,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ASP: 66 1a70 ","xStart":124,"xEnd":125,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ASP: 67 1a70 ","xStart":125,"xEnd":126,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLN: 68 1a70 ","xStart":126,"xEnd":127,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ILE: 69 1a70 ","xStart":127,"xEnd":128,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ASP: 70 1a70 ","xStart":128,"xEnd":129,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLU: 71 1a70 ","xStart":129,"xEnd":130,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLY: 72 1a70 ","xStart":130,"xEnd":131,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"TRP: 73 1a70 ","xStart":131,"xEnd":132,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"VAL: 74 1a70 ","xStart":132,"xEnd":133,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"LEU: 75 1a70 ","xStart":133,"xEnd":134,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"THR: 76 1a70 ","xStart":134,"xEnd":135,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"CYS: 77 1a70 ","xStart":135,"xEnd":136,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ALA: 78 1a70 ","xStart":136,"xEnd":137,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ALA: 79 1a70 ","xStart":137,"xEnd":138,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"TYR: 80 1a70 ","xStart":138,"xEnd":139,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"PRO: 81 1a70 ","xStart":139,"xEnd":140,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"VAL: 82 1a70 ","xStart":140,"xEnd":141,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"SER: 83 1a70 ","xStart":141,"xEnd":142,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ASP: 84 1a70 ","xStart":142,"xEnd":143,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"VAL: 85 1a70 ","xStart":143,"xEnd":144,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"THR: 86 1a70 ","xStart":144,"xEnd":145,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ILE: 87 1a70 ","xStart":145,"xEnd":146,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLU: 88 1a70 ","xStart":146,"xEnd":147,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"THR: 89 1a70 ","xStart":147,"xEnd":148,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"HIS: 90 1a70 ","xStart":148,"xEnd":149,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"LYS: 91 1a70 ","xStart":149,"xEnd":150,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"LYS: 92 1a70 ","xStart":150,"xEnd":151,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLU: 93 1a70 ","xStart":151,"xEnd":152,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"GLU: 94 1a70 ","xStart":152,"xEnd":153,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"LEU: 95 1a70 ","xStart":153,"xEnd":154,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"THR: 96 1a70 ","xStart":154,"xEnd":155,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":""},"svid":"1.0","description":"ALA: 97 1a70 ","xStart":155,"xEnd":156,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:1 1a70 ","xStart":59,"xEnd":60,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:2 1a70 ","xStart":60,"xEnd":61,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TYR:3 1a70 ","xStart":61,"xEnd":62,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LYS:4 1a70 ","xStart":62,"xEnd":63,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:5 1a70 ","xStart":63,"xEnd":64,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:6 1a70 ","xStart":64,"xEnd":65,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:7 1a70 ","xStart":65,"xEnd":66,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:8 1a70 ","xStart":66,"xEnd":67,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:9 1a70 ","xStart":67,"xEnd":68,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PRO:10 1a70 ","xStart":68,"xEnd":69,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:11 1a70 ","xStart":69,"xEnd":70,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY:12 1a70 ","xStart":70,"xEnd":71,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASN:13 1a70 ","xStart":71,"xEnd":72,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:14 1a70 ","xStart":72,"xEnd":73,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:15 1a70 ","xStart":73,"xEnd":74,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PHE:16 1a70 ","xStart":74,"xEnd":75,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLN:17 1a70 ","xStart":75,"xEnd":76,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS:18 1a70 ","xStart":76,"xEnd":77,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PRO:19 1a70 ","xStart":77,"xEnd":78,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:20 1a70 ","xStart":78,"xEnd":79,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:21 1a70 ","xStart":79,"xEnd":80,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:22 1a70 ","xStart":80,"xEnd":81,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TYR:23 1a70 ","xStart":81,"xEnd":82,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ILE:24 1a70 ","xStart":82,"xEnd":83,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:25 1a70 ","xStart":83,"xEnd":84,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:26 1a70 ","xStart":84,"xEnd":85,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:27 1a70 ","xStart":85,"xEnd":86,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:28 1a70 ","xStart":86,"xEnd":87,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:29 1a70 ","xStart":87,"xEnd":88,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:30 1a70 ","xStart":88,"xEnd":89,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:31 1a70 ","xStart":89,"xEnd":90,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY:32 1a70 ","xStart":90,"xEnd":91,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ILE:33 1a70 ","xStart":91,"xEnd":92,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:34 1a70 ","xStart":92,"xEnd":93,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:35 1a70 ","xStart":93,"xEnd":94,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PRO:36 1a70 ","xStart":94,"xEnd":95,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TYR:37 1a70 ","xStart":95,"xEnd":96,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:38 1a70 ","xStart":96,"xEnd":97,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS:39 1a70 ","xStart":97,"xEnd":98,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ARG:40 1a70 ","xStart":98,"xEnd":99,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:41 1a70 ","xStart":99,"xEnd":100,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY:42 1a70 ","xStart":100,"xEnd":101,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:43 1a70 ","xStart":101,"xEnd":102,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS:44 1a70 ","xStart":102,"xEnd":103,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:45 1a70 ","xStart":103,"xEnd":104,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:46 1a70 ","xStart":104,"xEnd":105,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS:47 1a70 ","xStart":105,"xEnd":106,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:48 1a70 ","xStart":106,"xEnd":107,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY:49 1a70 ","xStart":107,"xEnd":108,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LYS:50 1a70 ","xStart":108,"xEnd":109,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:51 1a70 ","xStart":109,"xEnd":110,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LYS:52 1a70 ","xStart":110,"xEnd":111,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:53 1a70 ","xStart":111,"xEnd":112,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY:54 1a70 ","xStart":112,"xEnd":113,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:55 1a70 ","xStart":113,"xEnd":114,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:56 1a70 ","xStart":114,"xEnd":115,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASN:57 1a70 ","xStart":115,"xEnd":116,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLN:58 1a70 ","xStart":116,"xEnd":117,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:59 1a70 ","xStart":117,"xEnd":118,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:60 1a70 ","xStart":118,"xEnd":119,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLN:61 1a70 ","xStart":119,"xEnd":120,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:62 1a70 ","xStart":120,"xEnd":121,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PHE:63 1a70 ","xStart":121,"xEnd":122,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:64 1a70 ","xStart":122,"xEnd":123,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:65 1a70 ","xStart":123,"xEnd":124,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:66 1a70 ","xStart":124,"xEnd":125,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:67 1a70 ","xStart":125,"xEnd":126,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLN:68 1a70 ","xStart":126,"xEnd":127,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ILE:69 1a70 ","xStart":127,"xEnd":128,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:70 1a70 ","xStart":128,"xEnd":129,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:71 1a70 ","xStart":129,"xEnd":130,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLY:72 1a70 ","xStart":130,"xEnd":131,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TRP:73 1a70 ","xStart":131,"xEnd":132,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:74 1a70 ","xStart":132,"xEnd":133,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:75 1a70 ","xStart":133,"xEnd":134,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:76 1a70 ","xStart":134,"xEnd":135,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"CYS:77 1a70 ","xStart":135,"xEnd":136,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:78 1a70 ","xStart":136,"xEnd":137,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:79 1a70 ","xStart":137,"xEnd":138,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"TYR:80 1a70 ","xStart":138,"xEnd":139,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"PRO:81 1a70 ","xStart":139,"xEnd":140,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:82 1a70 ","xStart":140,"xEnd":141,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"SER:83 1a70 ","xStart":141,"xEnd":142,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ASP:84 1a70 ","xStart":142,"xEnd":143,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"VAL:85 1a70 ","xStart":143,"xEnd":144,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:86 1a70 ","xStart":144,"xEnd":145,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ILE:87 1a70 ","xStart":145,"xEnd":146,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:88 1a70 ","xStart":146,"xEnd":147,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:89 1a70 ","xStart":147,"xEnd":148,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"HIS:90 1a70 ","xStart":148,"xEnd":149,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LYS:91 1a70 ","xStart":149,"xEnd":150,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LYS:92 1a70 ","xStart":150,"xEnd":151,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:93 1a70 ","xStart":151,"xEnd":152,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"GLU:94 1a70 ","xStart":152,"xEnd":153,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"LEU:95 1a70 ","xStart":153,"xEnd":154,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"THR:96 1a70 ","xStart":154,"xEnd":155,"type":"RESNUM"},{"fillColor":"#ffffff","score":0,"sequenceRef":"2114395721","featureGroup":"1a70","otherDetails":{"status":"IEA:jalview"},"svid":"1.0","description":"ALA:97 1a70 ","xStart":155,"xEnd":156,"type":"RESNUM"}]}'>
<style type="text/css"> div.parent{ width:100%;<!-- overflow: auto; -->}
div.titlex{ width:11%; float: left; }
<strong>Normalise Consensus Logo</strong> to scale all columns of the
logo to the same height.
- <p>
- <strong>Group Consensus</strong><br>
- If sequence groups have been defined, then selecting option 'Group Consensus' in the <a href="../menus/alwannotation.html">Annotations menu</a> will
- result in Consensus being calculated for each group, as well as the alignment as a whole.
+ <p>
+ <strong>Group Consensus</strong><br> If sequence groups have
+ been defined, then selecting option 'Group Consensus' in the <a
+ href="../menus/alwannotation.html">Annotations menu</a> will
+ result in Consensus being calculated for each group, as well as the
+ alignment as a whole.
</p>
<p>
<strong>cDNA Consensus</strong>
<b>9</b> No. 6 (745-756)).
</ul>
<em><a
- href="http://www.compbio.dundee.ac.uk/papers/amas/amas3d.html"
- >View an HTML version of the paper</a></em>
+ href="http://www.compbio.dundee.ac.uk/papers/amas/amas3d.html">View
+ an HTML version of the paper</a></em>
</p>
<p>
Conservation is measured as a numerical index reflecting the
<strong>Colouring an alignment by conservation</strong><br>
Conservation scores can be used to colour an alignment. This is
explained further in the help page for <a
- href="../colourSchemes/conservation.html"
- >conservation colouring</a>.
+ href="../colourSchemes/conservation.html">conservation
+ colouring</a>.
</p>
<p>
- <strong>Group conservation</strong><br>
- If sequence groups have been defined, then selecting option 'Group Conservation' in the <a href="../menus/alwannotation.html">Annotations menu</a> will
- result in Conservation being calculated for each group, as well as the alignment as a whole.
+ <strong>Group conservation</strong><br> If sequence groups have
+ been defined, then selecting option 'Group Conservation' in the <a
+ href="../menus/alwannotation.html">Annotations menu</a> will
+ result in Conservation being calculated for each group, as well as
+ the alignment as a whole.
</p>
</body>
</html>
pair of sequences - computed with one of the available score
matrices, such as <a href="scorematrices.html#blosum62">BLOSUM62</a>,
<a href="scorematrices.html#pam250">PAM250</a>, or the <a
- href="scorematrices.html#simplenucleotide"
- >simple single nucleotide substitution matrix</a>. The options
- available for calculation are given in the <strong><em>Change
+ href="scorematrices.html#simplenucleotide">simple single
+ nucleotide substitution matrix</a>. The options available for
+ calculation are given in the <strong><em>Change
Parameters</em></strong> menu.
</p>
<p>
- <em>PCA Calculation modes</em><br /> The default Jalview calculation
- mode (indicated when <em><strong>Jalview PCA
- Calculation</strong></em> is ticked in the <strong><em>Change
+ <em>PCA Calculation modes</em><br /> The default Jalview
+ calculation mode (indicated when <em><strong>Jalview
+ PCA Calculation</strong></em> is ticked in the <strong><em>Change
Parameters</em></strong> menu) is to perform a PCA on a matrix where elements
in the upper diagonal give the sum of scores for mutating in one
direction, and the lower diagonal is the sum of scores for mutating
gives an asymmetric matrix, and a different PCA to a matrix produced
with the method described in the paper by G. Casari, C. Sander and
A. Valencia. Structural Biology volume 2, no. 2, February 1995 (<a
- href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=7749921"
- >pubmed</a>) and implemented at the SeqSpace server at the EBI. This
- method preconditions the matrix by multiplying it with its
- transpose, and can be employed in the PCA viewer by unchecking the <strong><em>Jalview
+ href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=7749921">pubmed</a>)
+ and implemented at the SeqSpace server at the EBI. This method
+ preconditions the matrix by multiplying it with its transpose, and
+ can be employed in the PCA viewer by unchecking the <strong><em>Jalview
PCA Calculation</em></strong> option in the <strong><em>Change
Parameters</em></strong> menu.
</p>
menu or pressing <strong>'CONTROL+D'</strong> brings up a dialog box
asking you to select a threshold. If the percentage identity between
the aligned positions of any two sequences in the visible alignment
- exceeds this value, the shorter sequence is discarded.<br>
- <em>Note:</em> The redundancy calculation is done when the dialog
- box is opened. For large numbers of sequences this can take a long
- time as all pairs have to be compared.
+ exceeds this value, the shorter sequence is discarded.<br> <em>Note:</em>
+ The redundancy calculation is done when the dialog box is opened.
+ For large numbers of sequences this can take a long time as all
+ pairs have to be compared.
</p>
</body>
</html>
organisms that are similar to a newly sequenced gene, or when
searching for structurally similar sequences for use in homology
modelling.</p>
-<p>
+ <p>
<strong>What happens when a reference sequence is defined ?</strong>
</p>
- <p>
- The reference sequence for an alignment is indicated by its ID being
- shown in bold. In addition:</p>
+ <p>The reference sequence for an alignment is indicated by its ID
+ being shown in bold. In addition:</p>
<ul>
<li><strong>Reference sequence numbering</strong>. Instead of
column numbers, the alignment ruler shows the reference sequence
sequence when importing analysis results, such as those returned
from <a href="../webServices/jnet.html">JPred4</a> . A reference
sequence can also be assigned via the <a
- href="../features/annotationsFormat.html#refsandviews">SET_REF</a> command in
- an alignment annotation file.</li>
+ href="../features/annotationsFormat.html#refsandviews">SET_REF</a>
+ command in an alignment annotation file.</li>
</ul>
<p>
<em>Reference sequence based alignment visualisation was
matrix, and (since 2.8.1) is available for Tree and PCA
calculations.</li>
<li><a href="#simplenucleotide">Simple Nucleotide
- Substitution</a> is a (fairly) arbitrary DNA/RNA substitution matrix.</li>
+ Substitution</a> is a (fairly) arbitrary DNA/RNA substitution
+ matrix.</li>
<!-- <li><a href="#conservation">Conservation Matrices</a> A range of matrices for distinguishing amino-acids by physicochemical property conservation.
</li> -->
</ul>
<strong><a name="pam250">PAM250</a></strong><br /> <em><strong>P</strong>ercentage
<strong>A</strong>ccepted <strong>M</strong>utation matrix. PAM250
estimates substitutions after 250% of sites have changed (each
- site can be mutated multple times).<br /> Jalview 2.8.1 introduced
- support for PAM250 based <a href="../calculations/pca.html">PCA</a>
- and <a href="../calculations/tree.html">tree</a> calculations.</em>
+ site can be mutated multple times).<br /> Jalview 2.8.1
+ introduced support for PAM250 based <a
+ href="../calculations/pca.html">PCA</a> and <a
+ href="../calculations/tree.html">tree</a> calculations.</em>
<table border="1">
<tr>
<td></td>
</table>
<strong><em>This nucleotide matrix was introduced in
Jalview 2.8. If you'd like to improve it - please take a look at <a
- href="http://issues.jalview.org/browse/JAL-1027"
- >Issue JAL-1027 - introduce a nucleotide substitution matrix that
+ href="http://issues.jalview.org/browse/JAL-1027">Issue
+ JAL-1027 - introduce a nucleotide substitution matrix that
supports RNA/DNA and ambiguity codes</a>
</em></strong>
</p>
</p>
<p>
This menu appears if the alignment contains any <a
- href="../features/annotationsFormat.html"
- >sequence associated alignment annotation</a> with associated
- score values. Each entry is the label for a distinct group of
- sequence associated annotation scores which can be used for
- sorting.
+ href="../features/annotationsFormat.html">sequence
+ associated alignment annotation</a> with associated score values.
+ Each entry is the label for a distinct group of sequence
+ associated annotation scores which can be used for sorting.
</p>
</ul>
<p>
+ <strong>Sorting according to sequence features</strong><br />
+ Additional sort operations for alignments containing sequence
+ features are provided in the <strong><a
+ href="../features/featuresettings.html#sortbyfeature">Feature
+ Settings</a></strong> dialog, opened via <strong>View→Feature
+ Settings...</strong>
+ <p>
<strong>Reversing the Order</strong>
</p>
<p>Selecting any item from the Sort menu will sort sequences in an
ascending order according to the property defining the sort. If the
same sort is re-applied, the sequences will be sorted in the inverse
- order. In the case of trees and alignment orderings, Jalview will
- remember your last choice for sorting the alignment and only apply
- the inverse ordering if you select the same tree or alignment
- ordering item again.</p>
+ order. In both cases, for sequences which are equivalent under the
+ sort operation, their order will be preserved (since version 2.10).
+ In the case of trees and alignment orderings, Jalview will remember
+ your last choice for sorting the alignment and only apply the
+ inverse ordering if you select the same tree or alignment ordering
+ item again.</p>
</body>
</html>
<strong>Alignment RNA Structure Consensus Annotation</strong>
</p>
- <p>The RNA structure consensus displayed below the alignment gives the
- percentage of valid base pairs per column for the first secondary
- structure annotation shown on the annotation panel. These values are
- shown as a histogram labeled "StrucConsensus", where a
- symbol below each bar indicates whether the majority of base pairs
- are:<ul>
+ <p>The RNA structure consensus displayed below the alignment gives
+ the percentage of valid base pairs per column for the first
+ secondary structure annotation shown on the annotation panel. These
+ values are shown as a histogram labeled "StrucConsensus",
+ where a symbol below each bar indicates whether the majority of base
+ pairs are:
+ <ul>
<li>'(' - Watson-Crick (C:G, A:U/T)</li>
<li>'[' - Non-canonical (a.ka. wobble) (G:U/T)</li>
<li>'{' - Invalid (a.k.a. tertiary) (the rest)</li>
<p>Mousing over the column gives the fraction of pairs classified
as Watson-Crick, Canonical or Invalid.</p>
- <p>By default
- this calculation includes gaps in columns. You can choose to ignore
- gaps in the calculation by right clicking on the label
- "StrucConsensus" to the left of the structure consensus bar
- chart.<br>
-
+ <p>
+ By default this calculation includes gaps in columns. You can choose
+ to ignore gaps in the calculation by right clicking on the label
+ "StrucConsensus" to the left of the structure consensus
+ bar chart.<br>
<p>
<strong>RNA Structure logo</strong><br /> Right-clicking on the
label allows you to enable the structure logo. It is very similar to
Trees are calculated on either the complete alignment, or just the
currently selected group of sequences, using the functions in the <strong>Calculate→Calculate
tree</strong> submenu. Once calculated, trees are displayed in a new <a
- href="../calculations/treeviewer.html"
- >tree viewing window</a>. There are four different calculations, using
- one of two distance measures and constructing the tree from one of
- two algorithms :
+ href="../calculations/treeviewer.html">tree viewing
+ window</a>. There are four different calculations, using one of two
+ distance measures and constructing the tree from one of two
+ algorithms :
</p>
<p>
<strong>Distance Measures</strong>
scores for the residue pairs at each aligned position.
<ul>
<li>For details about each model, see the <a
- href="scorematrices.html"
- >list of built-in score matrices</a>.
+ href="scorematrices.html">list of built-in score
+ matrices</a>.
</li>
</ul></li>
<li><strong>Sequence Feature Similarity</strong><br>Trees
</ul>
<p>
A newly calculated tree will be displayed in a new <a
- href="../calculations/treeviewer.html"
- >tree viewing window</a>. In addition, a new entry with the same tree
- viewer window name will be added in the Sort menu so that the
- alignment can be reordered to reflect the ordering of the leafs of
- the tree. If the tree was calculated on a selected region of the
- alignment, then the title of the tree view will reflect this.
+ href="../calculations/treeviewer.html">tree viewing
+ window</a>. In addition, a new entry with the same tree viewer window
+ name will be added in the Sort menu so that the alignment can be
+ reordered to reflect the ordering of the leafs of the tree. If the
+ tree was calculated on a selected region of the alignment, then the
+ title of the tree view will reflect this.
</p>
<p>
phylogenetic trees, which can cope with large numbers of sequences,
use better distance methods and can perform bootstrapping. Jalview
can read <a
- href="http://evolution.genetics.washington.edu/phylip/newick_doc.html"
- >Newick</a> format tree files using the 'Load Associated Tree' entry
- of the alignment's File menu. Sequences in the alignment will be
+ href="http://evolution.genetics.washington.edu/phylip/newick_doc.html">Newick</a>
+ format tree files using the 'Load Associated Tree' entry of the
+ alignment's File menu. Sequences in the alignment will be
automatically associated to nodes in the tree, by matching Sequence
IDs to the tree's leaf names.
</p>
</p>
<p>
The tree viewing window is opened when a tree has been <a
- href="tree.html"
- >calculated from an alignment</a>, or imported via a file or web
- service. It includes <a href="#menus">menus</a> for controlling
- layout and file and figure creation, and enables various selection
- and colouring operations on the associated sequences in the
- alignment.
+ href="tree.html">calculated from an alignment</a>, or
+ imported via a file or web service. It includes <a href="#menus">menus</a>
+ for controlling layout and file and figure creation, and enables
+ various selection and colouring operations on the associated
+ sequences in the alignment.
</p>
<p>
<strong><em>Selecting Sequence Leaf Nodes</em></strong><br>
tree is rendered and labeled:
<ul>
<li><strong>Fit to Window</strong>
- <p>The tree layout will be scaled to fit in the display window.
- You may need to reduce the font size to minimise the leaf label
- overlap when this option is selected.</p></li>
+ <p>The tree layout will be scaled to fit in the display
+ window. You may need to reduce the font size to minimise the
+ leaf label overlap when this option is selected.</p></li>
<li><strong>Font Size ...</strong><em>n</em>
- <p>
+ <p>
Brings up a dialog box to set the font size for the leaf names.
<em>n</em> is the current font size.
</p></li>
<li><strong>Show Distances</strong>
- <p>Labels each branch or leaf with its associated branch length.</p></li>
+ <p>Labels each branch or leaf with its associated branch
+ length.</p></li>
<li><strong>Show Bootstrap values</strong>
- <p>Labels each branch or leaf with its associated bootstrap
+ <p>Labels each branch or leaf with its associated bootstrap
value.</p></li>
<li><strong>Mark unlinked leaves</strong>
- <p>Toggles the display of a '*' at the beginning of a leaf label
- to indicate that there is no sequence corresponding to that leaf
- in the associated alignment.</p></li>
+ <p>Toggles the display of a '*' at the beginning of a leaf
+ label to indicate that there is no sequence corresponding to
+ that leaf in the associated alignment.</p></li>
<li><strong>Sort Alignment By Tree</strong>
<p>
Sorts any associated alignment views using the current tree. (<em>Only
<li><strong>Associate Leaves with ...</strong>
<p>
Only visible when there are <a
- href="../features/multipleViews.html"
- >multiple views</a> of the same alignment to show and edit which
- alignment views are associated with the leaves of the displayed
- tree.
+ href="../features/multipleViews.html">multiple
+ views</a> of the same alignment to show and edit which alignment
+ views are associated with the leaves of the displayed tree.
</p>
</ul>
</p>
</div>
<ul>
<li>Select which annotation to base the colouring scheme on
- using the top left selection box.<br />If the <strong>Per-sequence
- only</strong> tick box is not greyed out, then ticking it will limit the
- available annotation rows to just those that are sequence
- associated (e.g. T-COFFEE scores and <a
- href="../webServices/proteinDisorder.html"
- >protein disorder predictions</a>), which will colour each sequence
- according to its own per-residue scores.<br /> <em>Per-sequence
- associated annotation colouring was introduced in Jalview 2.8</em>
+ using the top left selection box. Sequence associated alignment
+ annotation are shown with the seuqence's name appended.<br />If
+ the <strong>Per-sequence only</strong> tick box is not greyed out,
+ then ticking it will limit the list of available annotation rows
+ to just the labels for those that are sequence associated.
+ Annotation rows on each sequence with the same label (e.g.
+ T-COFFEE scores and <a href="../webServices/proteinDisorder.html">protein
+ disorder predictions</a>) will then be used to colour its
+ corresponding positions in the alignment.<br /> <em>Per-sequence
+ associated annotation colouring is currently only available in
+ the Desktop.</em>
</li>
<li>If the "Use Original Colours" box is selected,
the colouring scheme will use the colouring scheme present on the
<li>Press the "Defaults" button to reset the
minimum and maximum colours to their default settings (these
are configured in the applet's parameters or the <a
- href="../features/preferences.html"
- >application's user preferences</a>.).<br /> <em>Default min
- and max colours were introduced in Jalview 2.7</em>
+ href="../features/preferences.html">application's
+ user preferences</a>.).<br /> <em>Default min and max
+ colours were introduced in Jalview 2.7</em>
</ul>
</li>
alignment analysis (Livingstone C.D. and Barton G.J. (1993), Protein
Sequence Alignments: A Strategy for the Hierarchical Analysis of
Residue Conservation.CABIOS Vol. 9 No. 6 (745-756)). See the <a
- href="../calculations/conservation.html"
- >conservation calculation</a> help page for a more thorough
- explanation of the calculation.
+ href="../calculations/conservation.html">conservation
+ calculation</a> help page for a more thorough explanation of the
+ calculation.
</p>
<p>For an already coloured alignment, the conservation index at
each alignment position is used to modify the shading intensity of
<p>
Conservation can be calculated over all sequences in an alignment,
or just within specific groups (such as those defined by <a
- href="../calculations/tree.html"
- >phylogenetic tree partitioning</a>). The option 'apply to all groups'
- controls whether the contrast slider value will be applied to the
- indices for the currently selected group, or all groups defined over
- the alignment.
+ href="../calculations/tree.html">phylogenetic tree
+ partitioning</a>). The option 'apply to all groups' controls whether
+ the contrast slider value will be applied to the indices for the
+ currently selected group, or all groups defined over the alignment.
</p>
</body>
</html>
the background colour.</p>
<p>
The <strong>"Colour→<a
- href="../colourSchemes/textcolour.html"
- >Colour Text...</a>"
+ href="../colourSchemes/textcolour.html">Colour Text...</a>"
</strong> entry opens a dialog box to set a different text colour for light
and dark background, and the intensity threshold for transition
between them.
on its helices. The helices are determined from the secondary
structure line in the Stockholm file (#GC SS_cons) written in WUSS
notation that specifies base pairing. See <a
- href="http://en.wikipedia.org/wiki/Stockholm_format"
- > Wikipedia</a> or <a
- href="http://jalview-rnasupport.blogspot.com/2010/06/parsing-wuss-notation-of-rna-secondary.html"
- > Jalview RNA Support Blog</a> for more information about Stockholm
+ href="http://en.wikipedia.org/wiki/Stockholm_format">
+ Wikipedia</a> or <a
+ href="http://jalview-rnasupport.blogspot.com/2010/06/parsing-wuss-notation-of-rna-secondary.html">
+ Jalview RNA Support Blog</a> for more information about Stockholm
files and WUSS notation.
</p>
Select "Colour"
clicking the left mouse button and pressing a combination of either
shift and control (or the alt, option or apple key on Macs) and
dragging the mouse. Pressing <em>F2</em> toggles the alternative <a
- href="../features/cursorMode.html"
- >'Cursor mode'</a> keyboard editing facility, where the space bar and
- delete keys add and remove gaps at the current editing position. The
- key strokes for both these modes are summarised in the <a
- href="../keys.html"
- >keystrokes table</a>.
+ href="../features/cursorMode.html">'Cursor mode'</a> keyboard
+ editing facility, where the space bar and delete keys add and remove
+ gaps at the current editing position. The key strokes for both these
+ modes are summarised in the <a href="../keys.html">keystrokes
+ table</a>.
</p>
<p>
<strong>Tip:</strong> For large alignments, deselect "Calculate
<strong>Types of annotation</strong>
<ul>
<li><a name="seqannots"><strong>Sequence
- associated annotation.</strong></a><br/>Data displayed on sequence annotation
- rows are associated with the positions of a sequence. Often this
- is 'Reference annotation' such as secondary structure information
- derived from 3D structure data, or from the results of sequence
- based prediction of <a href="../webServices/jnet.html">secondary
+ associated annotation.</strong></a><br />Data displayed on sequence
+ annotation rows are associated with the positions of a sequence.
+ Often this is 'Reference annotation' such as secondary structure
+ information derived from 3D structure data, or from the results of
+ sequence based prediction of <a href="../webServices/jnet.html">secondary
structure</a> and <a href="../webServices/proteinDisorder.html">disorder</a>.
If reference annotation is available for a the currently selected
sequences, it can be shown by selecting the <strong>Add
Reference Annotation</strong> option in the sequence or selection popup
menu.</li>
- <li><strong>Group associated annotation.</strong><br/>Data can be associated with
- groups defined on the alignment. If sequence groups are defined, <a
- href="../calculations/conservation.html">Conservation</a> and <a
- href="../calculations/consensus.html">Consensus</a> annotation can
- be enabled for each group from the <a
+ <li><strong>Group associated annotation.</strong><br />Data can
+ be associated with groups defined on the alignment. If sequence
+ groups are defined, <a href="../calculations/conservation.html">Conservation</a>
+ and <a href="../calculations/consensus.html">Consensus</a>
+ annotation can be enabled for each group from the <a
href="../menus/alwannotation.html">Annotations menu</a>, or can be
- imported from a Jalview <a href="annotationsFormat.html">Annotations
- file</a>.</li>
- <li><strong>Alignment associated annotation.</strong><br />Annotation rows
- associated with columns on the alignment are simply 'alignment
- annotation'. Controls allow you to <a href="#iaannot">interactively create
- alignment annotation</a> to add labels and symbols to alignment columns.
- Jalview's consensus, conservation and quality calculations also
- create histogram and sequence logo annotations on the alignment.
- </li>
+ imported from a Jalview <a href="annotationsFormat.html">Annotations
+ file</a>.</li>
+ <li><strong>Alignment associated annotation.</strong><br />Annotation
+ rows associated with columns on the alignment are simply
+ 'alignment annotation'. Controls allow you to <a href="#iaannot">interactively
+ create alignment annotation</a> to add labels and symbols to
+ alignment columns. Jalview's consensus, conservation and quality
+ calculations also create histogram and sequence logo annotations
+ on the alignment.</li>
</ul>
<p>
<strong>Importing and exporting annotation</strong><br />
groups of annotation rows can be shown or hidden using the pop-up
menu obtained by right-clicking the label. You can also reorder them
by dragging the label to a new position with the left mouse button.
- The
- <strong>Annotations</strong> menu provides settings controlling the
- ordering and display of sequence, group and alignment associated
- annotation. The
- <strong>Colour by annotation</strong> option in the colour menu
- allows annotation to be used to
- <a href="../colourSchemes/annotationColouring.html">shade the
- alignment</a>. Annotations can also be used to
- <a href="../features/columnFilterByAnnotation.html">select or
- hide columns</a> via the dialog opened from the
- <strong>Selection</strong> menu.
+ The <strong>Annotations</strong> menu provides settings controlling
+ the ordering and display of sequence, group and alignment associated
+ annotation. The <strong>Colour by annotation</strong> option in the
+ colour menu allows annotation to be used to <a
+ href="../colourSchemes/annotationColouring.html">shade the
+ alignment</a>. Annotations can also be used to <a
+ href="../features/columnFilterByAnnotation.html">select or
+ hide columns</a> via the dialog opened from the <strong>Selection</strong>
+ menu.
</p>
<p>
<strong>Sequence Highlighting and Selection from Annotation</strong>
using the view's standard font size.</em></li>
</ul>
<p>
- <strong>Editing labels and secondary structure annotation rows</strong>
+ <strong>Editing labels and secondary structure annotation
+ rows</strong>
</p>
<p>
Use the <strong>left mouse button</strong> to select a position
along the row that are to be annotated - these regions will be
- coloured red. Press <strong>Control</strong> or <strong>shift</strong> in
- combination with the left-click to either select an additional position,
- or a range of positions on the alignment.
+ coloured red. Press <strong>Control</strong> or <strong>shift</strong>
+ in combination with the left-click to either select an additional
+ position, or a range of positions on the alignment.
</p>
<p>
Once positions have been selected, use the <strong>right
- mouse button</strong> and select one of the following from the <strong>annotation menu</strong>:
+ mouse button</strong> and select one of the following from the <strong>annotation
+ menu</strong>:
</p>
<ul>
- <li>Helix<br>
- <em>Marks selected positions with a helix glyph (a red oval),
- and optional text label (see below). A dialog box will open for
- you to enter the text. Consecutive ovals will be rendered as an
- unbroken red line.</em>
+ <li>Helix<br> <em>Marks selected positions with a
+ helix glyph (a red oval), and optional text label (see below). A
+ dialog box will open for you to enter the text. Consecutive
+ ovals will be rendered as an unbroken red line.</em>
</li>
- <li>Sheet<br>
- <em>Marks selected positions with a sheet glyph (a green arrow
- oriented from left to right), and optional text label (see
- below). A dialog box will open for you to enter the text.
- Consecutive arrows will be joined together to form a single
- green arrow.</em>
+ <li>Sheet<br> <em>Marks selected positions with a
+ sheet glyph (a green arrow oriented from left to right), and
+ optional text label (see below). A dialog box will open for you
+ to enter the text. Consecutive arrows will be joined together to
+ form a single green arrow.</em>
</li>
<li><a name="rna">RNA Helix</a> (only shown when working with
nucleotide sequences)<br> <em>Marks selected positions
region pairs with bases to the left of the highlighted columns.
Other kinds of base-pair annotation are also supported (e.g. 'A'
and 'a', or '<' and '>'), and Jalview will suggest an
- appropriate symbol based on the closest unmatched
- parenthesis to the left.<br />If any brackets do not match up, then an
- orange square will highlight the first position where a bracket
- was found not to match.
+ appropriate symbol based on the closest unmatched parenthesis to
+ the left.<br />If any brackets do not match up, then an orange
+ square will highlight the first position where a bracket was
+ found not to match.
</em></li>
- <li>Label<br>
- <em>Set the text label at the selected positions. A dialog box
- will open for you to enter the text. If more than one
- consecutive position is marked with the same label, only the
- first position's label will be rendered.</em>
+ <li>Label<br> <em>Set the text label at the selected
+ positions. A dialog box will open for you to enter the text. If
+ more than one consecutive position is marked with the same
+ label, only the first position's label will be rendered.</em>
</li>
- <li>Colour<br>
- <em>Changes the colour of the annotation text label.</em>
+ <li>Colour<br> <em>Changes the colour of the
+ annotation text label.</em>
</li>
- <li>Remove Annotation<br>
- <em>Blanks any annotation at the selected positions on the row.
- Note: <strong>This cannot be undone</strong>
+ <li>Remove Annotation<br> <em>Blanks any annotation
+ at the selected positions on the row. Note: <strong>This
+ cannot be undone</strong>
</em>
</li>
</ul>
<em>Current Limitations</em>
</p>
<p>
- The Jalview user interface does not support interactive
- creation and editing of quantitative annotation (histograms and line
- graphs), or to create annotation associated with a specific
- sequence or group. It is also incapable of annotation grouping or changing
- the style of existing annotation (e.g. to change between line or bar
- charts, or to make multiple line graphs). These annotation
- capabilities are only possible by the import of an <a
- href="annotationsFormat.html">Annotation file</a>.<br>
+ The Jalview user interface does not support interactive creation and
+ editing of quantitative annotation (histograms and line graphs), or
+ to create annotation associated with a specific sequence or group.
+ It is also incapable of annotation grouping or changing the style of
+ existing annotation (e.g. to change between line or bar charts, or
+ to make multiple line graphs). These annotation capabilities are
+ only possible by the import of an <a href="annotationsFormat.html">Annotation
+ file</a>.<br>
</p>
</body>
</html>
Alignment annotations can be imported onto an alignment since
version 2.08 of Jalview, via an annotations file. It is a simple
ASCII text file consisting of tab delimited records similar to the <a
- href="featuresFormat.html"
- >Sequence Features File</a>, and introduced primarily for use with the
- Jalview applet.
+ href="featuresFormat.html">Sequence Features File</a>, and
+ introduced primarily for use with the Jalview applet.
</p>
<p>
alignment window.
</p>
<p>
- <strong>THE ANNOTATION FILE FORMAT</strong> <br />An annotation file
- consists of lines containing an instruction followed by tab
+ <strong>THE ANNOTATION FILE FORMAT</strong> <br />An annotation
+ file consists of lines containing an instruction followed by tab
delimited fields. Any lines starting with "#" are
considered comments, and ignored. The sections below describe the
structure of an annotation file.
</ul>
<p>
At the end of this document, you can also find notes on <a
- href="#compatibility"
- >compatibility</a> of annotation files across different versions of
- Jalview. An <a href="#exampleann">example annotation file</a> is
- also provided along with instructions on how to import it to
- Jalview.
+ href="#compatibility">compatibility</a> of annotation files
+ across different versions of Jalview. An <a href="#exampleann">example
+ annotation file</a> is also provided along with instructions on how to
+ import it to Jalview.
</p>
<hr />
<p>
followed by a <em>description</em> for the row, which is shown in a
tooltip when the user mouses over the annotation row's label. Since
Jalview 2.7, the description field may also contain HTML tags (in
- the same way as a <a href="featuresFormat.html">sequence feature's</a>
- label), providing the text is enclosed in an <html/> tag.
+ the same way as a <a href="featuresFormat.html">sequence
+ feature's</a> label), providing the text is enclosed in an
+ <html/> tag.
<ul>
<em>Please note: URL links embedded in HTML descriptions are
not yet supported.</em>
<em>GRAPH_TYPE</em>. The allowed values of <em>GRAPH_TYPE</em> and
corresponding interpretation of each <em>Value</em> are shown below:
+
<ul>
<li><strong>BAR_GRAPH</strong><br> Plots a histogram with
</ul>
</p>
<p>
- <strong><a name="groupdefs">SEQUENCE_GROUP</a></strong><br /> Groups
- of sequences and column ranges can be defined using a tab delimited
- statement like:
+ <strong><a name="groupdefs">SEQUENCE_GROUP</a></strong><br />
+ Groups of sequences and column ranges can be defined using a tab
+ delimited statement like:
</p>
<pre>SEQUENCE_GROUP	Group_Name	Group_Start	Group_End	<em>Sequences</em>
</pre>
<tr>
<td width="50%">hide</td>
<td>Boolean (default false) indicating whether the rows in
- this group should be marked as hidden.<br />
- <em>Note:</em> if the group is sequence associated (specified by
+ this group should be marked as hidden.<br /> <em>Note:</em>
+ if the group is sequence associated (specified by
SEQUENCE_REF), then all members will be hidden and marked as
represented by the reference sequence.
</td>
</p>
<p>
The BioJSON specification is published at <a
- href="http://jalview.github.io/biojson/"
- >http://jalview.github.io/biojson/</a>.
+ href="http://jalview.github.io/biojson/">http://jalview.github.io/biojson/</a>.
</p>
<p>
<em>Import of BioJSON data from HTML pages</em>
</p>
<p>
Since Jalview 2.8.2, <a href="http://www.cgl.ucsf.edu/chimera/">Chimera</a>
- (http://www.cgl.ucsf.edu/chimera/) has been integrated into Jalview
- for interactively viewing structures opened by entries in the <strong>"Structure"</strong>
- submenu in the <a href="../menus/popupMenu.html">sequence id
- pop-up menu</a> (if you can't see this, then you need to <a
- href="viewingpdbs.html"
- >associate a PDB structure</a> with the sequence). Chimera is
- available from the Jalview desktop, provided Chimera has been
- separately installed.
+ (http://www.cgl.ucsf.edu/chimera/) can be used for viewing
+ structures opened via the <a href="structurechooser.html"><strong>"View
+ Structure Data.."</strong> dialog</a>.
</p>
<p>
You can set a default choice of Jmol or Chimera structure viewer in
<a href="preferences.html#structure"> Preferences</a>. You can also
optionally specify the path to the Chimera program here (if it
- differs from the standard paths searched by Jalview).
+ differs from the standard paths searched by Jalview).<br /> <strong>Please
+ make sure your version of Chimera is up to date. Jalview requires
+ at least Chimera version 1.11.1</strong>
+ </p>
<p>
If you save your Jalview session as a project file, the state of any
open Chimera windows will also be saved, and can be reopened by
loading the project file on any machine with Chimera installed. <em>Since
Jalview 2.9.</em>
- <!-- <p>The following menu entries are provided for viewing structure data<br>
- <ul>
- <li>The <strong>"Structure→View
- Structure→</strong> submenu allows a single PDB structure to be chosen
- for display from the available structures for a sequence.
- </li>
- <li>The <strong>"Structure→View all <em>N</em>
- structures
- </strong> option will open a new window containing all structures associated
- with the current selection.
- </li>
- <li>The <strong>"Structure→View all <em>N</em>
- representative structures
- </strong> option will open a new window containing exactly one structure per
- currently selected sequence.<br /></li>
- </ul>
- <br>
-</p> -->
<p>
<a name="align"><strong>Superposing structures based on
their aligned sequences</strong></a><br> If several structures are
Help menu.
<p>
Basic screen operations (see <a
- href="http://www.cgl.ucsf.edu/chimera/current/docs/UsersGuide/mouse.html"
- >Chimera help</a> at
+ href="http://www.cgl.ucsf.edu/chimera/current/docs/UsersGuide/mouse.html">Chimera
+ help</a> at
http://www.cgl.ucsf.edu/chimera/current/docs/UsersGuide/mouse.html
for full details).
<table border="1">
colourschemes.<br>
</strong><em>The remaining entries apply the colourschemes available
from the standard and user defined <a
- href="../colourSchemes/index.html"
- >amino acid colours</a>.
+ href="../colourSchemes/index.html">amino acid
+ colours</a>.
</em></li>
</ul></li>
<li><strong>Chimera<br>
</p>
Jalview and Chimera communicate using Chimera's
<a
- href="http://www.cgl.ucsf.edu/chimera/current/docs/ContributedSoftware/restserver/restserver.html"
- >REST service</a>
+ href="http://www.cgl.ucsf.edu/chimera/current/docs/ContributedSoftware/restserver/restserver.html">REST
+ service</a>
(http://www.cgl.ucsf.edu/chimera/current/docs/ContributedSoftware/restserver/restserver.html).
<br> Technically this requires both Chimera and Jalview to open
ports on the local network, and this may be blocked by Windows
<div align="center">-annotations FILE/URL</div>
</td>
<td>Add precalculated annotations to the alignment. See <a
- href="annotationsFormat.html" target="NEW"
- >Annotation File</a> description.
+ href="annotationsFormat.html" target="NEW">Annotation
+ File</a> description.
</td>
</tr>
<tr>
<td>
<div align="center">-nonews</div>
<td>
- <div align="left">Disable check for <a href="../webServices/newsreader.html">Jalview news</a> on startup (not recommended other than for classroom / demo usage)</div>
+ <div align="left">
+ Disable check for <a href="../webServices/newsreader.html">Jalview
+ news</a> on startup (not recommended other than for classroom /
+ demo usage)
+ </div>
</td>
</tr>
<tr>
The 'Select/Hide by Annotation' window allows columns to be selected
or hidden according to annotation rows on the alignment. The dialog
box is opened <em>via</em> "<strong>Select→Select/Hide
- Columns by Annotation...</strong>", and different filters are
- presented dependent upon the data shown in the selected annotation
+ Columns by Annotation...</strong>", and different filters are then
+ presented for filtering data according to the selected annotation
row.
</p>
<table>
<td><img src="AnnotationColumnSelectionWithoutSM.gif"></td>
</tr>
</table>
-
- <p>If an annotation with numeric values is selected, the threshold
+ <p>The drop down menu lists the annotation available on the
+ alignment. Sequence associated annotation rows will be shown with
+ the sequence ID appended to the annotation label. It is only
+ possible to select one row at a time.</p>
+ <p>
+ If an annotation with numeric values is selected, the threshold
filter option is activated. For other types of annotation, use the
text box and secondary structure check boxes (right). The radio
buttons at the bottom of the dialog specify the action applied to
- columns matching the query.</p>
+ columns matching the query.<br /> <em>Note: annotation
+ containing only numeric labels (e.g. T-COFFEE column confidence
+ scores) will not be treated as quantitative data. You will need to
+ enter search expressions to select columns in this case.</em>
+ </p>
<ul>
<li><strong>Search Filter</strong>
<ul>
<pre>java -Djava.ext.dirs=$INSTALL_DIR$/lib -cp $INSTALL_DIR$/jalview.jar jalview.bin.Jalview -open [FILE] </pre>
<p>
Use '-help' to get more information on the <a
- href="clarguments.html"
- >command line arguments</a> that Jalview accepts.
+ href="clarguments.html">command line arguments</a> that
+ Jalview accepts.
</p>
<p> </p>
<p> </p>
<strong>Creating Sequence Features</strong>
<p>
Jalview can create sequence features from the matches of a <a
- href="search.html"
- >regular expression search</a>, or from the currently selected area
- via the <strong>"selection→Create sequence
- feature"</strong> entry in the <a href="../menus/popupMenu.html">selection
- area popup menu</a>. In both cases, the <strong>Create
- Features</strong> dialog box will then be opened:
+ href="search.html">regular expression search</a>, or from the
+ currently selected area via the <strong>"selection→Create
+ sequence feature"</strong> entry in the <a
+ href="../menus/popupMenu.html">selection area popup menu</a>. In
+ both cases, the <strong>Create Features</strong> dialog box will
+ then be opened:
</p>
<p>
<img src="crnewfeature.gif">
<p>
<strong>DAS Sequence Feature Retrieval</strong>
</p>
- <p>
- Jalview includes a client for retrieving sequences and their
- features via the Distributed Annotation System.
- </p>
+ <p>Jalview includes a client for retrieving sequences and their
+ features via the Distributed Annotation System.</p>
<ol>
<li>Open the Feature Settings panel by selecting "View
-> Feature Settings..."</li>
Accession ids for the given sequence names. It is important to
realise that many DAS sources only use UniProt accession ids, rather
than Swissprot/UniProt sequence names.<br> The <a
- href="../webServices/dbreffetcher.html"
- >database reference fetcher</a> documentation describes how Jalview
- discovers what database references are appropriate for the sequences
- in the alignment.
+ href="../webServices/dbreffetcher.html">database
+ reference fetcher</a> documentation describes how Jalview discovers
+ what database references are appropriate for the sequences in the
+ alignment.
<ul>
<li><em>Note</em><br> Please remember to save your
alignment if either the start/end numbering, or the sequence IDs
<p>
<em>DAS support was introduced in Jalview Version 2.1.</em>
</p>
- <br/>
+ <br />
<p>
- <em>The DAS registry at http://www.dasregistry.org was decommissioned early in 2015. An unmaintained mirror is currently hosted at http://www.ebi.ac.uk/das-srv/registry/.</em>
+ <em>The DAS registry at http://www.dasregistry.org was
+ decommissioned early in 2015. An unmaintained mirror is currently
+ hosted at http://www.ebi.ac.uk/das-srv/registry/.</em>
</p>
<p>
</body>
</p>
<p>
Jalview can retrieve sequences and features from many <a
- href="http://biodas.org/"
- >DAS</a> sources. The DAS sources that it uses are discovered and
- selected <em>via</em> the DAS settings panel, opened either from the
- <a href="featuresettings.html">View→Feature Settings</a>
- dialog box from the alignment window's menu bar, or the <a
- href="featuresettings.html"
- >Tools→Preferences</a> dialog box opened from the Desktop menu
- bar.
+ href="http://biodas.org/">DAS</a> sources. The DAS sources
+ that it uses are discovered and selected <em>via</em> the DAS
+ settings panel, opened either from the <a
+ href="featuresettings.html">View→Feature Settings</a> dialog
+ box from the alignment window's menu bar, or the <a
+ href="featuresettings.html">Tools→Preferences</a>
+ dialog box opened from the Desktop menu bar.
</p>
<p>
<img src="das.gif">
<!-- and <strong>Feature Group</strong> -->
pull down menu. In addition to the Name, group, colour and
description attributes described for the <a
- href="creatinFeatures.html"
- >new feature dialog box</a>, a feature's start and end position can be
- changed either by entering a new position directly or by using the
- adjacent up and down buttons.
+ href="creatinFeatures.html">new feature dialog box</a>, a
+ feature's start and end position can be changed either by entering a
+ new position directly or by using the adjacent up and down buttons.
</p>
<p>
Select <strong>Amend</strong> to update the feature, <strong>Delete</strong>
<body>
<strong>Fetching ENSEMBL Data in Jalview</strong>
- <br /> Jalview Version 2.10 (September 2016) introduced support to
+ <br /> Jalview Version 2.10 (October 2016) introduced support to
retrieve annotated transcripts, peptides and genomic contigs from
<a href="http://www.ensembl.org">ENSEMBL</a>.
<br />
- <img src="selectfetchdb.gif" align="left" width="480" height="204"
- alt="Database selection dialog for fetching sequences (introduced in Jalview 2.8)">
+ <img src="selectfetchdb.gif" align="right" width="480" height="204"
+ alt="Database selection dialog with Ensembl sequence source tooltip">
<p>Two types of ENSEMBL source are provided. ENSEMBL queries the
- main ENSEMBL site, which only serves data for higher eukaryotes, and
- EnsemblGenomes, which provides access to Ensembl Pathogens, and
- other warehouses.</p>
- <p><strong>General Use</strong><br/> If you have a set of Ensembl
- peptide or transcript IDs, then you can retrieve them
- <em>via</em> the sequence fetcher dialog opened after selecting the
- most appropriate source (either 'ENSEMBL', or Ensembl Genomes).
- However, Jalview's Ensembl client has a couple of additional
- capabilities: </p><p><strong>Retrieving aligned transcripts for a genomic ID</strong>
- </p>
- <p>If a single genomic identifier is entered in the
- Ensembl fetcher, Jalview will return all transcripts and products
- for the locus, and display them in a split view - complete with
- sequence variant annotation.</p>
- <p><strong>Retrieving orthologs for a gene ID</strong></p>
- <p>If a gene ID is entered (e.g. fox1), Jalview will resolve
- Ensembl genomic identifiers for a predefined set of taxa (Mouse,
- Rat, Human, Yeast in Jalview 2.10).
- </p>
+ main ENSEMBL warehouse containing data for higher eukaryotes, and
+ EnsemblGenomes, which queries Ensembl Pathogens, and other
+ warehouses.</p>
+ <p>
+ <strong>General Use</strong><br /> If you have a set of Ensembl
+ gene or transcript IDs, then you can retrieve them <em>via</em> the
+ sequence fetcher dialog opened after selecting the most appropriate
+ source (either 'ENSEMBL', or Ensembl Genomes). However, Jalview's
+ Ensembl client has a couple of additional capabilities:
+ </p>
+ <p>
+ <strong>Retrieving aligned transcripts for a genomic ID</strong>
+ </p>
+ <p>If a single genomic identifier is entered in the Ensembl
+ fetcher, Jalview will return all transcripts and products for the
+ locus, and display them in a split view - complete with sequence
+ variant annotation.</p>
+ <p>
+ <strong>Retrieving orthologs for a gene ID</strong>
+ </p>
+ <p>
+ If a gene ID is entered (e.g. fox1), Jalview will resolve Ensembl
+ genomic identifiers for a predefined set of taxa (Mouse, Rat, Human,
+ Yeast in Jalview 2.10).<br />
+ </p>
+ <p>
+ <strong><a name="ensemblannotation">Ensembl Sequence
+ Features</a></strong><br /> Jalview 2.10 includes support for the
+ visualisation and transfer genomic and transcriptomic sequence
+ features onto protein product sequences. Retrieval of a genomic
+ locus results in a set of transcripts that are annotated with
+ nucleotide variant information and exonic regions. By default,
+ intronic regions will be hidden.
+ </p>
+ <p>
+ <strong><a name="variantvis">Variant information on
+ Protein Products</a></strong><br />Jalview can translate genomic variant
+ annotation into protein sequence variant codes for variants
+ intersecting coding regions of a gene. To see this in action, use
+ the <strong>Calculate→Show cross-references</strong> menu to
+ view protein product sequences for the currently displayed (or
+ selected) sequences. The same menu allows you to recover Ensembl
+ exon, transcript and variant information when viewing UniProt
+ sequences.
+ </p>
+ <p>
+ <strong>Viewing more information about variant annotation</strong><br />
+ Variants are highlighted as red sequence features on the protein
+ sequence, with each one reporting all protein sequence variants
+ observed at that position as a result of the genomic variants.
+ Right-clicking a variant allows you to open the Ensembl Variants web
+ page for each variant, via the <strong>Link</strong> submenu.
+ </p>
+ <p>
+ <strong>Work in Progress !</strong><br />In the next few releases,
+ we hope to improve and extend Jalview's support for working with
+ Ensembl. If you have any problems, questions or suggestions then
+ please get in contact with us via the Jalview discussion list.
+ </p>
</body>
</html>
\ No newline at end of file
<p>
If your sequence annotation is already available in GFF Format (see
- <a href="http://gmod.org/wiki/GFF2">gmod.org/wiki/GFF2</a>),
- then you can leave it as is, after first adding a line containing
- only 'GFF' after any Jalview feature colour definitions (<em>this
+ <a href="http://gmod.org/wiki/GFF2">gmod.org/wiki/GFF2</a>), then
+ you can leave it as is, after first adding a line containing only
+ 'GFF' after any Jalview feature colour definitions (<em>this
mixed format capability was added in Jalview 2.6</em>). Alternately,
you can use Jalview's own sequence feature annotation format, which
additionally allows HTML and URLs to be directly attached to each
</pre>
This format allows two alternate ways of referring to a sequence,
- either by its text ID, or its index (base 0) in an associated alignment.
- Normally, sequence features are associated with sequences rather than
- alignments, and the sequenceIndex field is given as "-1". In
- order to specify a sequence by its index in a particular alignment,
- the sequenceId should be given as "ID_NOT_SPECIFIED",
- otherwise the sequenceId field will be used in preference to the
- sequenceIndex field.
+ either by its text ID, or its index (base 0) in an associated
+ alignment. Normally, sequence features are associated with sequences
+ rather than alignments, and the sequenceIndex field is given as
+ "-1". In order to specify a sequence by its index in a
+ particular alignment, the sequenceId should be given as
+ "ID_NOT_SPECIFIED", otherwise the sequenceId field will be
+ used in preference to the sequenceIndex field.
</p>
description line will be translated into URL links. A link symbol
will be displayed adjacent to any feature which includes links, and
these are made available from the <a
- href="../menus/popupMenu.html#sqid.popup"
- >links submenu</a> of the popup menu which is obtained by
- right-clicking when a link symbol is displayed in the tooltip.<br>
- <em>Non-positional features</em><br> Specify the <em>start</em>
- and <em>end</em> for a feature to be <strong>0</strong> in order to
- attach it to the whole sequence. Non-positional features are shown
- in a tooltip when the mouse hovers over the sequence ID panel, and
- any embedded links can be accessed from the popup menu.<br /> <em>Scores</em><br>
+ href="../menus/popupMenu.html#sqid.popup">links submenu</a>
+ of the popup menu which is obtained by right-clicking when a link
+ symbol is displayed in the tooltip.<br> <em>Non-positional
+ features</em><br> Specify the <em>start</em> and <em>end</em> for
+ a feature to be <strong>0</strong> in order to attach it to the
+ whole sequence. Non-positional features are shown in a tooltip when
+ the mouse hovers over the sequence ID panel, and any embedded links
+ can be accessed from the popup menu.<br /> <em>Scores</em><br>
Scores can be associated with sequence features, and used to sort
sequences or shade the alignment (this was added in Jalview 2.5).
The score field is optional, and malformed scores will be ignored.
</p>
<p>
<strong><em>Feature settings pop-up menu</em></strong><br> <strong>Right-click</strong>
- on a feature to open a pop-up menu that allows you to<ul><li>Hide, show and
- select columns containing that feature</li><li>Sort the alignment or
- current selection using that feature type (see below)</li><li>Toggle the
- type of colouring used for the feature</li></ul><p>Features may be highlighted
- with either a single colour or a <a href="featureschemes.html">feature
- colourscheme</a> based on either the scores associated with that
- feature or from the feature's description (e.g. to distinguish
- different names associated with a DOMAIN feature).
+ on a feature to open a pop-up menu that allows you to
+ <ul>
+ <li>Hide, show and select columns containing that feature</li>
+ <li>Sort the alignment or current selection using that feature
+ type (see below)</li>
+ <li>Toggle the type of colouring used for the feature</li>
+ </ul>
+ <p>
+ Features may be highlighted with either a single colour or a <a
+ href="featureschemes.html">feature colourscheme</a> based on
+ either the scores associated with that feature or from the feature's
+ description (e.g. to distinguish different names associated with a
+ DOMAIN feature).
</p>
<p>
- <strong>Ordering alignment by features</strong><br> The 'Seq
- Sort by Score' and 'Seq Sort by Density' buttons will sort the
- alignment based on the average score or total number of currently
- active features and groups on each sequence. To order the alignment
- using a specific feature type, use the <em>sort by ..</em> entries
- in the pop-up menu for that type.<br> <em>Feature sorting
- and graduated feature colouring were introduced in Jalview 2.5</em>
+ <strong><a name="sortbyfeature">Ordering alignment by
+ features</a></strong><br> The 'Seq Sort by Score' and 'Seq Sort by
+ Density' buttons will sort the alignment based on the average score
+ or total number of currently active features and groups on each
+ sequence. To order the alignment using a specific feature type, use
+ the <em>sort by ..</em> entries in the pop-up menu for that type.<br>
+ <em>Feature sorting and graduated feature colouring were
+ introduced in Jalview 2.5</em>
</p>
<p>
ordering based on the average length of each feature type.
</p>
<p>
- The <strong><em>transparency slider setting</em></strong> controls the visibility
- of features rendered below other features. Reducing the transparency
- will mean that features at the top of the list can obscure features
- lower down, and increasing it allows the user to 'see through' the
- upper layers of a set of features.
+ The <strong><em>transparency slider setting</em></strong> controls
+ the visibility of features rendered below other features. Reducing
+ the transparency will mean that features at the top of the list can
+ obscure features lower down, and increasing it allows the user to
+ 'see through' the upper layers of a set of features.
</p>
<p>
<strong><em>You can save all features, with their
public methods of the jalview class hierarchy can be called from
Groovy scripts. In addition, the following objects are also defined:
+
<ul>
<li><strong>Jalview</strong> - this is bound to <code>jalview.bin.Jalview</code>.<br />Useful
def seq = alignment.getSequenceAt(0);
</pre>
</li>
- <li>If you wanted to do the same thing from the command line, you can refer to
- alignment that was just loaded with currentAlFrame:<br>
- <pre>
+ <li>If you wanted to do the same thing from the command line,
+ you can refer to alignment that was just loaded with
+ currentAlFrame:<br> <pre>
print currentAlFrame.getTitle();</pre>
</ul>
<p>
<li><strong><a href="../calculations/tree.html">Tree</a></strong>,
<strong><a href="../calculations/pairwise.html">pairwise
alignment</a></strong> and <strong><a
- href="../calculations/pca.html"
- >PCA</a></strong> calculations will only be performed using the <em>visible</em>
- parts of the alignment.</li>
+ href="../calculations/pca.html">PCA</a></strong> calculations will
+ only be performed using the <em>visible</em> parts of the
+ alignment.</li>
<li><a href="../webServices/msaclient.html">Multiple
Sequence Alignments</a> are performed locally on on each visible
chunk of the input, and concatenated with the hidden regions to
structures opened by entries in the <strong>"Structure"</strong>
submenu in the <a href="../menus/popupMenu.html">sequence id
pop-up menu</a> (if you can't see this, then you need to <a
- href="viewingpdbs.html"
- >associate a PDB structure</a> with the sequence). Jmol is available
- from the Jalview desktop and should also run in the JalviewLite
- applet, providing the browser supports Java 1.5. If Jmol is not
- available, then the original <a href="pdbviewer.html">internal
- pdb viewer</a> will be used as a fallback.
+ href="viewingpdbs.html">associate a PDB structure</a> with
+ the sequence). Jmol is available from the Jalview desktop and should
+ also run in the JalviewLite applet, providing the browser supports
+ Java 1.5. If Jmol is not available, then the original <a
+ href="pdbviewer.html">internal pdb viewer</a> will be used as a
+ fallback.
</p>
<!-- <p>The following menu entries are provided for viewing structure data<br>
<ul>
colourschemes.<br>
</strong><em>The remaining entries apply the colourschemes available
from the standard and user defined <a
- href="../colourSchemes/index.html"
- >amino acid colours</a>.
+ href="../colourSchemes/index.html">amino acid
+ colours</a>.
</em></li>
</ul></li>
<li><strong>Jmol<br>
Jmol scripting console.</p>
<p>
The state of each Jmol display is stored within <a
- href="jalarchive.html"
- >Jalview archives</a> as a Jmol state recovery script file. This means
- that any Jmol visualization effects that you add beyond those
- provided by Jalview will be able to be stored and recovered along
- with the displayed alignments in Jalview.
+ href="jalarchive.html">Jalview archives</a> as a Jmol state
+ recovery script file. This means that any Jmol visualization effects
+ that you add beyond those provided by Jalview will be able to be
+ stored and recovered along with the displayed alignments in Jalview.
</p>
<p>
<strong>More Information</strong>
Jmol is a sophisticated program in its own right, with its own
command console and scripting language. Only the essentials have
been described here - the interested reader is referred to <a
- href="http://jmol.sourceforge.net/docs/"
- >Jmol's own comprehensive online documentation</a>.
+ href="http://jmol.sourceforge.net/docs/">Jmol's own
+ comprehensive online documentation</a>.
</p>
</p>
</body>
<!DOCTYPE html>
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ -->
<html>
<head>
<meta charset="UTF-8">
File'. This format was developed by the PDB consortium and the
International Union of Crystallography (IUCr), based on
Crystallographic Information File (CIF), a format used for describing
- the structures of small molecules.<br/>mmCIF became the recommended format
- for the exchange of biomacromolecular structures in 2014.
+ the structures of small molecules.
+ <br />mmCIF became the recommended format for the exchange of
+ biomacromolecular structures in 2014.
<p>
<strong>mmCIF and Jalview</strong> <br />Since Jalview 2.10, mmCIF
is used for structures downloaded from the PDB. This means:
<em>Support for importing 3D structure data from flat file and
EMBL-PDBe as mmCIF was added in Jalview 2.10</em>
</body>
-</html>
\ No newline at end of file
+</html>
<p>
A tree calculated on a particular view, or loaded onto it, is by
default associated with just that view. However, the <a
- href="../calculations/treeviewer.html"
- >Tree Viewer's</a> <strong>"View→Associate
+ href="../calculations/treeviewer.html">Tree Viewer's</a> <strong>"View→Associate
leaves"</strong> submenu allows a tree's view association to be
changed to to any or all other views.
</p>
<strong>"File →Fetch Sequences"</strong>).
</p>
<img src="pdbseqfetcher.png" align="left"
- alt="PDB sequence fetcher (introduced in Jalview 2.9)"
- />
+ alt="PDB sequence fetcher (introduced in Jalview 2.9)" />
<p>
<strong>Searching the PDB Database</strong>
</p>
<p>
<ul>
- <li><strong>Searching a specific PDB field</strong><br />If you
- want to find structures based on a specific PDB metadata field,
- you can select it from the drop-down menu.</li>
+ <li><strong>Searching a specific PDB field</strong><br />If
+ you want to find structures based on a specific PDB metadata
+ field, you can select it from the drop-down menu.</li>
<li><strong>Retrieving a unique chain for a PDB entry</strong><br>To
retrieve a specific chain for a PDB entry, append the PDB ID with
a colon followed by the chain code in the search box.<br /> e.g
pop-up menu</a>. The internal PDB viewer is not able to show
superpositions, so no other options are provided. Structures can
only be viewed for sequences which have an <a
- href="viewingpdbs.html"
- >associated PDB structure</a>, and the PDB Viewer will only be
- associated with the particular alignment view from which it was
- opened.
+ href="viewingpdbs.html">associated PDB structure</a>, and the
+ PDB Viewer will only be associated with the particular alignment
+ view from which it was opened.
</p>
<p>
<strong>Controls</strong>
Jalview colourschemes.<br>
</em></strong> The remaining entries apply the colourschemes available from
the standard and user defined <a
- href="../colourSchemes/index.html"
- >amino acid colours</a>.</em></li>
+ href="../colourSchemes/index.html">amino acid
+ colours</a>.</em></li>
</ul></li>
<li><strong>View<br>
</strong><em> These options can be turned off to improve performance
</li>
<li>The <a href="../webServices/webServicesPrefs.html"><strong>"Web
Service"</strong> Preferences</a> tab allows you to configure the <a
- href="http://www.compbio.dundee.ac.uk/jabaws"
- >JABAWS</a> servers that Jalview uses, and change the layout of the
+ href="http://www.compbio.dundee.ac.uk/jabaws">JABAWS</a>
+ servers that Jalview uses, and change the layout of the
alignment's Web Services menu.
</li>
</ul>
</p>
<p>
<em>Open Overview Window</em> - When this is selected, the <a
- href="overview.html"
- >alignment overview</a> panel is opened by default for a new alignment
- window.
+ href="overview.html">alignment overview</a> panel is opened
+ by default for a new alignment window.
</p>
<p>
<em>Show Annotations</em> - If this is selected the new window will
<em>Open file</em> - If this is selected then the default alignment
file will be opened when Jalview is started. You can change the
default file by clicking on file name and either typing in the file
- path or selecting it from the file chooser window.<br />
- <em>Note: The default example alignment is updated periodically
- to demonstrate new features in Jalview.</em>
+ path or selecting it from the file chooser window.<br /> <em>Note:
+ The default example alignment is updated periodically to
+ demonstrate new features in Jalview.</em>
</p>
<p>
<a name="colours"><strong>"Colours"
<p>
<em>Annotation Shading Default</em> - set the default minimum and
maximum colours used when <a
- href="../colourSchemes/annotationColouring.html"
- >Colour by Annotation...</a> is selected from the alignment window's
- colours menu.
+ href="../colourSchemes/annotationColouring.html">Colour
+ by Annotation...</a> is selected from the alignment window's colours
+ menu.
</p>
<p>
<a name="structure"><strong>"Structure"
<em>URL Link From Sequence ID</em><br> These definitions are
used to generate URLs from a sequence's ID or database cross
references. Read more about <a
- href="../webServices/urllinks.html#urllinks"
- >configuring URL links here</a>.
+ href="../webServices/urllinks.html#urllinks">configuring
+ URL links here</a>.
</p>
<p>
<em>Default Browser (Unix)</em><br> Its difficult in Java to
</p>
<p>
When this option is enabled, Jalview embeds <a
- href="bioJsonFormat.html"
- >BioJSON</a> data within HTML files exported from Jalview at
- generation time. This enables the exported HTML files to be
- extracted and imported back into the Jalview desktop application at
- a later time.
+ href="bioJsonFormat.html">BioJSON</a> data within HTML files
+ exported from Jalview at generation time. This enables the exported
+ HTML files to be extracted and imported back into the Jalview
+ desktop application at a later time.
<p>
<em>Use Modeller Output</em>
</p>
<p>
By default, Jalview will assign a color to each feature based on its
type. These colours can be changed from the <a
- href="featuresettings.html"
- >feature settings</a> and <a href="editingFeatures.html">amend
- features</a> dialog boxes. Since Jalview 2.5, it is also possible to
- define <a href="featureschemes.html">feature colourschemes</a> to
- shade features based on their associated scores or text labels.
+ href="featuresettings.html">feature settings</a> and <a
+ href="editingFeatures.html">amend features</a> dialog boxes. Since
+ Jalview 2.5, it is also possible to define <a
+ href="featureschemes.html">feature colourschemes</a> to shade
+ features based on their associated scores or text labels.
</p>
<p>
<strong>Sequence Feature Groups</strong>
organised into groups, which may indicate that the features were all
retrieved from the same database (such as UniProt features), or
generated by the same analysis process (as might be specified in a <a
- href="featuresFormat.html"
- >sequence features file</a>).
+ href="featuresFormat.html">sequence features file</a>).
</p>
<p>
<strong>Sequence Feature Inheritance</strong>
<p>
Once sequence features have been loaded, their display can be fully
controlled using the alignment window's <a
- href="featuresettings.html"
- >Sequence Feature Settings</a> dialog box. Feature colour schemes and
- display parameters are unique to a particular alignment, so it is
- possible to colour the same sequence features differently in
- different alignment views.<br> Since Jalview 2.1, it is
- possible to add <a href="dassettings.html">DAS features</a> to an
- alignment via the DAS tabbed pane of the feature settings window.
+ href="featuresettings.html">Sequence Feature Settings</a>
+ dialog box. Feature colour schemes and display parameters are unique
+ to a particular alignment, so it is possible to colour the same
+ sequence features differently in different alignment views.<br>
+ Since Jalview 2.1, it is possible to add <a href="dassettings.html">DAS
+ features</a> to an alignment via the DAS tabbed pane of the feature
+ settings window.
</p>
<p>
<strong>View→Sequence ID Tooltip→Show
Precalculated Sequence Features may be added to an alignment from
the command line, drag and drop, or from the "File→Load
Features / Annotations" menu item. See the <a
- href="featuresFormat.html"
- >Features File Format</a> for more details.
+ href="featuresFormat.html">Features File Format</a> for more
+ details.
</p>
</body>
</html>
Institute, or, since Jalview 2.4, DAS servers capable of the <em>sequence</em>
command (configured in <a href="dassettings.html">DAS settings</a>).
</p>
- <p>The Sequence Fetcher can be opened via the
- "File" menu on the main desktop in order to retrieve
- sequences as a new alignment, or opened via the "File"
- menu of an existing alignment to import additional sequences. There
- may be a short delay when the sequence fetcher is first opened,
- whilst Jalview compiles the list of available sequence datasources
- from the currently defined DAS server registry.</p>
+ <p>The Sequence Fetcher can be opened via the "File"
+ menu on the main desktop in order to retrieve sequences as a new
+ alignment, or opened via the "File" menu of an existing
+ alignment to import additional sequences. There may be a short delay
+ when the sequence fetcher is first opened, whilst Jalview compiles
+ the list of available sequence datasources from the currently
+ defined DAS server registry.</p>
<p>
- Every time a new fetcher is opened, you will need to <strong>select the database you want to retrieve
- sequences</strong> from the database chooser.
+ Every time a new fetcher is opened, you will need to <strong>select
+ the database you want to retrieve sequences</strong> from the database
+ chooser.
</p>
<img src="selectfetchdb.gif" align="left" width="480" height="204"
- alt="Database selection dialog for fetching sequences (introduced in Jalview 2.8)"
- >
- <p>The databases are shown as a tree, and ordered alphabetically;
+ alt="Database selection dialog for fetching sequences (introduced in Jalview 2.8)">
+ <p>
+ The databases are shown as a tree, and ordered alphabetically;
tooltips are shown if you mouse over some sources, explaining what
the database will retrieve. You can select one by using the up/down
arrow keys and hitting return, or by double clicking with the mouse.
- <br/><em>If you have DAS sources enabled, then you may have several sources
- for the same type of sequence identifier, and these will be grouped
- together in a sub-branch branch labeled with the identifier.</em></p>
+ <br />
+ <em>If you have DAS sources enabled, then you may have several
+ sources for the same type of sequence identifier, and these will
+ be grouped together in a sub-branch branch labeled with the
+ identifier.</em>
+ </p>
<p>Once you have selected a sequence database, its fetcher dialog
will open. Jalview provides two types of dialog:</p>
- <ol><li><strong>The Free-text Search Interface</strong>
-
- <br/>Free-text search clients are provided for PDB (Since 2.9), and
- UniProt (Since 2.10). They provide access to each database's own
- query system, enabling you to retrieve data by accession, free text
- description, or any other type of supported field. For full details,
- see each client's help page:
- <ul>
- <li><a href="pdbsequencefetcher.html">PDB Sequence Fetcher</a></li>
- <li><a href="uniprotsequencefetcher.html">UniProt Sequence
- Fetcher</a></li>
- </ul>
- </li>
- <li><strong>Accession based sequence retrieval</strong>
- <br/>
+ <ol>
+ <li><strong>The Free-text Search Interface</strong> <br />Free-text
+ search clients are provided for PDB (Since 2.9), and UniProt
+ (Since 2.10). They provide access to each database's own query
+ system, enabling you to retrieve data by accession, free text
+ description, or any other type of supported field. For full
+ details, see each client's help page:
+ <ul>
+ <li><a href="pdbsequencefetcher.html">PDB Sequence
+ Fetcher</a></li>
+ <li><a href="uniprotsequencefetcher.html">UniProt
+ Sequence Fetcher</a></li>
+ </ul></li>
+ <li><strong>Accession based sequence retrieval</strong> <br />
- <img src="seqfetcher.gif" align="center"
- alt="The Jalview Sequence Fetcher Dialog Box"><br/>
- To retrieve sequences, simply <strong>enter one or more accession ids</strong> (as a semi-colon
- separated list), or press the "Example" button to paste the
- example accession for the currently selected database into the
- retrieval box. Finally, press "OK" to initiate the
- retrieval.
- </li>
+ <img src="seqfetcher.gif" align="center"
+ alt="The Jalview Sequence Fetcher Dialog Box"><br /> To
+ retrieve sequences, simply <strong>enter one or more
+ accession ids</strong> (as a semi-colon separated list), or press the
+ "Example" button to paste the example accession for the
+ currently selected database into the retrieval box. Finally, press
+ "OK" to initiate the retrieval.</li>
</ol>
<p>
<strong>Only retrieving part of a sequence</strong>
<body>
<p>
<strong>Mapping Between Different Sequences</strong>
- </p><!-- TODO: review and check if this page is really needed -->
+ </p>
+ <!-- TODO: review and check if this page is really needed -->
<p>A new feature in Jalview 2.3 is the ability to map between
sequences in different domains, based on alignment, or by the use of
explicit mappings provided by databases.</p>
<!DOCTYPE html>
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ -->
<html>
<head>
<meta charset="UTF-8">
will generate a mapping using the built-in Needleman and Wunsch
global alignment algorithm. This is how sequence-structure mappings
were created before version 2.10.</p>
- <p><strong>Controlling and troubleshooting SIFTS mappings</strong> <br />
+ <p>
+ <strong>Controlling and troubleshooting SIFTS mappings</strong> <br />
Configuration options controlling whether SIFTS mappings are used
can be found in the <strong>Tools → Preferences →
Structure tab</strong>, under 'Sequence ↔ Structure method'.<br /> <em>Note:</em>
<strong>Multi-Chain Mappings</strong> <br />SIFTS gives Jalview the
ability to display multi-chain mappings between UniProt sequences
and PDB structure data. This is important when working with
- multimeric proteins, when the biological assembly can contain several
- structures for the same protein sequence. Multi-chain mapping allows
- all residues in a structure to be located in the alignment, and
- also, when shading the structure by sequence colours, enables
- conservation patterns between oligomer interfaces to be explored.
+ multimeric proteins, when the biological assembly can contain
+ several structures for the same protein sequence. Multi-chain
+ mapping allows all residues in a structure to be located in the
+ alignment, and also, when shading the structure by sequence colours,
+ enables conservation patterns between oligomer interfaces to be
+ explored.
</p>
<p>To see this in action, Retrieve the UniProt sequence
FER1_MAIZE, and then view one of its structures: 3B2F. Mousing over
<Strong>Viewing Mapping Output</Strong> <br /> The mapping provided
by the SIFTS record is accessible via <strong>File →
View mapping</strong> menu of the structure viewers. The screenshot below
- shows the mapping created between UniProt sequence FER1_MAIZE and proteins in PDB 3B2F, which reports thattwo chains
- were mapped. The mapping method is also reported (highlighted with red border).
+ shows the mapping created between UniProt sequence FER1_MAIZE and
+ proteins in PDB 3B2F, which reports mappings for two chains. The
+ mapping method is also reported (highlighted with red border).
<p>
 <img src="sifts_mapping_output.png" align="left"
- alt="SIFTS mapping output" />
- <br/>
+ alt="SIFTS mapping output" /> <br />
<p>
<em>SIFTS Mapping integration was added in Jalview 2.10</em>
</p>
</body>
-</html>
\ No newline at end of file
+</html>
<ul>
<li>Mouseover or scrolling of either alignment is followed by
the other (unless you turn off <strong><a
- href="../menus/alwview.html"
- >"View→Automatic Scrolling"</a></strong>)
+ href="../menus/alwview.html">"View→Automatic
+ Scrolling"</a></strong>)
</li>
<li>On selecting rows, columns or regions in one alignment, the
corresponding selection is made in the other</li>
<li>Sequence ordering in one alignment (using the cursor, or <strong><a
- href="../calculations/sorting.html"
- >"Calculate→Sort")</a></strong> is also applied to the other
+ href="../calculations/sorting.html">"Calculate→Sort")</a></strong>
+ is also applied to the other
</li>
<li>Editing (gap insertion / deletion) in the protein alignment
is reflected in the cDNA (but not vice versa)</li>
<li>Any trees imported or created with <strong><a
- href="../calculations/tree.html"
- >"Calculate Tree"</a></strong> on one of the views allow both cDNA and
- Protein views to be grouped, coloured or sorted.
+ href="../calculations/tree.html">"Calculate Tree"</a></strong> on
+ one of the views allow both cDNA and Protein views to be grouped,
+ coloured or sorted.
</li>
<li>To allow for the different widths in cDNA and Protein
alignments, the <strong><a href="../menus/alwformat.html">"Format→Font"</a></strong>
</ul>
<p>
An alignment annotation row on the protein alignment shows the <strong><a
- href="../calculations/consensus.html"
- >cDNA consensus</a></strong> for each peptide column.<br /> This consensus may
- reveal variation in nucleotides coding for conserved protein
- residues.
+ href="../calculations/consensus.html">cDNA consensus</a></strong> for
+ each peptide column.<br /> This consensus may reveal variation in
+ nucleotides coding for conserved protein residues.
</p>
<a name="opensplit" />
sample alignment. Note however that if no structures were
auto-discovered, a different interface for manual association will
be invoked as seen in the screenshot below.
-
<p>
<img src="schooser_enter-id.png"
style="width: 464px; height: 369px;">
-
<p>
<strong>Manual selection/association of PDB files with
Sequences</strong>
</p>
<p>To manually associate PDB files with a sequence, select 'From
File', or 'Enter PDB Id' from the drop-down menu:
-
<ul>
<li><strong>From File</strong> - allows you to load a PDB file
from the local machine or network and associate it with the
syntax</a>).
</p>
- <table border="1" width="95%">
- <tr>
- <th>Field</th>
- <th>Example</th>
- <th>Description</th>
- </tr>
- <tr>
- <td>accession</td>
- <td>
- <code>accession:P62988</code>
- </td>
- <td>
- Lists all entries with the primary or secondary
- accession number P62988.
- </td>
- </tr>
- <tr>
- <td>active</td>
- <td>
- <code>active:no </code>
- </td>
- <td>
- Lists all obsolete entries.
- </td>
- </tr>
- <tr>
- <td>annotation</td>
- <td>
- <code>
- annotation:(type:non-positional)
- <br />
- annotation:(type:positional)
- <br />
- annotation:(type:mod_res "Pyrrolidone carboxylic acid" evidence:experimental)
- </code>
- </td>
- <td>
- Lists all entries with:
- <ul>
- <li>any general annotation (comments [CC])</li>
- <li>any sequence annotation (features [FT])</li>
- <li>at least one amino acid modified with a Pyrrolidone carboxylic acid group</li>
- </ul>
- </td>
- </tr>
- <tr>
- <td>author</td>
- <td>
- <code>
- author:ashburner
- </code>
- </td>
- <td>
- Lists all entries with at least one reference co-authored by Michael Ashburner.
- </td>
- </tr>
- <tr>
- <td>cdantigen</td>
- <td>
- <code>
- cdantigen:CD233
- </code>
- </td>
- <td>
- Lists all entries whose cluster of differentiation number is CD233.
- </td>
- </tr>
- <tr>
- <td>citation</td>
- <td>
- <code>
- citation:("intracellular structural proteins")
- <br />
- citation:(author:ashburner journal:nature)
- citation:9169874
- </code>
- </td>
- <td>
- Lists all entries with a literature citation:
- <ul>
- <li>containing the phrase "intracellular structural proteins" in either title or abstract</li>
- <li>co-authored by Michael Ashburner and published in Nature</li>
- <li>with the PubMed identifier 9169874</li>
- </ul>
- </td>
- </tr>
- <tr>
- <td>cluster</td>
- <td>
- <code>
- cluster:UniRef90_A5YMT3
- </code>
- </td>
- <td>
- Lists all entries in the UniRef 90% identity cluster whose
- representative sequence is UniProtKB entry A5YMT3.
- </td>
- </tr>
- <tr>
- <td>count</td>
- <td>
- <code>
- annotation:(type:transmem count:5)<br />
- annotation:(type:transmem count:[5 TO *])<br />
- annotation:(type:cofactor count:[3 TO *])
- </code>
- </td>
- <td>Lists all entries with:
- <ul>
- <li>exactly 5 transmembrane regions</li>
- <li>5 or more transmembrane regions</li>
- <li>3 or more Cofactor comments</li>
- </ul>
- </td>
- </tr>
- <tr>
- <td>created</td>
- <td>
- <code>
- created:[20121001 TO *]<br />
- reviewed:yes AND created:[current TO *]
- </code>
- </td>
- <td>
- Lists all entries created since October 1st 2012.<br />
+ <table border="1" width="95%">
+ <tr>
+ <th>Field</th>
+ <th>Example</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td>accession</td>
+ <td><code>accession:P62988</code></td>
+ <td>Lists all entries with the primary or secondary accession
+ number P62988.</td>
+ </tr>
+ <tr>
+ <td>active</td>
+ <td><code>active:no </code></td>
+ <td>Lists all obsolete entries.</td>
+ </tr>
+ <tr>
+ <td>annotation</td>
+ <td><code>
+ annotation:(type:non-positional) <br />
+ annotation:(type:positional) <br /> annotation:(type:mod_res
+ "Pyrrolidone carboxylic acid" evidence:experimental)
+ </code></td>
+ <td>Lists all entries with:
+ <ul>
+ <li>any general annotation (comments [CC])</li>
+ <li>any sequence annotation (features [FT])</li>
+ <li>at least one amino acid modified with a Pyrrolidone
+ carboxylic acid group</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td>author</td>
+ <td><code> author:ashburner </code></td>
+ <td>Lists all entries with at least one reference co-authored
+ by Michael Ashburner.</td>
+ </tr>
+ <tr>
+ <td>cdantigen</td>
+ <td><code> cdantigen:CD233 </code></td>
+ <td>Lists all entries whose cluster of differentiation number
+ is CD233.</td>
+ </tr>
+ <tr>
+ <td>citation</td>
+ <td><code>
+ citation:("intracellular structural proteins") <br />
+ citation:(author:ashburner journal:nature) citation:9169874
+ </code></td>
+ <td>Lists all entries with a literature citation:
+ <ul>
+ <li>containing the phrase "intracellular structural
+ proteins" in either title or abstract</li>
+ <li>co-authored by Michael Ashburner and published in
+ Nature</li>
+ <li>with the PubMed identifier 9169874</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td>cluster</td>
+ <td><code> cluster:UniRef90_A5YMT3 </code></td>
+ <td>Lists all entries in the UniRef 90% identity cluster
+ whose representative sequence is UniProtKB entry A5YMT3.</td>
+ </tr>
+ <tr>
+ <td>count</td>
+ <td><code>
+ annotation:(type:transmem count:5)<br />
+ annotation:(type:transmem count:[5 TO *])<br />
+ annotation:(type:cofactor count:[3 TO *])
+ </code></td>
+ <td>Lists all entries with:
+ <ul>
+ <li>exactly 5 transmembrane regions</li>
+ <li>5 or more transmembrane regions</li>
+ <li>3 or more Cofactor comments</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td>created</td>
+ <td><code>
+ created:[20121001 TO *]<br /> reviewed:yes AND
+ created:[current TO *]
+ </code></td>
+ <td>Lists all entries created since October 1st 2012.<br />
Lists all new UniProtKB/Swiss-Prot entries in the last release.
- </td>
- </tr>
- <tr>
- <td>database</td>
- <td>
- <code>
- database:(type:pfam)
- <br />
- database:(type:pdb 1aut)
- </code>
- </td>
- <td>
- Lists all entries with:
- <ul>
- <li>a cross-reference to the Pfam database</li>
- <li>a cross-reference to the PDB database entry 1aut</li>
- </ul>
-
- </td>
- </tr>
- <tr>
- <td>domain</td>
- <td>
- <code>
- domain:VWFA
- </code>
- </td>
- <td>
- Lists all entries with a Von Willebrand factor type A domain described
- in the 'Family and Domains' section.
- </td>
- </tr>
- <tr>
- <td>ec</td>
- <td>
- <code>
- ec:3.2.1.23
- </code>
- </td>
- <td>
- Lists all beta-galactosidases.
- </td>
- </tr>
- <tr>
- <td>evidence</td>
- <td>
- <code>
- annotation:(type:signal evidence:ECO_0000269)<br />
- (type:mod_res phosphoserine evidence:ECO_0000269)<br />
- annotation:(type:function AND evidence:ECO_0000255)
- </code>
- </td>
- <td>Lists all entries with:
- <ul>
- <li>a signal sequence whose positions have been experimentally proven</li>
- <li>experimentally proven phosphoserine sites</li>
- <li>a function manually asserted according to rules</li>
- </ul>
- </td>
- </tr>
- <tr>
- <td>family</td>
- <td>
- <code>
- family:serpin
- </code>
- </td>
- <td>
- Lists all entries belonging to the Serpin family of proteins.
- </td>
- </tr>
- <tr>
- <td>fragment</td>
- <td>
- <code>
- fragment:yes
- </code>
- </td>
- <td>
- Lists all entries with an incomplete sequence.
- </td>
- </tr>
+ </td>
+ </tr>
+ <tr>
+ <td>database</td>
+ <td><code>
+ database:(type:pfam) <br /> database:(type:pdb 1aut)
+ </code></td>
+ <td>Lists all entries with:
+ <ul>
+ <li>a cross-reference to the Pfam database</li>
+ <li>a cross-reference to the PDB database entry 1aut</li>
+ </ul>
- <tr>
- <td>gene</td>
- <td>
- <code>
- gene:HSPC233
- </code>
- </td>
- <td>
- Lists all entries for proteins encoded by gene HSPC233.
- </td>
- </tr>
- <tr>
- <td>go</td>
- <td>
- <code>
- go:cytoskeleton
- <br />
- go:0015629
- </code>
- </td>
- <td>
- Lists all entries associated with:
- <ul>
- <li>a GO term containing the word "cytoskeleton"</li>
- <li>the GO term Actin cytoskeleton and any subclasses</li>
- </ul>
- </td>
- </tr>
- <tr>
- <td>host</td>
- <td>
- <code>
- host:mouse
- <br />
- host:10090
- <br />
- host:40674
- </code>
- </td>
- <td>
- Lists all entries for viruses infecting:
- <ul>
- <li>organisms with a name containing the word "mouse"</li>
- <li>Mus musculus (Mouse)</li>
- <li>all mammals (all taxa classified under the taxonomy node for Mammalia)</li>
- </ul>
- </td>
- </tr>
- <tr>
- <td>id</td>
- <td>
- <code>id:P00750</code>
- </td>
- <td>
- Returns the entry with the primary
- accession number P00750.
- </td>
- </tr>
- <tr>
- <td>inn</td>
- <td>
- <code>
- inn:Anakinra
- </code>
- </td>
- <td>
- Lists all entries whose "International Nonproprietary Name" is Anakinra.
- </td>
- </tr>
- <tr>
- <td>interactor</td>
- <td>
- <code>
- interactor:P00520
- </code>
- </td>
- <td>
- Lists all entries describing interactions with the protein described by
- entry P00520.
- </td>
- </tr>
- <tr>
- <td>keyword</td>
- <td>
- <code>
- keyword:toxin
- </code>
- </td>
- <td>
- Lists all entries associated with the keyword Toxin.
- </td>
- </tr>
- <tr>
- <td>length</td>
- <td>
- <code>
- length:[500 TO 700]
- </code>
- </td>
- <td>
- Lists all entries describing sequences of length between 500 and 700 residues.
- </td>
- </tr>
- <tr>
- <td>lineage</td>
- <td />
- <td>
- This field is a synonym for the field <code>taxonomy</code>.
- </td>
- </tr>
- <tr>
- <td>mass</td>
- <td>
- <code>
- mass:[500000 TO *]
- </code>
- </td>
- <td>
- Lists all entries describing sequences with a mass of at least 500,000 Da.
- </td>
- </tr>
- <tr>
- <td>method</td>
- <td>
- <code>
- method:maldi
- <br />
- method:xray
- </code>
- </td>
- <td>
- Lists all entries for proteins identified by: matrix-assisted laser
- desorption/ionization (MALDI), crystallography (X-Ray). The
- <code>method</code> field searches names of physico-chemical
- identification methods in the 'Biophysicochemical properties' subsection of the 'Function' section, the 'Publications' and
- 'Cross-references' sections.
- </td>
- </tr>
- <tr>
- <td>mnemonic</td>
- <td>
- <code>
- mnemonic:ATP6_HUMAN
- </code>
- </td>
- <td>
- Lists all entries with entry name (ID) ATP6_HUMAN. Searches also
- obsolete entry names.
- </td>
- </tr>
- <tr>
- <td>modified</td>
- <td>
- <code>
- modified:[20120101 TO 20120301]<br />
- reviewed:yes AND modified:[current TO *]
- </code>
- </td>
- <td>
- Lists all entries that were last modified between January and March 2012.<br />
- Lists all UniProtKB/Swiss-Prot entries modified in the last release.
- </td>
- </tr>
- <tr>
- <td>name</td>
- <td>
- <code>
- name:"prion protein"
- </code>
- </td>
- <td>
- Lists all entries for prion proteins.
- </td>
- </tr>
- <tr>
- <td>organelle</td>
- <td>
- <code>
- organelle:Mitochondrion
- </code>
- </td>
- <td>
- Lists all entries for proteins encoded by a gene of the mitochondrial
- chromosome.
- </td>
- </tr>
- <tr>
- <td>organism</td>
- <td>
- <code>
- organism:"Ovis aries"
- <br />
- organism:9940
- <br />
- organism:sheep
- <br />
- </code>
- </td>
- <td>
- Lists all entries for proteins expressed in sheep (first 2 examples) and
- organisms whose name contains the term "sheep".
- </td>
- </tr>
-
- <tr>
- <td>plasmid</td>
- <td>
- <code>
- plasmid:ColE1
- </code>
- </td>
- <td>
- Lists all entries for proteins encoded by a gene of plasmid ColE1.
- </td>
- </tr>
- <tr>
- <td>proteome</td>
- <td>
- <code>
- proteome:UP000005640
- </code>
- </td>
- <td>
- Lists all entries from the human proteome.
- </td>
- </tr>
- <tr>
- <td>proteomecomponent</td>
- <td>
- <code>
- proteomecomponent:"chromosome 1" and organism:9606
- </code>
- </td>
- <td>
- Lists all entries from the human chromosome 1.
- </td>
- </tr>
- <tr>
- <td>replaces</td>
- <td>
- <code>
- replaces:P02023
- </code>
- </td>
- <td>
- Lists all entries that were created from a merge with entry P02023.
- </td>
- </tr>
- <tr>
- <td>reviewed</td>
- <td>
- <code>
- reviewed:yes
- </code>
- </td>
- <td>
- Lists all UniProtKB/Swiss-Prot entries.
- </td>
- </tr>
- <tr>
- <td>scope</td>
- <td>
- <code>
- scope:mutagenesis
- </code>
- </td>
- <td>
- Lists all entries containing a reference that was used to gather
- information about mutagenesis.
- </td>
- </tr>
- <tr>
- <td>sequence</td>
- <td>
- <code>
- sequence:P05067-9
- </code>
- </td>
- <td>
- Lists all entries containing a link to isoform 9 of the sequence
- described in entry P05067. Allows searching by specific sequence
- identifier.
- </td>
- </tr>
- <tr>
- <td>sequence_modified</td>
- <td>
- <code>
- sequence_modified:[20120101 TO 20120301]<br />
- reviewed:yes AND sequence_modified:[current TO *]
- </code>
- </td>
- <td>
- Lists all entries whose sequences were last modified between January and March 2012.<br />
- Lists all UniProtKB/Swiss-Prot entries whose sequences were modified in the last release.
- </td>
- </tr>
- <tr>
- <td>source</td>
- <td>
- <code>
- source:intact
- </code>
- </td>
- <td>
- Lists all entries containing a GO term whose annotation source is the
- IntAct database.
- </td>
- </tr>
- <tr>
- <td>strain</td>
- <td>
- <code>
- strain:wistar
- </code>
- </td>
- <td>
- Lists all entries containing a reference relevant to strain wistar.
- </td>
- </tr>
- <tr>
- <td>taxonomy</td>
- <td>
- <code>
- taxonomy:40674
- </code>
- </td>
- <td>
- Lists all entries for proteins expressed in Mammals. This field is used to retrieve
- entries for all organisms classified below a given taxonomic node taxonomy classification).
- </td>
- </tr>
- <tr>
- <td>tissue</td>
- <td>
- <code>
- tissue:liver
- </code>
- </td>
- <td>
- Lists all entries containing a reference describing the protein sequence
- obtained from a clone isolated from liver.
- </td>
- </tr>
- <tr>
- <td>web</td>
- <td>
- <code>
- web:wikipedia
- </code>
- </td>
- <td>
- Lists all entries for proteins that are described in Wikipedia.
- </td>
- </tr>
-</table>
+ </td>
+ </tr>
+ <tr>
+ <td>domain</td>
+ <td><code> domain:VWFA </code></td>
+ <td>Lists all entries with a Von Willebrand factor type A
+ domain described in the 'Family and Domains' section.</td>
+ </tr>
+ <tr>
+ <td>ec</td>
+ <td><code> ec:3.2.1.23 </code></td>
+ <td>Lists all beta-galactosidases.</td>
+ </tr>
+ <tr>
+ <td>evidence</td>
+ <td><code>
+ annotation:(type:signal evidence:ECO_0000269)<br />
+ (type:mod_res phosphoserine evidence:ECO_0000269)<br />
+ annotation:(type:function AND evidence:ECO_0000255)
+ </code></td>
+ <td>Lists all entries with:
+ <ul>
+ <li>a signal sequence whose positions have been
+ experimentally proven</li>
+ <li>experimentally proven phosphoserine sites</li>
+ <li>a function manually asserted according to rules</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td>family</td>
+ <td><code> family:serpin </code></td>
+ <td>Lists all entries belonging to the Serpin family of
+ proteins.</td>
+ </tr>
+ <tr>
+ <td>fragment</td>
+ <td><code> fragment:yes </code></td>
+ <td>Lists all entries with an incomplete sequence.</td>
+ </tr>
+
+ <tr>
+ <td>gene</td>
+ <td><code> gene:HSPC233 </code></td>
+ <td>Lists all entries for proteins encoded by gene HSPC233.</td>
+ </tr>
+ <tr>
+ <td>go</td>
+ <td><code>
+ go:cytoskeleton <br /> go:0015629
+ </code></td>
+ <td>Lists all entries associated with:
+ <ul>
+ <li>a GO term containing the word "cytoskeleton"</li>
+ <li>the GO term Actin cytoskeleton and any subclasses</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td>host</td>
+ <td><code>
+ host:mouse <br /> host:10090 <br /> host:40674
+ </code></td>
+ <td>Lists all entries for viruses infecting:
+ <ul>
+ <li>organisms with a name containing the word "mouse"</li>
+ <li>Mus musculus (Mouse)</li>
+ <li>all mammals (all taxa classified under the taxonomy
+ node for Mammalia)</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td>id</td>
+ <td><code>id:P00750</code></td>
+ <td>Returns the entry with the primary accession number
+ P00750.</td>
+ </tr>
+ <tr>
+ <td>inn</td>
+ <td><code> inn:Anakinra </code></td>
+ <td>Lists all entries whose "International Nonproprietary
+ Name" is Anakinra.</td>
+ </tr>
+ <tr>
+ <td>interactor</td>
+ <td><code> interactor:P00520 </code></td>
+ <td>Lists all entries describing interactions with the
+ protein described by entry P00520.</td>
+ </tr>
+ <tr>
+ <td>keyword</td>
+ <td><code> keyword:toxin </code></td>
+ <td>Lists all entries associated with the keyword Toxin.</td>
+ </tr>
+ <tr>
+ <td>length</td>
+ <td><code> length:[500 TO 700] </code></td>
+ <td>Lists all entries describing sequences of length between
+ 500 and 700 residues.</td>
+ </tr>
+ <tr>
+ <td>lineage</td>
+ <td />
+ <td>This field is a synonym for the field <code>taxonomy</code>.
+ </td>
+ </tr>
+ <tr>
+ <td>mass</td>
+ <td><code> mass:[500000 TO *] </code></td>
+ <td>Lists all entries describing sequences with a mass of at
+ least 500,000 Da.</td>
+ </tr>
+ <tr>
+ <td>method</td>
+ <td><code>
+ method:maldi <br /> method:xray
+ </code></td>
+ <td>Lists all entries for proteins identified by:
+ matrix-assisted laser desorption/ionization (MALDI),
+ crystallography (X-Ray). The <code>method</code> field searches
+ names of physico-chemical identification methods in the
+ 'Biophysicochemical properties' subsection of the 'Function'
+ section, the 'Publications' and 'Cross-references' sections.
+ </td>
+ </tr>
+ <tr>
+ <td>mnemonic</td>
+ <td><code> mnemonic:ATP6_HUMAN </code></td>
+ <td>Lists all entries with entry name (ID) ATP6_HUMAN.
+ Searches also obsolete entry names.</td>
+ </tr>
+ <tr>
+ <td>modified</td>
+ <td><code>
+ modified:[20120101 TO 20120301]<br /> reviewed:yes AND
+ modified:[current TO *]
+ </code></td>
+ <td>Lists all entries that were last modified between January
+ and March 2012.<br /> Lists all UniProtKB/Swiss-Prot entries
+ modified in the last release.
+ </td>
+ </tr>
+ <tr>
+ <td>name</td>
+ <td><code> name:"prion protein" </code></td>
+ <td>Lists all entries for prion proteins.</td>
+ </tr>
+ <tr>
+ <td>organelle</td>
+ <td><code> organelle:Mitochondrion </code></td>
+ <td>Lists all entries for proteins encoded by a gene of the
+ mitochondrial chromosome.</td>
+ </tr>
+ <tr>
+ <td>organism</td>
+ <td><code>
+ organism:"Ovis aries" <br /> organism:9940 <br />
+ organism:sheep <br />
+ </code></td>
+ <td>Lists all entries for proteins expressed in sheep (first
+ 2 examples) and organisms whose name contains the term "sheep".
+ </td>
+ </tr>
+
+ <tr>
+ <td>plasmid</td>
+ <td><code> plasmid:ColE1 </code></td>
+ <td>Lists all entries for proteins encoded by a gene of
+ plasmid ColE1.</td>
+ </tr>
+ <tr>
+ <td>proteome</td>
+ <td><code> proteome:UP000005640 </code></td>
+ <td>Lists all entries from the human proteome.</td>
+ </tr>
+ <tr>
+ <td>proteomecomponent</td>
+ <td><code> proteomecomponent:"chromosome 1" and
+ organism:9606 </code></td>
+ <td>Lists all entries from the human chromosome 1.</td>
+ </tr>
+ <tr>
+ <td>replaces</td>
+ <td><code> replaces:P02023 </code></td>
+ <td>Lists all entries that were created from a merge with
+ entry P02023.</td>
+ </tr>
+ <tr>
+ <td>reviewed</td>
+ <td><code> reviewed:yes </code></td>
+ <td>Lists all UniProtKB/Swiss-Prot entries.</td>
+ </tr>
+ <tr>
+ <td>scope</td>
+ <td><code> scope:mutagenesis </code></td>
+ <td>Lists all entries containing a reference that was used to
+ gather information about mutagenesis.</td>
+ </tr>
+ <tr>
+ <td>sequence</td>
+ <td><code> sequence:P05067-9 </code></td>
+ <td>Lists all entries containing a link to isoform 9 of the
+ sequence described in entry P05067. Allows searching by specific
+ sequence identifier.</td>
+ </tr>
+ <tr>
+ <td>sequence_modified</td>
+ <td><code>
+ sequence_modified:[20120101 TO 20120301]<br /> reviewed:yes
+ AND sequence_modified:[current TO *]
+ </code></td>
+ <td>Lists all entries whose sequences were last modified
+ between January and March 2012.<br /> Lists all
+ UniProtKB/Swiss-Prot entries whose sequences were modified in
+ the last release.
+ </td>
+ </tr>
+ <tr>
+ <td>source</td>
+ <td><code> source:intact </code></td>
+ <td>Lists all entries containing a GO term whose annotation
+ source is the IntAct database.</td>
+ </tr>
+ <tr>
+ <td>strain</td>
+ <td><code> strain:wistar </code></td>
+ <td>Lists all entries containing a reference relevant to
+ strain wistar.</td>
+ </tr>
+ <tr>
+ <td>taxonomy</td>
+ <td><code> taxonomy:40674 </code></td>
+ <td>Lists all entries for proteins expressed in Mammals. This
+ field is used to retrieve entries for all organisms classified
+ below a given taxonomic node taxonomy classification).</td>
+ </tr>
+ <tr>
+ <td>tissue</td>
+ <td><code> tissue:liver </code></td>
+ <td>Lists all entries containing a reference describing the
+ protein sequence obtained from a clone isolated from liver.</td>
+ </tr>
+ <tr>
+ <td>web</td>
+ <td><code> web:wikipedia </code></td>
+ <td>Lists all entries for proteins that are described in
+ Wikipedia.</td>
+ </tr>
+ </table>
</body>
</html>
\ No newline at end of file
<body>
<strong>The UniProt Free Text Search Interface</strong>
- <br /> Since version 2.10 (September 2016), the Jalview Desktop
+ <br /> Since version 2.10 (October 2016), the Jalview Desktop
provides a search interface for interactive discovery and retrieval of
sequence data from UniProt. This dialog enables UniProt sequence
metadata to be searched with free text and structured queries, which
mnt_mouse).<br />Hitting Return or OK will automatically fetch
those IDs, like the default Sequence Fetcher interface.</li>
- <li><strong><a name="text-search">Complex queries with the UniProt query
- Syntax</a></strong> The text box also allows complex queries to be entered.
- The table below provides a brief overview of the supported syntax
- (see <a href="uniprotqueryfields.html">query fields for
- UniProtKB</a>):
+ <li><strong><a name="text-search">Complex queries
+ with the UniProt query Syntax</a></strong> The text box also allows complex
+ queries to be entered. The table below provides a brief overview
+ of the supported syntax (see <a href="uniprotqueryfields.html">query
+ fields for UniProtKB</a>):
<table border="1" width="95%">
<tr>
<td><code>human antigen</code></td>
</p>
<p>To change the displayed meta-data in the search result, click
the 'Customise Displayed Options' tab, and select the fields you'd
- like to displayed or remove.</p>
+ like to be displayed or removed.</p>
<p>
<em>The UniProt Free Test Search Interface was introduced in
Jalview 2.10.0</em>
<strong>The VARNA RNA Viewer</strong>
</p>
<p>
- <a href="http://varna.lri.fr">VARNA</a> was integrated
- into Jalview 2.8 to allow interactive viewing of RNA secondary
- structure annotation. It is opened by selecting the <strong>"Structure→View
+ <a href="http://varna.lri.fr">VARNA</a> was integrated into Jalview
+ 2.8 to allow interactive viewing of RNA secondary structure
+ annotation. It is opened by selecting the <strong>"Structure→View
Structure:"</strong> option in the <a href="../menus/popupMenu.html">sequence
id pop-up menu</a> (if you can't see this, then no RNA structure is
associated with your sequence or alignment). In the pop-up menu all
<p>
VARNA is a very powerful RNA viewer on its own. Only the essentials
have been described here - the interested reader is referred to <a
- href="http://varna.lri.fr/index.php?page=manual&css=varna"
- >VARNA's own comprehensive online documentation</a>.
+ href="http://varna.lri.fr/index.php?page=manual&css=varna">VARNA's
+ own comprehensive online documentation</a>.
</p>
</body>
</html>
</ul>
</li>
<li><strong>Selecting Structures</strong><br />You can select
- the structures that you want to open and view by selecting them with
- the mouse and keyboard.<br />By default, if structures were
+ the structures that you want to open and view by selecting them
+ with the mouse and keyboard.<br />By default, if structures were
discovered, then some will already be selected according to the
criteria shown in the drop-down menu. The default criteria is
'highest resolution', simply choose another to pick structures in
dialog box.</li>
</ul></li>
<li><strong>To view selected structures, click the <strong>"View"</strong>
- button.</strong><br />
+ button.
+ </strong><br />
<ul>
<li>Additional structure data will be downloaded with the
EMBL-EBI's dbfetch service</li>
retrieved with this service are derived directly from the PDB 3D
structure data, which can be viewed in the same way above. Secondary
structure and temperature factor annotation can also be added. <br />
-
- <br>Jalview
- will also read PDB files directly - either in PDB format, or <a
- href="mmcif.html">mmCIF</a>. Simply load in the file as you would
- an alignment file. The sequences of any protein or nucleotide chains
- will be extracted from the file and viewed in the alignment window.
+
+ <br>Jalview will also read PDB files directly - either in PDB
+ format, or <a href="mmcif.html">mmCIF</a>. Simply load in the file
+ as you would an alignment file. The sequences of any protein or
+ nucleotide chains will be extracted from the file and viewed in the
+ alignment window.
</p>
<p>
Features"</strong> menu item and the <a href="featuresettings.html">Feature
Settings dialog box</a>.
</p>
- <br/>
+ <br />
<hr>
<p>
<strong>Switching between mmCIF and PDB format for
tab in the <strong>Tools→Preferences</strong> dialog allow the
processing of structure data to be disabled, or selectively enabled.
For more information, take a look at the <a
- href="preferences.html#structure"
- >documentation for the structure panel</a>.
+ href="preferences.html#structure">documentation for the
+ structure panel</a>.
</p>
<p>
<em>The display of secondary structure data was introduced in
Jalview 2.8.2, and is made possible by Jalview's use of <a
- href="jmol.html"
- >Jmol's DSSP implementation</a>, based on the original <a
- href="http://www.ncbi.nlm.nih.gov/pubmed/6667333"
- >Kabsch and Sander algorithm</a> ported by <a
- href="http://swift.cmbi.ru.nl/gv/dssp/"
- >Robbie P. Joosten and colleagues</a>, and a client for <a
- href="https://github.com/fjossinet/PyRNA"
- >Fabrice Jossinet's pyRNA services</a> that was developed by Anne
- Menard, Jim Procter and Yann Ponty as part of the Jalview Summer
- of Code 2012.
+ href="jmol.html">Jmol's DSSP implementation</a>, based on the
+ original <a href="http://www.ncbi.nlm.nih.gov/pubmed/6667333">Kabsch
+ and Sander algorithm</a> ported by <a
+ href="http://swift.cmbi.ru.nl/gv/dssp/">Robbie P. Joosten
+ and colleagues</a>, and a client for <a
+ href="https://github.com/fjossinet/PyRNA">Fabrice
+ Jossinet's pyRNA services</a> that was developed by Anne Menard, Jim
+ Procter and Yann Ponty as part of the Jalview Summer of Code 2012.
</em>
</p>
</body>
<body>
<p>
<strong>Extending Jalview with Groovy - A customisable
- feature counter</strong><br />
- <br />The groovy script below shows how to add a new calculation
- track to a Jalview alignment window.</p><p>As currently written, it will
- add two tracks to a protein alignment view which count Pfam features
- in each column, and ones where a charge residue also occur.</p><p>To try
- it for yourself:</p><ol><li>Copy and paste it into the groovy script
- console</li><li>Load the example Feredoxin project (the one that opens
- by default when you first launched Jalview)</li><li>Select <strong>Calculations→Execute
- Groovy Script</strong> from the alignment window's menu bar to run the script on
- the current view.</li></ol>
+ feature counter</strong><br /> <br />The groovy script below shows how to
+ add a new calculation track to a Jalview alignment window.
+ </p>
+ <p>As currently written, it will add two tracks to a protein
+ alignment view which count Pfam features in each column, and ones
+ where a charge residue also occur.</p>
+ <p>To try it for yourself:</p>
+ <ol>
+ <li>Copy and paste it into the groovy script console</li>
+ <li>Load the example Feredoxin project (the one that opens by
+ default when you first launched Jalview)</li>
+ <li>Select <strong>Calculations→Execute Groovy
+ Script</strong> from the alignment window's menu bar to run the script on
+ the current view.
+ </li>
+ </ol>
<em><a
- href="http://www.jalview.org/examples/groovy/featureCounter.groovy">http://www.jalview.org/examples/groovy/featureCounter.groovy</a> - rendered with <a href="http://hilite.me">hilite.me</a></em>
+ href="http://www.jalview.org/examples/groovy/featureCounter.groovy">http://www.jalview.org/examples/groovy/featureCounter.groovy</a>
+ - rendered with <a href="http://hilite.me">hilite.me</a></em>
<!-- HTML generated using hilite.me -->
<div
style="background: #ffffff; overflow: auto; width: auto; border: solid gray; border-width: .1em .1em .1em .8em; padding: .2em .6em;">
<p>
For more information, you might also want to take a look at the
documentation section of the Jalview website (<a
- href="http://www-test.jalview.org/about/documentation"
- >http://www.jalview.org/about/documentation</a>).
+ href="http://www-test.jalview.org/about/documentation">http://www.jalview.org/about/documentation</a>).
</p>
<p>
If you are using the Jalview Desktop application and are looking for
google the online version of these pages. If you don't find what you
are looking for, or want to report a bug or make a feature request,
then get in contact over at <a
- href="http://www.jalview.org/community"
- >http://www.jalview.org/community</a>
+ href="http://www.jalview.org/community">http://www.jalview.org/community</a>
</p>
<p>
<strong>25</strong> (9) 1189-1191 doi: 10.1093/bioinformatics/btp033
</p>
<p>
- <strong>The Jalview Authors</strong><br /> The following people have
- contributed to Jalview's development:
+ <strong>The Jalview Authors</strong><br /> The following people
+ have contributed to Jalview's development:
<ul>
<li>Jalview 1
<ul>
<body>
<p>
<strong>Exporting alignments as graphics and lineart<a
- name="export"
- ></a></strong>
+ name="export"></a></strong>
</p>
<p>
The alignment view can be printed using <strong>File→Print</strong>,
menu</a>.
</p>
<img src="seqreport.gif"
- alt="Sequence Annotation is displayed as HTML in a report window"
- />
+ alt="Sequence Annotation is displayed as HTML in a report window" />
<p>
<strong>Copying and pasting annotation to other programs</strong><br>
The <strong>File→Save</strong> option in the sequence
<tr>
<td width="17%">JSON</td>
<td width="60%">Data starts with '{' <br>Data ends with
- '}' <br>
- <br>See <a href="../features/bioJsonFormat.html">BioJSON</a>
- for more infomation about the Jalview JSON format <br></td>
+ '}' <br> <br>See <a
+ href="../features/bioJsonFormat.html">BioJSON</a> for more
+ infomation about the Jalview JSON format <br></td>
<td width="23%">.json</td>
</tr>
</p>
<p>
Jalview can also read Jalview specific files for <a
- href="../features/featuresFormat.html"
- >sequence features</a> and <a
- href="../features/annotationsFormat.html"
- >alignment annotation</a>.
+ href="../features/featuresFormat.html">sequence features</a>
+ and <a href="../features/annotationsFormat.html">alignment
+ annotation</a>.
</p>
<p>
<strong>Output</strong>
</p>
<p>
The homology modelling program, <a
- href="http://salilab.org/modeller/"
- >Modeller</a> uses a special form of the PIR format where information
- about sequence numbering and chain codes are written into the
- 'description' line between the PIR protein tag and the protein
- alignment entry:
+ href="http://salilab.org/modeller/">Modeller</a> uses a
+ special form of the PIR format where information about sequence
+ numbering and chain codes are written into the 'description' line
+ between the PIR protein tag and the protein alignment entry:
</p>
<pre>>P1;Q93Z60_ARATH
sequence:Q93Z60_ARATH:1:.:118:.:.
no information is lost if this parsing process fails.</p>
<p>
The 'Modeller Output' flag in the 'Output' tab of the Jalview <a
- href="../features/preferences.html"
- >Preferences dialog box</a> controls whether Jalview will also output
- MODELLER style PIR files. In this case, any existing 'non-modeller
- PIR' header information in the description string of an alignment is
- appended to an automatically generated modeller description line for
- that sequence.
+ href="../features/preferences.html">Preferences dialog
+ box</a> controls whether Jalview will also output MODELLER style PIR
+ files. In this case, any existing 'non-modeller PIR' header
+ information in the description string of an alignment is appended to
+ an automatically generated modeller description line for that
+ sequence.
</p>
<p>The general format used for generating the Modeller/PIR
sequence description line is shown below :
T-COFFEE score files like the <a href="#tcoffeeeg">one below</a> can
be displayed on the alignment using the <strong><em>Colours→T-COFFEE
Scores</em></strong> or <strong><em>Colour → <a
- href="../colourSchemes/annotationColouring.html"
- >Colour by Annotation</a></em></strong> options.
+ href="../colourSchemes/annotationColouring.html">Colour
+ by Annotation</a></em></strong> options.
</p>
<img src="../colourSchemes/colbytcoffee.png" />
<p>
Jalview has two distinct modes of keyboard operation - in 'Normal'
mode, single keystrokes (including those shown next to menu items)
provide short cuts to common commands. In <a
- href="features/cursorMode.html"
- >'Cursor'</a> mode (enabled by <em>F2</em>), some of these are
- disabled and more complex 'Compound Keystrokes' can be entered to
- perform precise navigation, selection and editing operations.
+ href="features/cursorMode.html">'Cursor'</a> mode (enabled by
+ <em>F2</em>), some of these are disabled and more complex 'Compound
+ Keystrokes' can be entered to perform precise navigation, selection
+ and editing operations.
</p>
<table border="1">
<tr>
<td>Cursor</td>
<td>Move cursor to a particular column (<strong><em>p1</em></strong>)
and row (<strong><em>p2</em></strong>) in the alignment.<br>
- <em>e.g. '5,6<Return>' moves the cursor to the 5th
+ <em>e.g. '5,6<Return>' moves the cursor to the 5th
column in the 6th sequence.</em></td>
</tr>
<tr>
<td><strong><em>[p]</em><br>Space</strong></td>
<td>Cursor</td>
<td>Inserts one (or optionally <strong><em>p</em></strong>)
- gaps at the current position.<br>
- <em>Hold down Control or Shift to insert gaps over a sequence
- group</em></td>
+ gaps at the current position.<br> <em>Hold down
+ Control or Shift to insert gaps over a sequence group</em></td>
</tr>
<tr>
<td><strong><em>[p]</em><br>Delete<br></strong></td>
<td>Cursor</td>
<td>Removes one (or optionally <strong><em>p</em></strong>)
- gaps at the cursor position.<br>
- <em>Hold down Control or Shift to insert gaps over a sequence
- group</em></td>
+ gaps at the cursor position.<br> <em>Hold down Control
+ or Shift to insert gaps over a sequence group</em></td>
</tr>
<tr>
<td><strong><em>[p]</em><br>Backspace<br></strong></td>
<td>Cursor</td>
<td>Removes one (or optionally <strong><em>p</em></strong>)
- gaps at the cursor position.<br>
- <em>Hold down Control or Shift to insert gaps over a sequence
- group</em></td>
+ gaps at the cursor position.<br> <em>Hold down Control
+ or Shift to insert gaps over a sequence group</em></td>
</tr>
</table>
<p> </p>
file. You can obtain a JNLP file with modified memory settings
from our service with the following link (replace 2G with
desired memory in G or M):<br /> <a
- href="http://www.jalview.org/services/launchApp?jvm-max-heap=2G"
- >http://www.jalview.org/services/launchApp?jvm-max-heap=2G</a>
+ href="http://www.jalview.org/services/launchApp?jvm-max-heap=2G">http://www.jalview.org/services/launchApp?jvm-max-heap=2G</a>
</p>
<p>
Alternatively, if you want to create your own JNLP file then
please download the latest JNLP file from <a
- href="http://www.jalview.org/webstart/jalview.jnlp"
- >http://www.jalview.org/webstart/jalview.jnlp</a> and modify the
- max-heap-size parameter for the j2se tag in the
+ href="http://www.jalview.org/webstart/jalview.jnlp">http://www.jalview.org/webstart/jalview.jnlp</a>
+ and modify the max-heap-size parameter for the j2se tag in the
<resources> element. e.g.
<pre>
<j2se version="1.7+" initial-heap-size="500M" max-heap-size="1000M"/>
The lines you need to change are in the <em>Info.plist</em>
file inside the <em>Jalview.app/Contents</em> directory
(which is where the installAnywhere installation was made) :
+
<pre>
<key&ht;VMOptions</key&ht;
</em></li>
<li><strong>Load Features / Annotations<br>
</strong><em>Load files describing precalculated <a
- href="../features/featuresFormat.html"
- >sequence features</a> or <a
- href="../features/annotationsFormat.html"
- >alignment annotations</a>.
+ href="../features/featuresFormat.html">sequence
+ features</a> or <a href="../features/annotationsFormat.html">alignment
+ annotations</a>.
</em></li>
<li><strong>Close (Control W)</strong><br> <em>Close
the alignment window. Make sure you have saved your
</strong><em>All columns which only contain gap characters
("-", ".") will be deleted.<br> You
may set the default gap character in <a
- href="../features/preferences.html"
- >preferences</a>.
+ href="../features/preferences.html">preferences</a>.
</em></li>
<li><strong>Remove All Gaps (Control Shift E)</strong><br>
<em>Gap characters ("-", ".") will be
deleted from the selected area of the alignment. If no
selection is made, ALL the gaps in the alignment will be
removed.<br> You may set the default gap character in <a
- href="../features/preferences.html"
- >preferences</a>.
+ href="../features/preferences.html">preferences</a>.
</em></li>
<li><strong>Remove Redundancy (Control D)<br>
</strong><em>Selecting this option brings up a window asking you to
with alignment analysis programs which require 'properly
aligned sequences' to be all the same length.<br> You
may set the default for <strong>Pad Gaps</strong> in the <a
- href="../features/preferences.html"
- >preferences</a>.
+ href="../features/preferences.html">preferences</a>.
</em></li>
</ul></li>
<li><strong>Select</strong>
<strong>WARNING</strong>: This cannot be undone.
</em></li>
<li><strong><a
- href="../features/columnFilterByAnnotation.html"
- >Select/Hide Columns by Annotation</a></strong> <br /> <em>Select
- or Hide columns in the alignment according to secondary
- structure, labels and values shown in alignment annotation
- rows. </em></li>
+ href="../features/columnFilterByAnnotation.html">Select/Hide
+ Columns by Annotation</a></strong> <br /> <em>Select or Hide
+ columns in the alignment according to secondary structure,
+ labels and values shown in alignment annotation rows. </em></li>
</ul></li>
<li><strong>View</strong>
<ul>
<li><strong>Show Sequence Features</strong><br> <em>Show
or hide sequence features on this alignment.</em></li>
<li><strong><a
- href="../features/featuresettings.html"
- >Sequence Feature Settings...</a> </strong><em><br> <em>Opens
- the Sequence Feature Settings dialog box to control the
- colour and display of sequence features on the alignment,
- and configure and retrieve features from DAS annotation
+ href="../features/featuresettings.html">Sequence
+ Feature Settings...</a> </strong><em><br> <em>Opens the
+ Sequence Feature Settings dialog box to control the colour
+ and display of sequence features on the alignment, and
+ configure and retrieve features from DAS annotation
servers.</em></li>
<li><strong>Sequence ID Tooltip</strong><em>
(application only) <br>This submenu's options allow the
rendering. </em></li>
<li><strong>Wrap<br>
</strong><em>When ticked, the alignment display is "<a
- href="../features/wrap.html"
- >wrapped</a>" to the width of the alignment window. This is
- useful if your alignment has only a few sequences to view
- its full width at once.
+ href="../features/wrap.html">wrapped</a>" to
+ the width of the alignment window. This is useful if your
+ alignment has only a few sequences to view its full width at
+ once.
</em><br> Additional options for display of sequence numbering
and scales are also visible in wrapped layout mode:<br>
<ul>
- <li><strong>Scale Above</strong><br>
- <em> Show the alignment column position scale.</em></li>
- <li><strong>Scale Left</strong><br>
- <em> Show the sequence position for the first aligned
- residue in each row in the left column of the alignment.</em></li>
- <li><strong>Scale Right</strong><br>
- <em> Show the sequence position for the last aligned
- residue in each row in the right-most column of the
- alignment.</em></li>
+ <li><strong>Scale Above</strong><br> <em>
+ Show the alignment column position scale.</em></li>
+ <li><strong>Scale Left</strong><br> <em> Show
+ the sequence position for the first aligned residue in
+ each row in the left column of the alignment.</em></li>
+ <li><strong>Scale Right</strong><br> <em>
+ Show the sequence position for the last aligned residue
+ in each row in the right-most column of the alignment.</em></li>
<li><strong>Show Sequence Limits<br>
</strong><em>If this box is selected the sequence name will have
the start and end position of the sequence appended to
colour will be applied to all currently defined groups.<br>
</em></li>
<li><strong><a
- href="../colourSchemes/textcolour.html"
- >Colour Text...</a> </strong><em><br> Opens the Colour Text
- dialog box to set a different text colour for light and dark
- background, and the intensity threshold for transition between
- them. </em></li>
+ href="../colourSchemes/textcolour.html">Colour
+ Text...</a> </strong><em><br> Opens the Colour Text dialog box
+ to set a different text colour for light and dark background,
+ and the intensity threshold for transition between them. </em></li>
<li>Colour Scheme options: <strong>None, ClustalX,
Blosum62 Score, Percentage Identity, Zappo, Taylor,
Hydrophobicity, Helix Propensity, Strand Propensity, Turn
<li><strong>By Annotation</strong><br> <em>Colours
the alignment on a per-column value from a specified
annotation. See <a
- href="../colourSchemes/annotationColouring.html"
- >Annotation Colouring</a>.
+ href="../colourSchemes/annotationColouring.html">Annotation
+ Colouring</a>.
</em><br></li>
<li><strong>By RNA Helices</strong><br> <em>Colours
the helices of an RNA alignment loaded from a Stockholm file.
provided in this menu.</strong></li>
<li><strong>Pairwise Alignments</strong><br> <em>Applies
Smith and Waterman algorithm to selected sequences. See <a
- href="../calculations/pairwise.html"
- >pairwise alignments</a>.
+ href="../calculations/pairwise.html">pairwise
+ alignments</a>.
</em><br></li>
<li><strong>Principal Component Analysis</strong><br> <em>Shows
a spatial clustering of the sequences based on similarity
scores calculated with the alignment. See <a
- href="../calculations/pca.html"
- >Principal Component Analysis</a>.
+ href="../calculations/pca.html">Principal
+ Component Analysis</a>.
</em> <br></li>
<li><strong>Extract Scores ... (optional)</strong><br> <em>This
option is only visible if Jalview detects one or more
or elsewhere. You need a continuous network connection in order to
use these services through Jalview.</p>
<ul>
- <li><strong>Alignment</strong><br />
- <em> Align the currently selected sequences or all sequences
- in the alignment, or re-align unaligned sequences to the
- aligned sequences. Entries in this menu provide access to the
- various alignment programs supported by <a
- href="../webServices/JABAWS.html"
- >JABAWS</a>. See the <a href="../webServices/msaclient.html">Multiple
- Sequence Alignment webservice client</a> entry for more
- information.
+ <li><strong>Alignment</strong><br /> <em> Align the
+ currently selected sequences or all sequences in the
+ alignment, or re-align unaligned sequences to the aligned
+ sequences. Entries in this menu provide access to the various
+ alignment programs supported by <a
+ href="../webServices/JABAWS.html">JABAWS</a>. See the
+ <a href="../webServices/msaclient.html">Multiple Sequence
+ Alignment webservice client</a> entry for more information.
</em></li>
<li><strong>Secondary Structure Prediction</strong>
<ul>
<li><strong>Multi-Harmony</strong><br> <em>Performs
functional residue analysis on a protein family alignment
with sub-families defined on it. See the <a
- href="../webServices/shmr.html"
- >Multi-Harmony service</a> entry for more information.
+ href="../webServices/shmr.html">Multi-Harmony
+ service</a> entry for more information.
</em></li>
</ul></li>
</ul></li>
<body>
<p>
- <strong>Alignment Window Annotations Menu</strong> <em>Since Jalview
- 2.8.2</em>
+ <strong>Alignment Window Annotations Menu</strong> <em>Since
+ Jalview 2.8.2</em>
</p>
<ul>
<li><strong>Show Alignment Related</strong><em><br>
example, Consensus).</em></li>
<li><em>You can also selectively show or hide annotations
from the <a href="./popupMenu.html">Popup</a> or <a
- href="../features/annotation.html"
- >Annotation</a> menus.
+ href="../features/annotation.html">Annotation</a> menus.
</em></li>
<li><strong>Sort by Sequence</strong><em><br>Sort
sequence-specific annotations by sequence order in the alignment
<ul>
<li><strong>Annotation Label Popup Menu</strong><br> <em>This
menu is opened by clicking anywhere on the annotation row labels
- area (below the sequence ID area).</em>
- <br/><em><strong>Mac Users:</strong> pressing CTRL whilst clicking
- the mouse/track pad is the same as a right-click. See your
- system's settings to configure your track-pad's corners to
- generate right-clicks.</em>
+ area (below the sequence ID area).</em> <br />
+ <em><strong>Mac Users:</strong> pressing CTRL whilst clicking
+ the mouse/track pad is the same as a right-click. See your
+ system's settings to configure your track-pad's corners to
+ generate right-clicks.</em>
<ul>
<li><strong>Add New Row</strong><br> <em>Adds a
new, named annotation row (a dialog box will pop up for you
</ul></li>
<li><strong>Pairwise Alignments</strong><br> <em>Applies
Smith and Waterman algorithm to selected sequences. See <a
- href="../calculations/pairwise.html"
- >pairwise alignments</a>.
+ href="../calculations/pairwise.html">pairwise
+ alignments</a>.
</em><br></li>
<li><strong>Principal Component Analysis</strong><br> <em>Shows
a spatial clustering of the sequences based on similarity scores
calculated over the alignment.. See <a
- href="../calculations/pca.html"
- >Principal Component Analysis</a>.
+ href="../calculations/pca.html">Principal Component
+ Analysis</a>.
</em> <br></li>
<li><strong>Extract Scores ... (optional)</strong><br> <em>This
option is only visible if Jalview detects one or more
parsed into sequence associated annotation which can then be
used to sort the alignment via the Sort by→Score menu.
</em> <br></li>
- <li><strong>Translate as cDNA</strong> (not applet)<br>
- <em>This option is visible for nucleotide alignments. Selecting
- this option shows the DNA's calculated protein product in a new
- <a href="../features/splitView.html">split frame</a> window.
- Note that the translation is not frame- or intron-aware; it
- simply translates all codons in each sequence, using the
- standard <a href="../misc/geneticCode.html">genetic code</a>
- (any incomplete final codon is discarded). You can perform this
- action on the whole alignment, or selected rows, columns, or
- regions.
+ <li><strong>Translate as cDNA</strong> (not applet)<br> <em>This
+ option is visible for nucleotide alignments. Selecting this
+ option shows the DNA's calculated protein product in a new <a
+ href="../features/splitView.html">split frame</a> window. Note
+ that the translation is not frame- or intron-aware; it simply
+ translates all codons in each sequence, using the standard <a
+ href="../misc/geneticCode.html">genetic code</a> (any incomplete
+ final codon is discarded). You can perform this action on the
+ whole alignment, or selected rows, columns, or regions.
</em> <br></li>
<li><strong>Reverse, Reverse Complement</strong> (not applet)<br>
- <em>These options are visible for nucleotide alignments. Selecting them adds the reverse (or reverse complement)
- of the sequences (or selected region) as new sequences in the alignment. To try this out, add this sequence and
- perform 'Reverse Complement' followed by 'Translate as cDNA':
- <br><small>
- Seq GTCATTTGCGCGTGTTGATTATTCGGACCGCTCCACTTCCCTTTACTCGTGCGTTCAATTGATTTAATCCTC
- TGGGGGGGCTCTGGTTTACATAGCTTAAATCTATTCCATTCAAGGAAGCTCATG</small>
+ <em>These options are visible for nucleotide alignments.
+ Selecting them adds the reverse (or reverse complement) of the
+ sequences (or selected region) as new sequences in the
+ alignment. To try this out, add this sequence and perform
+ 'Reverse Complement' followed by 'Translate as cDNA': <br>
+ <small> Seq
+ GTCATTTGCGCGTGTTGATTATTCGGACCGCTCCACTTCCCTTTACTCGTGCGTTCAATTGATTTAATCCTC
+ TGGGGGGGCTCTGGTTTACATAGCTTAAATCTATTCCATTCAAGGAAGCTCATG</small>
</em> <br></li>
<li><strong>Get Cross-References</strong> (not applet)<br>
- <em>This option is visible where sequences have
+ <em>This option is visible where sequences have
cross-references to other standard databases; for example, an
EMBL entry may have cross-references to one or more UNIPROT
entries. Select the database to view all cross-referenced
</strong><em>All columns which only contain gap characters
("-", ".") will be deleted.<br> You may
set the default gap character in <a
- href="../features/preferences.html"
- >preferences</a>.
+ href="../features/preferences.html">preferences</a>.
</em></li>
<li><strong>Remove All Gaps (Control Shift E)</strong><br>
<em>Gap characters ("-", ".") will be
deleted from the selected area of the alignment. If no selection
is made, ALL the gaps in the alignment will be removed.<br>
You may set the default gap character in <a
- href="../features/preferences.html"
- >preferences</a>.
+ href="../features/preferences.html">preferences</a>.
</em></li>
<li><strong>Remove Redundancy (Control D)<br>
</strong><em>Selecting this option brings up a window asking you to
dialog window in which you can select known ids from UniProt,
EMBL, EMBLCDS, PDB, PFAM, or RFAM databases using Web Services
provided by the European Bioinformatics Institute. See <a
- href="../features/seqfetch.html"
- >Sequence Fetcher</a>
+ href="../features/seqfetch.html">Sequence Fetcher</a>
</em>.</li>
<li><strong>Add Sequences</strong><em><br> Add
sequences to the visible alignment from file, URL, or cut &
<li><strong>Export Image</strong> <em><br> Creates an
alignment graphic with the current view's annotation, alignment
background colours and group colours. If the alignment is <a
- href="../features/wrap.html"
- >wrapped</a>, the output will also be wrapped and will have the same
- visible residue width as the open alignment. </em>
+ href="../features/wrap.html">wrapped</a>, the output will
+ also be wrapped and will have the same visible residue width as
+ the open alignment. </em>
<ul>
<li><strong>HTML<br>
</strong><em>Create a <a href="../io/export.html">web page</a> from
</em></li>
<li><strong>Load Features / Annotations<br>
</strong><em>Load files describing precalculated <a
- href="../features/featuresFormat.html"
- >sequence features</a> or <a
- href="../features/annotationsFormat.html"
- >alignment annotations</a>.
+ href="../features/featuresFormat.html">sequence
+ features</a> or <a href="../features/annotationsFormat.html">alignment
+ annotations</a>.
</em></li>
<li><strong>Close (Control W)</strong><br> <em>Close
the alignment window. Make sure you have saved your alignment
for faster alignment rendering. </em></em></li>
<li><strong>Wrap<br>
</strong><em>When ticked, the alignment display is "<a
- href="../features/wrap.html"
- >wrapped</a>" to the width of the alignment window. This is
- useful if your alignment has only a few sequences to view its full
- width at once.<br> Additional options for display of sequence
- numbering and scales are also visible in wrapped layout mode:
+ href="../features/wrap.html">wrapped</a>" to the width
+ of the alignment window. This is useful if your alignment has only
+ a few sequences to view its full width at once.<br>
+ Additional options for display of sequence numbering and scales
+ are also visible in wrapped layout mode:
</em>
<ul>
<li><strong>Scale Left</strong><br> <em>Show the
<strong>WARNING</strong>: This cannot be undone.
</em></li>
<li><strong><a
- href="../features/columnFilterByAnnotation.html"
- >Select/Hide Columns by Annotation</a></strong> <br /> <em>Select or
- Hide columns in the alignment according to secondary structure,
- labels and values shown in alignment annotation rows. </em></li>
+ href="../features/columnFilterByAnnotation.html">Select/Hide
+ Columns by Annotation</a></strong> <br /> <em>Select or Hide columns
+ in the alignment according to secondary structure, labels and
+ values shown in alignment annotation rows. </em></li>
</ul>
</body>
</html>
<li><strong>Save Project</strong><br> <em>Saves
all currently open alignment windows with their current view
settings and any associated trees, as a <a
- href="../features/jalarchive.html"
- >Jalview Archive</a> (which has a .jar extension).
+ href="../features/jalarchive.html">Jalview
+ Archive</a> (which has a .jar extension).
</em></li>
<li><strong>Load Project</strong><br> <em>Loads
Jalview archives <strong>only</strong>.
window to the top of the pile when it is selected.
<ul>
<li><strong>Close All</strong><br> Close all
- alignment and analysis windows.<br>
- <strong>Note: This will erase all alignments from
- memory, and cannot be undone!</strong></li>
+ alignment and analysis windows.<br> <strong>Note:
+ This will erase all alignments from memory, and cannot be
+ undone!</strong></li>
<li><strong>Raise Associated Windows</strong><br>
Bring all windows associated with the current alignment to
the top of the pile.</li>
<p>
The <a href="popupMenu.html">Popup Menus</a> are opened by clicking
with the right mouse button in the alignment display area or on a
- sequence label in the alignment window.<br />
- <em><strong>Mac Users:</strong> pressing CTRL whilst clicking
- the mouse/track pad is the same as a right-click. See your
- system's settings to configure your track-pad's corners to
- generate right-clicks.</em>
+ sequence label in the alignment window.<br /> <em><strong>Mac
+ Users:</strong> pressing CTRL whilst clicking the mouse/track pad is the
+ same as a right-click. See your system's settings to configure
+ your track-pad's corners to generate right-clicks.</em>
</p>
<p>
The <a href="alwannotationpanel.html">Annotations Menu</a> is opened
<body>
<p>
- <strong>Popup Menu</strong><br> <em>This menu is visible when
- right clicking either within a selected region on the alignment or
- on a selected sequence name. It may not be accessible when in
- 'Cursor Mode' (toggled with the F2 key).</em><br /> <em><strong>Mac Users:</strong> pressing CTRL whilst clicking
- the mouse/track pad is the same as a right-click. See your
- system's settings to configure your track-pad's corners to
- generate right-clicks.</em>
+ <strong>Popup Menu</strong><br> <em>This menu is visible
+ when right clicking either within a selected region on the
+ alignment or on a selected sequence name. It may not be accessible
+ when in 'Cursor Mode' (toggled with the F2 key).</em><br /> <em><strong>Mac
+ Users:</strong> pressing CTRL whilst clicking the mouse/track pad is the
+ same as a right-click. See your system's settings to configure
+ your track-pad's corners to generate right-clicks.</em>
</p>
<ul>
<li><strong>Selection</strong>
<li><a name="sqreport"><strong>Sequence
Details...<br>
</strong></a><em>(Since Jalview 2.8)<br>Open an <a
- href="../io/exportseqreport.html"
- >HTML report containing the annotation and database cross
- references</a> normally shown in the sequence's tooltip.
+ href="../io/exportseqreport.html">HTML report
+ containing the annotation and database cross references</a> normally
+ shown in the sequence's tooltip.
</em></li>
<li><strong>Show Annotations...<br>
</strong><em>Choose to show (unhide) either All or a selected type
</strong><em>The selection area will be output to a a text window in
the selected alignment format. </em></li>
<li><strong><a
- href="../features/creatinFeatures.html"
- >Create Sequence Feature...</a></strong><br> <em>Opens the
- dialog box for creating sequence features over the currently
- selected region on each selected sequence.</em></li>
+ href="../features/creatinFeatures.html">Create
+ Sequence Feature...</a></strong><br> <em>Opens the dialog box
+ for creating sequence features over the currently selected
+ region on each selected sequence.</em></li>
<li><strong>Create Group<br>
</strong><em>This will define a new group from the current
selection.</em><strong> </strong></li>
<li><a name="sqreport"><strong>Sequence
Details ...<br>
</strong></a><em>(Since Jalview 2.8)<br>Open an <a
- href="../io/exportseqreport.html"
- >HTML report containing the annotation and database cross
- references</a> normally shown in the sequence's tooltip.
+ href="../io/exportseqreport.html">HTML report
+ containing the annotation and database cross references</a>
+ normally shown in the sequence's tooltip.
</em></li>
<li><strong>Edit Name/Description<br>
</strong><em>You may edit the name and description of each sequence.
and sequence description to be entered. Press OK to accept
your edit. To save sequence descriptions, you must save in
Fasta, PIR or Jalview File format.</em></li>
- <li><strong>Add <a href="../features/annotation.html#seqannots">Reference Annotations</a></strong><br>
- <em>When enabled, copies any available alignment
- annotation for this sequence to the current view.</em></li>
+ <li><strong>Add <a
+ href="../features/annotation.html#seqannots">Reference
+ Annotations</a></strong><br> <em>When enabled, copies any
+ available alignment annotation for this sequence to the
+ current view.</em></li>
<li><strong>Set as Reference</strong> or <strong>Unmark
- as Reference</strong><br /> Sets or unsets the reference sequence for
- the the alignment.</li>
+ as Reference</strong><br /> Sets or unsets the reference sequence
+ for the the alignment.</li>
<li><strong>Represent Group With (Sequence Id)</strong><br>
<em>All sequences in the current selection group will be
Connections tab.<br> Since Jalview 2.4, links will
also be made for database cross references (where the
database name exactly matches the link name set up in <a
- href="../features/preferences.html"
- >Preferences</a>). <br>Since Jalview 2.5, links are also
- shown for non-positional sequence features attached to the
- sequence, and any regular-expression based URL links that
- matched the description line.
+ href="../features/preferences.html">Preferences</a>).
+ <br>Since Jalview 2.5, links are also shown for
+ non-positional sequence features attached to the sequence,
+ and any regular-expression based URL links that matched
+ the description line.
</em><strong><br> </strong></li>
</ul></li>
<li><strong>3D Structure Data...</strong> </strong><em>This menu is
visible when you right-click on a sequence name. When this
option is clicked, Jalview will open the <a
- href="../features/structurechooser.html">'Structure
- Chooser' </a>, which allows you to discover and view 3D structures
- for the current selection. For more info, see <a
+ href="../features/structurechooser.html">'Structure Chooser'
+ </a>, which allows you to discover and view 3D structures for the
+ current selection. For more info, see <a
href="../features/viewingpdbs.html">viewing PDB structures</a>.
</em></li>
- <li><strong>VARNA 2D Structure</strong><br />
- <em> If the sequence or alignment has RNA structure, then <strong>VARNA
+ <li><strong>VARNA 2D Structure</strong><br /> <em> If the
+ sequence or alignment has RNA structure, then <strong>VARNA
2D Structure</strong> entries will also be present enabling you to open
a linked view of the RNA structure in <a
- href="../features/varna.html"
- >VARNA</a>.
+ href="../features/varna.html">VARNA</a>.
</em></li>
<li><a name="hideinserts"><strong>Hide Insertions</strong></a><br />
<em>Hides columns containing gaps in the current sequence or
elsewhere. You need a continuous network connection in order to use
these services through Jalview.</p>
<ul>
- <li><strong>Alignment</strong><br />
- <em> Align the currently selected sequences or all sequences in
- the alignment, or re-align unaligned sequences to the aligned
- sequences. Entries in this menu provide access to the various
- alignment programs supported by <a
- href="../webServices/JABAWS.html"
- >JABAWS</a>. See the <a href="../webServices/msaclient.html">Multiple
+ <li><strong>Alignment</strong><br /> <em> Align the
+ currently selected sequences or all sequences in the alignment,
+ or re-align unaligned sequences to the aligned sequences.
+ Entries in this menu provide access to the various alignment
+ programs supported by <a href="../webServices/JABAWS.html">JABAWS</a>.
+ See the <a href="../webServices/msaclient.html">Multiple
Sequence Alignment webservice client</a> entry for more
information.
</em></li>
<li><strong>Multi-Harmony</strong><br> <em>Performs
functional residue analysis on a protein family alignment
with sub-families defined on it. See the <a
- href="../webServices/shmr.html"
- >Multi-Harmony service</a> entry for more information.
+ href="../webServices/shmr.html">Multi-Harmony
+ service</a> entry for more information.
</em></li>
</ul></li>
</ul>
way:
<ul>
<li><em>RFAM</em> - Sequences can be <a
- href="../features/seqfetch.html"
- >fetched</a> from the RFAM database by accession number or ID.</li>
+ href="../features/seqfetch.html">fetched</a> from the RFAM
+ database by accession number or ID.</li>
<li><em>Stockholm files</em> - WUSS (or VIENNA) dot-bracket
notation found in the secondary structure annotation line will be
imported as sequence or alignment associated secondary structure
annotation.</li>
<li><em>Clustal files</em> - certain RNA alignment programs,
- such as <a
- href="http://rna.informatik.uni-freiburg.de/LocARNA"
- >LocaRNA</a> output consensus RNA secondary structure lines in the
- line normally reserved for the Clustal consensus line in a clustal
+ such as <a href="http://rna.informatik.uni-freiburg.de/LocARNA">LocaRNA</a>
+ output consensus RNA secondary structure lines in the line
+ normally reserved for the Clustal consensus line in a clustal
file.</li>
<li><em>RNAML</em> Jalview can import RNAML files containing
sequences and extended secondary structure annotation derived from
per-sequence secondary structure is available).</li>
</ul>
<p>
- <strong>Pseudo-knots</strong><br /> Jalview 2.8.2 introduced limited
- support for working with structures including pseudoknots. Where
- possible, extended WUSS symbols (e.g. different types of
+ <strong>Pseudo-knots</strong><br /> Jalview 2.8.2 introduced
+ limited support for working with structures including pseudoknots.
+ Where possible, extended WUSS symbols (e.g. different types of
parentheses, or upper and lower case letters) are preserved when
parsing RNA structure annotation and will be shaded differently when
displayed in the structure.<br /> Extended WUSS annotation is also
<li><em>HTTP logs on the Jalview website</em><br> We
record IP addresses of machines which access the web site, either
via the browser when downloading the application, or when the
- Jalview Desktop user interface is launched.<br>
- <br>
+ Jalview Desktop user interface is launched.<br> <br>
<ul>
<li><i>The JNLP file at
www.jalview.org/webstart/jalview.jnlp is retrieved to
interactions with the public Jalview web services are
logged, but we delete all job data (input data and results)
after about two weeks.</i></li>
- </ul>
- <br></li>
+ </ul> <br></li>
<li><em>Google Analytics</em><br> Since Jalview 2.4.0b2,
the Jalview Desktop records usage data with Google Analytics via
the <a href="http://code.google.com/p/jgoogleanalytics/">JGoogleAnalytics</a>
run Jalview in 'headless mode' via the command line, then the
program shouldn't try to contact any of the web servers mentioned
above (if it does, then it's a bug!). You can also specify some <a
- href="features/commandline.html"
- >command line options</a> to disable the questionnaire and usage
- statistics check. Finally, the <a
- href="features/preferences.html#connections"
- >Connections Tab</a> of the Jalview preferences contains options for
- controlling the submission of usage statistics.
+ href="features/commandline.html">command line options</a> to
+ disable the questionnaire and usage statistics check. Finally, the <a
+ href="features/preferences.html#connections">Connections
+ Tab</a> of the Jalview preferences contains options for controlling
+ the submission of usage statistics.
<p>
<strong>Other Web Clients in Jalview</strong><br> The Jalview
desktop is intended to make it easier to interact with web-based
<tr>
<td width="60" nowrap>
<div align="center">
- <strong><a name="Jalview.2.10.0">2.10.0</a><br /> <em>27/9/2016</em></strong>
+ <strong><a name="Jalview.2.10.0">2.10.0</a><br /> <em>06/10/2016</em></strong>
</div>
</td>
<td><em>General</em>
<ul>
- <li><!-- JAL-2164,JAL-1919,-->Jmol now primary parser for importing structure data to Jalview. Enables mmCIF and better PDB parsing.</li>
- <li><!-- JAL-192 --->Alignment ruler shows positions relative to reference sequence</li>
- <li><!-- JAL-2202 -->Position/residue shown in status bar when mousing over sequence associated annotation</li>
- <li><!-- JAL-2171 -->Default RNA SS symbol to 'matching bracket' for manual entry</li>
- <li><!-- JAL-2214 -->RNA Structure consensus indicates wc-only '()', canonical '[]' and invalid '{}' base pair populations for each column</li>
- <li><!-- JAL-2092 -->Feature settings popup menu options for showing or hiding columns containing a feature</li>
- <li><!-- JAL-1557 -->Edit selected group by double clicking on group and sequence associated annotation labels</li>
+ <li>
+ <!-- JAL-2124 -->Updated Spanish translations.
+ </li>
+ <li>
+ <!-- JAL-2164,JAL-1919,JAL-2148 -->Jmol now primary parser
+ for importing structure data to Jalview. Enables mmCIF and
+ better PDB parsing.
+ </li>
+ <li>
+ <!-- JAL-192 --->Alignment ruler shows positions relative to
+ reference sequence
+ </li>
+ <li>
+ <!-- JAL-2202 -->Position/residue shown in status bar when
+ mousing over sequence associated annotation
+ </li>
+ <li>
+ <!-- JAL-2171 -->Default RNA SS symbol to 'matching bracket'
+ for manual entry
+ </li>
+ <li>
+ <!-- JAL-2214 -->RNA Structure consensus indicates wc-only
+ '()', canonical '[]' and invalid '{}' base pair populations
+ for each column
+ </li>
+ <li>
+ <!-- JAL-2092 -->Feature settings popup menu options for
+ showing or hiding columns containing a feature
+ </li>
+ <li>
+ <!-- JAL-1557 -->Edit selected group by double clicking on
+ group and sequence associated annotation labels
+ </li>
+ <li>
+ <!-- JAL-2236 -->Sequence name added to annotation label in
+ select/hide columns by annotation and colour by annotation
+ dialogs
+ </li>
+
</ul> <em>Application</em>
<ul>
- <li><!-- JAL---></li>
- <li><!-- JAL---></li>
- <li><!-- JAL---></li>
- <li><!-- JAL---></li>
- <li><!-- JAL-1957, JAL-1479 JAL-1491 -->UniProt - PDB protein structure mappings with the EMBL-EBI PDBe SIFTS database</li>
- <li><!-- JAL-2079 -->Updated download sites used for Rfam and Pfam sources to xfam.org</li>
- <li><!-- JAL-2084 -->Disabled Rfam(Full) in the sequence fetcher</li>
- <li><!-- JAL-2123 -->Show residue labels in Chimera when mousing over sequences in Jalview</li>
- <li><!-- JAL-2027-->Support for reverse-complement coding regions in ENA and EMBL</li>
- <li><!-- JAL-1855, JAL-2113, JAL-2114-->Upgrade to EMBL XML 1.2 for ENA record retrieval</li>
- <li><!-- JAL-2027 -->Support for ENA CDS records with reverse complement operator</li>
- <li><!-- JAL-1812 -->New 'execute Groovy script' option in an alignment window's Calculate menu</li>
- <li><!-- JAL-1812 -->Allow groovy scripts that call Jalview.getAlignFrames() to run in headless mode</li>
- <li><!-- JAL-2068 -->Support for creating new alignment calculation workers from groovy scripts</li>
- <li><!-- JAL-1369 --->Store/restore reference sequence in Jalview projects</li>
- <li><!-- JAL-1803 -->Chain codes for a sequence's PDB associations are now saved/restored from project</li>
- <li><!-- JAL-2183 -->Double click on an entry in Jalview's database chooser opens a sequence fetcher</li>
- <li><!-- JAL-1563 -->Free-text search client for UniProt using the UniProt REST API</li>
- <li><!-- JAL-2168 -->-nonews command line parameter to prevent the news reader opening</li>
-
-
- </ul> <em>Applet</em>
+ <li>
+ <!-- JAL-2050-->Automatically hide introns when opening a
+ gene/transcript view
+ </li>
+ <li>
+ <!-- JAL-1563 -->Uniprot Sequence fetcher Free Text Search
+ dialog
+ </li>
+ <li>
+ <!-- JAL-1957, JAL-1479 JAL-1491 -->UniProt - PDB protein
+ structure mappings with the EMBL-EBI PDBe SIFTS database
+ </li>
+ <li>
+ <!-- JAL-2079 -->Updated download sites used for Rfam and
+ Pfam sources to xfam.org
+ </li>
+ <li>
+ <!-- JAL-2084 -->Disabled Rfam(Full) in the sequence fetcher
+ </li>
+ <li>
+ <!-- JAL-2123 -->Show residue labels in Chimera when mousing
+ over sequences in Jalview
+ </li>
+ <li>
+ <!-- JAL-2027-->Support for reverse-complement coding
+ regions in ENA and EMBL
+ </li>
+ <li>
+ <!-- JAL-1855, JAL-2113, JAL-2114-->Upgrade to EMBL XML 1.2
+ for record retrieval via ENA rest API
+ </li>
+ <li>
+ <!-- JAL-2027 -->Support for ENA CDS records with reverse
+ complement operator
+ </li>
+ <li>
+ <!-- JAL-1812 -->Update to groovy-2.4.6-indy - for faster
+ groovy script execution
+ </li>
+ <li>
+ <!-- JAL-1812 -->New 'execute Groovy script' option in an
+ alignment window's Calculate menu
+ </li>
+ <li>
+ <!-- JAL-1812 -->Allow groovy scripts that call
+ Jalview.getAlignFrames() to run in headless mode
+ </li>
+ <li>
+ <!-- JAL-2068 -->Support for creating new alignment
+ calculation workers from groovy scripts
+ </li>
+ <li>
+ <!-- JAL-1369 --->Store/restore reference sequence in
+ Jalview projects
+ </li>
+ <li>
+ <!-- JAL-1803 -->Chain codes for a sequence's PDB
+ associations are now saved/restored from project
+ </li>
+ <li>
+ <!-- JAL-1993 -->Database selection dialog always shown
+ before sequence fetcher is opened
+ </li>
+ <li>
+ <!-- JAL-2183 -->Double click on an entry in Jalview's
+ database chooser opens a sequence fetcher
+ </li>
+ <li>
+ <!-- JAL-1563 -->Free-text search client for UniProt using
+ the UniProt REST API
+ </li>
+ <li>
+ <!-- JAL-2168 -->-nonews command line parameter to prevent
+ the news reader opening
+ </li>
+ <li>
+ <!-- JAL-2028 -->Displayed columns for PDBe and Uniprot
+ querying stored in preferences
+ </li>
+ <li>
+ <!-- JAL-2091 -->Pagination for displaying PDBe and Uniprot
+ search results
+ </li>
+ <li>
+ <!-- JAL-1977-->Tooltips shown on database chooser
+ </li>
+ <li>
+ <!-- JAL-391 -->Reverse complement function in calculate
+ menu for nucleotide sequences
+ </li>
+ <li>
+ <!-- JAL-2005, JAL-599 -->Alignment sort by feature scores
+ and feature counts preserves alignment ordering (and
+ debugged for complex feature sets).
+ </li>
+ <li>
+ <!-- JAL-2152-->Chimera 1.11.1 minimum requirement for
+ viewing structures with Jalview 2.10
+ </li>
+ <li>
+ <!-- JAL-1705, JAL-1975, JAL-2050,JAL-2041,JAL-2105 -->Retrieve
+ genome, transcript CCDS and gene ids via the Ensembl and
+ Ensembl Genomes REST API
+ </li>
+ <li>
+ <!-- JAL-2049 -->Protein sequence variant annotation
+ computed for 'sequence_variant' annotation on CDS regions
+ (Ensembl)
+ </li>
+ <li>
+ <!-- JAL-2232 -->ENA CDS 'show cross references' for Uniprot
+ sequences
+ </li>
+ <li>
+ <!-- JAL-2213,JAL-1856 -->Improved warning messages when DB
+ Ref Fetcher fails to match, or otherwise updates sequence
+ data from external database records.
+ </li>
+ <li>
+ <!-- JAL-2154 -->Revised Jalview Project format for
+ efficient recovery of sequence coding and alignment
+ annotation relationships.
+ </li>
+ </ul> <!-- <em>Applet</em>
<ul>
- <li><!-- JAL---></li>
- </ul></td>
+ <li>
+ -- JAL---
+ </li>
+ </ul> --></td>
<td>
<div align="left">
<em>General</em>
<ul>
- <li><!-- JAL-2077 -->reinstate CTRL-click for opening pop-up menu on OSX</li>
- <li><!-- JAL-2018-->Export features in Jalview format (again) includes graduated colourschemes</li>
- <li><!-- JAL-1722, JAL-2001-->More responsive when working with big alignments and lots of hidden columns</li>
- <li><!-- JAL-2053-->Hidden column markers not always rendered at right of alignment window</li>
- <li><!-- JAL-2067, JAL- -->Tidied up links in help file table of contents</li>
- <li><!-- JAL-2072 -->Feature based tree calculation not shown for DNA alignments</li>
- <li><!-- JAL-2075 -->Hidden columns ignored during feature based tree calculation</li>
- <li><!-- JAL-2065 -->Alignment view stops updating when show unconserved enabled for group on alignment</li>
- <li><!-- JAL-2086 -->Cannot insert gaps into sequence when set as reference</li>
- <li><!-- JAL-2146 -->Alignment column in status incorrectly shown as "Sequence position" when mousing over annotation</li>
- <li><!-- JAL-2099 -->Incorrect column numbers in ruler when hidden columns present</li>
- <li><!-- JAL-1577 -->Colour by RNA Helices not enabled when user created annotation added to alignment</li>
- <li><!-- JAL-1841 -->RNA Structure consensus only computed for '()' base pair annotation</li>
- <li><!-- JAL-2215, JAL-1841 -->Enabling 'Ignore Gaps' results in zero scores for all base pairs in RNA Structure Consensus</li>
- <li><!-- JAL-2174-->Extend selection with columns containing feature not working</li>
- <li><!-- JAL-2275 -->Pfam format writer puts extra space at beginning of sequence</li>
- <li><!-- JAL-1827 -->Incomplete sequence extracted from pdb entry 3a6s </li>
-
+ <li>
+ <!-- JAL-2077 -->reinstate CTRL-click for opening pop-up
+ menu on OSX
+ </li>
+ <li>
+ <!-- JAL-2018-->Export features in Jalview format (again)
+ includes graduated colourschemes
+ </li>
+ <li>
+ <!-- JAL-2172,JAL-1722, JAL-2001-->More responsive when
+ working with big alignments and lots of hidden columns
+ </li>
+ <li>
+ <!-- JAL-2053-->Hidden column markers not always rendered
+ at right of alignment window
+ </li>
+ <li>
+ <!-- JAL-2067 -->Tidied up links in help file table of
+ contents
+ </li>
+ <li>
+ <!-- JAL-2072 -->Feature based tree calculation not shown
+ for DNA alignments
+ </li>
+ <li>
+ <!-- JAL-2075 -->Hidden columns ignored during feature
+ based tree calculation
+ </li>
+ <li>
+ <!-- JAL-2065 -->Alignment view stops updating when show
+ unconserved enabled for group on alignment
+ </li>
+ <li>
+ <!-- JAL-2086 -->Cannot insert gaps into sequence when
+ set as reference
+ </li>
+ <li>
+ <!-- JAL-2146 -->Alignment column in status incorrectly
+ shown as "Sequence position" when mousing over
+ annotation
+ </li>
+ <li>
+ <!-- JAL-2099 -->Incorrect column numbers in ruler when
+ hidden columns present
+ </li>
+ <li>
+ <!-- JAL-1577 -->Colour by RNA Helices not enabled when
+ user created annotation added to alignment
+ </li>
+ <li>
+ <!-- JAL-1841 -->RNA Structure consensus only computed for
+ '()' base pair annotation
+ </li>
+ <li>
+ <!-- JAL-2215, JAL-1841 -->Enabling 'Ignore Gaps' results
+ in zero scores for all base pairs in RNA Structure
+ Consensus
+ </li>
+ <li>
+ <!-- JAL-2174-->Extend selection with columns containing
+ feature not working
+ </li>
+ <li>
+ <!-- JAL-2275 -->Pfam format writer puts extra space at
+ beginning of sequence
+ </li>
+ <li>
+ <!-- JAL-1827 -->Incomplete sequence extracted from pdb
+ entry 3a6s
+ </li>
+ <li>
+ <!-- JAL-2238 -->Cannot create groups on an alignment from
+ from a tree when t-coffee scores are shown
+ </li>
+ <li>
+ <!-- JAL-1836,1967 -->Cannot import and view PDB
+ structures with chains containing negative resnums (4q4h)
+ </li>
+ <li>
+ <!-- JAL-1998 -->ArithmeticExceptions raised when parsing
+ some structures
+ </li>
+ <li>
+ <!-- JAL-1991, JAl-1952 -->'Empty' alignment blocks added
+ to Clustal, PIR and PileUp output
+ </li>
+ <li>
+ <!-- JAL-2008 -->Reordering sequence features that are
+ not visible causes alignment window to repaint
+ </li>
+ <li>
+ <!-- JAL-2006 -->Threshold sliders don't work in
+ graduated colour and colour by annotation row for e-value
+ scores associated with features and annotation rows
+ </li>
+ <li>
+ <!-- JAL-1797 -->amino acid physicochemical conservation
+ calculation should be case independent
+ </li>
+ <li>
+ <!-- JAL-2173 -->Remove annotation also updates hidden
+ columns
+ </li>
+ <li>
+ <!-- JAL-2234 -->FER1_ARATH and FER2_ARATH mislabelled in
+ example file (uniref50.fa, feredoxin.fa, unaligned.fa,
+ exampleFile_2_7.jar, exampleFile.jar, exampleFile_2_3.jar)
+ </li>
+ <li>
+ <!-- JAL-2065 -->Null pointer exceptions and redraw
+ problems when reference sequence defined and 'show
+ non-conserved' enabled
+ </li>
+ <li>
+ <!-- JAL-1306 -->Quality and Conservation are now shown on
+ load even when Consensus calculation is disabled
+ </li>
</ul>
<em>Application</em>
<ul>
- <li><!-- JAL-1944 not yet fixed Error thrown when exporting a view with hidden sequences as flat-file alignment--></li>
- <li><!-- JAL-1911-->Corrupt preferences for SVG, EPS & HTML output when running on non-gb/us i18n platforms</li>
- <li><!-- JAL-1552-->URLs and links can imported by drag'n'drop on OSX webstart</li>
- <li><!-- JAL-2030-->InstallAnywhere distribution fails when launching Chimera</li>
- <li><!-- JAL-2080-->Jalview very slow to launch via webstart (also hotfix for 2.9.0b2)</li>
- <li><!-- JAL-2085 -->Cannot save project when view has a reference sequence defined</li>
- <li><!-- JAL-1011 -->Columns are suddenly selected in other alignments and views when revealing hidden columns</li>
- <li><!-- JAL-1989 -->Hide columns not mirrored in complement view in a cDNA/Protein splitframe</li>
- <li><!-- JAL-1369 -->Cannot save/restore representative sequence from project when only one sequence is represented</li>
- <li><!-- JAL-2002 -->Disabled 'Best Uniprot Coverage' option in Structure Chooser</li>
- <li><!-- JAL-2215 -->Modifying 'Ignore Gaps' on consensus or structure consensus didn't refresh annotation panel</li>
- <li><!-- JAL-1962 -->View mapping in structure view shows mappings between sequence and all chains in a PDB file</li>
- <!-- may exclude, this is an external service stability issue JAL-1941 /> RNA 3D structure not added via DSSR service</li> -->
+ <li>
+ <!-- JAL-1552-->URLs and links can't be imported by
+ drag'n'drop on OSX when launched via webstart (note - not
+ yet fixed for El Capitan)
+ </li>
+ <li>
+ <!-- JAL-1911-->Corrupt preferences for SVG, EPS & HTML
+ output when running on non-gb/us i18n platforms
+ </li>
+ <li>
+ <!-- JAL-1944 -->Error thrown when exporting a view with
+ hidden sequences as flat-file alignment
+ </li>
+ <li>
+ <!-- JAL-2030-->InstallAnywhere distribution fails when
+ launching Chimera
+ </li>
+ <li>
+ <!-- JAL-2080-->Jalview very slow to launch via webstart
+ (also hotfix for 2.9.0b2)
+ </li>
+ <li>
+ <!-- JAL-2085 -->Cannot save project when view has a
+ reference sequence defined
+ </li>
+ <li>
+ <!-- JAL-1011 -->Columns are suddenly selected in other
+ alignments and views when revealing hidden columns
+ </li>
+ <li>
+ <!-- JAL-1989 -->Hide columns not mirrored in complement
+ view in a cDNA/Protein splitframe
+ </li>
+ <li>
+ <!-- JAL-1369 -->Cannot save/restore representative
+ sequence from project when only one sequence is
+ represented
+ </li>
+ <li>
+ <!-- JAL-2002 -->Disabled 'Best Uniprot Coverage' option
+ in Structure Chooser
+ </li>
+ <li>
+ <!-- JAL-2215 -->Modifying 'Ignore Gaps' on consensus or
+ structure consensus didn't refresh annotation panel
+ </li>
+ <li>
+ <!-- JAL-1962 -->View mapping in structure view shows
+ mappings between sequence and all chains in a PDB file
+ </li>
+ <li>
+ <!-- JAL-2102, JAL-2101, JAL-2102, -->PDB and Uniprot FTS
+ dialogs format columns correctly, don't display array
+ data, sort columns according to type
+ </li>
+ <li>
+ <!-- JAL-1975 -->Export complete shown after destination
+ file chooser is cancelled during an image export
+ </li>
+ <li>
+ <!-- JAL-2025 -->Error when querying PDB Service with
+ sequence name containing special characters
+ </li>
+ <li>
+ <!-- JAL-2024 -->Manual PDB structure querying should be
+ case insensitive
+ </li>
+ <li>
+ <!-- JAL-2104 -->Large tooltips with broken HTML
+ formatting don't wrap
+ </li>
+ <li>
+ <!-- JAL-1128 -->Figures exported from wrapped view are
+ truncated so L looks like I in consensus annotation
+ </li>
+ <li>
+ <!-- JAL-2003 -->Export features should only export the
+ currently displayed features for the current selection or
+ view
+ </li>
+ <li>
+ <!-- JAL-2036 -->Enable 'Get Cross-References' in menu
+ after fetching cross-references, and restoring from project
+ </li>
+ <li>
+ <!-- JAL-2032 -->Mouseover of a copy of a sequence is not
+ followed in the structure viewer
+ </li>
+ <li>
+ <!-- JAL-2163 -->Titles for individual alignments in
+ splitframe not restored from project
+ </li>
+ <li>
+ <!-- JAL-2145 -->missing autocalculated annotation at
+ trailing end of protein alignment in transcript/product
+ splitview when pad-gaps not enabled by default
+ </li>
+ <li>
+ <!-- JAL-1797 -->amino acid physicochemical conservation
+ is case dependent
+ </li>
+ <li>
+ <!-- JAL-1448 -->RSS reader doesn't stay hidden after last
+ article has been read (reopened issue due to
+ internationalisation problems)
+ </li>
+ <li>
+ <!-- JAL-1960 -->Only offer PDB structures in structure
+ viewer based on sequence name, PDB and UniProt
+ cross-references
+ </li>
+
+ <li>
+ <!-- JAL-1976 -->No progress bar shown during export of
+ alignment as HTML
+ </li>
+ <li>
+ <!-- JAL-2213 -->Structures not always superimposed after
+ multiple structures are shown for one or more sequences.
+ </li>
+ <li>
+ <!-- JAL-1370 -->Reference sequence characters should not
+ be replaced with '.' when 'Show unconserved' format option
+ is enabled.
+ </li>
+ <li>
+ <!-- JAL-1823 -->Cannot specify chain code when entering
+ specific PDB id for sequence
+ </li>
+ <li>
+ <!-- JAL-1944 -->File->Export->.. as doesn't work when
+ 'Export hidden sequences' is enabled, but 'export hidden
+ columns' is disabled.
+ </li>
+ <li>
+ <!--JAL-2026-->Best Quality option in structure chooser
+ selects lowest rather than highest resolution structures
+ for each sequence
+ </li>
+ <li>
+ <!-- JAL-1887 -->Incorrect start and end reported for PDB
+ to sequence mapping in 'View Mappings' report
+ </li>
+ <!-- may exclude, this is an external service stability issue JAL-1941
+ -- > RNA 3D structure not added via DSSR service</li> -->
</ul>
<em>Applet</em>
<ul>
- <li><!-- JAL-2151 -->Incorrect columns are selected when hidden columns present before start of sequence</li>
+ <li>
+ <!-- JAL-2151 -->Incorrect columns are selected when
+ hidden columns present before start of sequence
+ </li>
+ <li>
+ <!-- JAL-1986 -->Missing dependencies on applet pages
+ (JSON jars)
+ </li>
+ <li>
+ <!-- JAL-1947 -->Overview pixel size changes when
+ sequences are hidden in applet
+ </li>
+ <li>
+ <!-- JAL-1996 -->Updated instructions for applet
+ deployment on examples pages.
+ </li>
</ul>
</div>
</td>
<li>Updated Spanish translations of localized text for
2.9</li>
</ul> <em>Application</em>
- <ul>
+ <ul>
<!-- <li>cDNA/Protein splitframe window geometry preserved in Jalview projects</li>-->
<li>Signed OSX InstallAnywhere installer<br></li>
<li>Support for per-sequence based annotations in BioJSON</li>
<li>URL links generated from description line for
regular-expression based URL links (applet and application)
+
+
+
+
<li>Non-positional feature URL links are shown in link
menu</li>
between different screens.</li>
<li>New preference items for sequence ID tooltip and
consensus annotation</li>
- <li>Client to submit sequences and IDs to Envision2 Workflows</li>
+ <li>Client to submit sequences and IDs to Envision2
+ Workflows</li>
<li><em>Vamsas Capabilities</em>
<ul>
<li>Improved VAMSAS synchronization (Jalview archive
<li>PCA and PDB Viewers zoom via mouse roller
<li>User-defined sub-tree colours and sub-tree selection
+
+
+
+
<li>'New Window' button on the 'Output to Text box'
</ul>
of alignment)
<li>Slowed DAS Feature Fetching for increased robustness.
+
+
+
+
<li>Made angle brackets in ASCII feature descriptions
display correctly
<li>Tree leaf to sequence mapping improved
<li>Smooth fonts switch moved to FontChooser dialog box.
+
+
+
+
</ul>
</td>
and <strong>A</strong>nalysis of <strong>Molecular</strong> <strong>S</strong>equences,
<strong>Alignements</strong> and <strong>S</strong>tructures).
Currently, the only other VAMSAS enabled application is <a
- href="http://www.topali.org"
- >TOPALi</a> - a user friendly program for phylogenetics and
- evolutionary analysis.
+ href="http://www.topali.org">TOPALi</a> - a user friendly
+ program for phylogenetics and evolutionary analysis.
<p>
VAMSAS enabled applications access a shared bioinformatics dataset
containing sequences, alignments, annotation and trees, which can be
represented by an XML document analogous to a <a
- href="../features/jalarchive.html"
- >Jalview Project Archive</a>.
+ href="../features/jalarchive.html">Jalview Project
+ Archive</a>.
</p>
<br>
<strong>Connecting to a VAMSAS session</strong>
The majority of these scores were described by Valdar in 2002
(Scoring residue conservation. <em>Proteins: Structure,
Function, and Genetics</em> 43(2): 227-241. <a
- href="http://www.ncbi.nlm.nih.gov/pubmed/12112692"
- >PubMed</a> or available on the <a
- href="http://valdarlab.unc.edu/publications.html"
- >Valdar Group publications page</a>), but the SMERFs score was
- developed later and described by Manning et al. in 2008 (<a
- href="http://www.biomedcentral.com/1471-2105/9/51"
- >BMC Bioinformatics 2008, 9:51 doi:10.1186/1471-2105-9-51</a>).
+ href="http://www.ncbi.nlm.nih.gov/pubmed/12112692">PubMed</a>
+ or available on the <a
+ href="http://valdarlab.unc.edu/publications.html">Valdar
+ Group publications page</a>), but the SMERFs score was developed later
+ and described by Manning et al. in 2008 (<a
+ href="http://www.biomedcentral.com/1471-2105/9/51">BMC
+ Bioinformatics 2008, 9:51 doi:10.1186/1471-2105-9-51</a>).
</p>
<p>
<strong>Enabling and disabling AACon calculations</strong><br />
<strong>Configuring which AACon calculations are performed</strong><br />
The <strong>Web Services→Conservation→Change
AACon Settings ...</strong> menu entry will open a <a
- href="webServicesParams.html"
- >web services parameter dialog</a> for the currently configured AACon
- server. Standard presets are provided for quick and more expensive
- conservation calculations, and parameters are also provided to
- change the way that SMERFS calculations are performed.<br /> <em>AACon
- settings for an alignment are saved in <a
- href="../features/jalarchive.html"
- >Jalview projects</a> along with the latest calculation results.
+ href="webServicesParams.html">web services parameter
+ dialog</a> for the currently configured AACon server. Standard presets
+ are provided for quick and more expensive conservation calculations,
+ and parameters are also provided to change the way that SMERFS
+ calculations are performed.<br /> <em>AACon settings for an
+ alignment are saved in <a href="../features/jalarchive.html">Jalview
+ projects</a> along with the latest calculation results.
</em>
</p>
<p>
the <a href="webServicesPrefs.html">Web Services Preferences
Panel</a>, and detailed information about a particular service is
available from the help text and web pages accessible from its <a
- href="webServicesParams.html"
- >job parameters dialog box</a>.
+ href="webServicesParams.html">job parameters dialog box</a>.
</p>
<p>
<strong>Obtaining JABAWS</strong><br> One of the aims of JABAWS
stand-alone execution of analysis programs, or as a job submission
engine - enabling larger numbers of jobs to be handled. If you would
like to download and install JABAWS for your own use, please go to <a
- href="http://www.compbio.dundee.ac.uk/jabaws"
- >http://www.compbio.dundee.ac.uk/jabaws</a> for more information.
+ href="http://www.compbio.dundee.ac.uk/jabaws">http://www.compbio.dundee.ac.uk/jabaws</a>
+ for more information.
</p>
<p>
<strong>Configuring your own JABAWS services for use by
Jalview</strong><br> Once you have downloaded and installed JABAWS,
and verified it is working, all that is needed is to add the URL for
your JABAWS server(s) to the list in the <a
- href="webServicesPrefs.html"
- >Web Services Preferences Panel</a>. After adding your service and
- saving your preferences or hitting the 'refresh web services'
- button, you should be able to submit jobs to the server via the
- alignment window's web services menu. Your JABAWS servers list is
- stored in your Jalview preferences, so you will only have to
- configure Jalview once for each new server.
+ href="webServicesPrefs.html">Web Services Preferences
+ Panel</a>. After adding your service and saving your preferences or
+ hitting the 'refresh web services' button, you should be able to
+ submit jobs to the server via the alignment window's web services
+ menu. Your JABAWS servers list is stored in your Jalview
+ preferences, so you will only have to configure Jalview once for
+ each new server.
</p>
<p>
<em>Support for accessing JABAWS servers was introduced in
Gruber, and Peter F. Stadler, <em>RNAalifold: Improved
consensus structure prediction for RNA alignments</em> (BMC
Bioinformatics, 9:474, 2008). Download the paper at <a
- href="http://www.biomedcentral.com/1471-2105/9/474"
- >http://www.biomedcentral.com/1471-2105/9/474</a>.
+ href="http://www.biomedcentral.com/1471-2105/9/474">http://www.biomedcentral.com/1471-2105/9/474</a>.
</p>
<p>
<strong>Running RNAalifold from Jalview</strong><br />
<Strong>RNAalifold prediction parameters</Strong> <br /> JABAWS and
Jalview only provide access to a selection of the RNAalifold
arguments. For a full description, see the documentation at <a
- href="http://www.tbi.univie.ac.at/RNA/RNAalifold.html"
- >http://www.tbi.univie.ac.at/RNA/RNAalifold.html</a>.
+ href="http://www.tbi.univie.ac.at/RNA/RNAalifold.html">http://www.tbi.univie.ac.at/RNA/RNAalifold.html</a>.
</p>
<p>
<strong>Supported Arguments which give alternate structures</strong>
Calculate an MEA structure where the expected Accuracy is computed
from the base pair probabilities. A more detailed description can be
found in the <strong>RNAfold</strong> program documentation at <a
- href="http://www.tbi.univie.ac.at/RNA/RNAfold.html"
- >http://www.tbi.univie.ac.at/RNA/RNAfold.html</a>.
+ href="http://www.tbi.univie.ac.at/RNA/RNAfold.html">http://www.tbi.univie.ac.at/RNA/RNAfold.html</a>.
</p>
<p>
<strong>Example RNAalifold Structure Annotation rows</strong>
Database references are associated with a sequence are displayed as a
list in the tooltip shown when mousing over its sequence ID. Jalview
uses references for the retrieval of <a
- href="../features/viewingpdbs.html"
- >PDB structures</a> and <a href="../features/dasfeatures.html">DAS
- features</a>, and for retrieving sequence cross-references such as the
- protein products of a DNA sequence.
+ href="../features/viewingpdbs.html">PDB structures</a> and <a
+ href="../features/dasfeatures.html">DAS features</a>, and for
+ retrieving sequence cross-references such as the protein products of a
+ DNA sequence.
</p>
<p>
<strong>Initiating reference retrieval</strong><br> The
and was originally restricted to the identification of valid UniProt
accessions.<br> Essentially, Jalview will try to retrieve records
from a subset of the databases accessible by the <a
- href="../features/seqfetch.html"
- >sequence fetcher</a> using each sequence's ID string (or each string in
- the ID separated by the '∣' symbol).
+ href="../features/seqfetch.html">sequence fetcher</a> using each
+ sequence's ID string (or each string in the ID separated by the
+ '∣' symbol).
</p>
<p>If a record (or set of records) is retrieved by any query derived
from the ID string of a sequence, then the sequence is aligned to the
<ul>
<li>Programs for <a href="msaclient.html">multiple
sequence alignment</a>, made available <em>via</em> <a
- href="JABAWS.html"
- >Java Bioinformatic Analysis Web Service (JABAWS)</a> servers.
+ href="JABAWS.html">Java Bioinformatic Analysis
+ Web Service (JABAWS)</a> servers.
</li>
<li>Jalview SOAP Web Services for <a href="jnet.html">secondary
structure prediction</a> based at the University of Dundee.
</li>
<li>Services for alignment analysis, such as <a
- href="shmr.html"
- >Multi-Harmony</a>.
+ href="shmr.html">Multi-Harmony</a>.
</ul>
<p>
<strong>Web Service Dialog Box</strong>
citation information, and monitors the progress of the
calculation. The cancel button will permanently cancel the job,
but this is only possible for some services.</p> The <a
- href="webServicesPrefs.html"
- >Web Services Preference panel</a> controls the display and appearance
- of the submission and analysis services in the <strong>Web
- Services</strong> menu.
+ href="webServicesPrefs.html">Web Services Preference
+ panel</a> controls the display and appearance of the submission and
+ analysis services in the <strong>Web Services</strong> menu.
</li>
<li>If Jalview encounters problems accessing any services, it
may display a <a href="webServicesPrefs.html#wswarnings">warning
<p>
<strong>More about Jalview's Web Services</strong> <br>
Jalview's distributed computations utilise <a
- href="http://en.wikipedia.org/wiki/SOAP"
- >SOAP</a> and <a
- href="http://en.wikipedia.org/wiki/Representational_State_Transfer"
- >REST</a> web services exposing sequence alignment, analysis, and
- secondary structure prediction programs. Originally, Jalview 2's
- services were maintained by the Barton group at the University of
- Dundee, and ran programs on the Life Sciences High-performance
- Computing Cluster. With the advent of <a
- href="http://www.compbio.dundee.ac.uk/jabaws"
- >JABAWS</a>, however, it is possible for anyone to host Jalview web
- services.
+ href="http://en.wikipedia.org/wiki/SOAP">SOAP</a> and <a
+ href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a>
+ web services exposing sequence alignment, analysis, and secondary
+ structure prediction programs. Originally, Jalview 2's services were
+ maintained by the Barton group at the University of Dundee, and ran
+ programs on the Life Sciences High-performance Computing Cluster.
+ With the advent of <a href="http://www.compbio.dundee.ac.uk/jabaws">JABAWS</a>,
+ however, it is possible for anyone to host Jalview web services.
</p>
</body>
</html>
JPred4: a protein secondary structure prediction server<br /> <em>Nucleic
Acids Research</em>, <strong>Web Server issue</strong> (first
published 15th April 2015)<br /> <a
- href="http://dx.doi.org/10.1093/nar/gkv332"
- >http://dx.doi.org/10.1093/nar/gkv332</a>
+ href="http://dx.doi.org/10.1093/nar/gkv332">http://dx.doi.org/10.1093/nar/gkv332</a>
</li>
<li>Cole C., Barber J.D. and Barton G.J. (2008) The Jpred 3
secondary structure prediction server <em>Nucleic Acids
</p>
<em>JNet annotation created in Jalview 2.8.2 and later versions
can be displayed on other alignments via the <a
- href="../features/annotation.html#seqannots"
- >Add reference annotation</a> Sequence ID popup menu option.
+ href="../features/annotation.html#seqannots">Add reference
+ annotation</a> Sequence ID popup menu option.
</em>
<em>As of Jalview 2.6, the Jnet service accessed accessed via the
'Secondary structure prediction' submenu should be considered a
<li><a href="http://www.drive5.com/muscle">Muscle</a> (version
3.8.31)</li>
<li><a
- href="http://www.tcoffee.org/Projects_home_page/t_coffee_home_page.html"
- >Tcoffee</a> (version 8.99)</li>
+ href="http://www.tcoffee.org/Projects_home_page/t_coffee_home_page.html">Tcoffee</a>
+ (version 8.99)</li>
<li><a href="http://probcons.stanford.edu/">Probcons</a>
(version 1.12)</li>
</ul>
<strong>Multiple Alignments of Sequences with hidden
columns</strong><br> Multiple alignment services are 'column
separable' analysis operations. If the input contains <a
- href="../features/hiddenRegions.html"
- >hidden columns</a> then each visible segment of the input sequence
- set will be submitted for alignment separately, and the results
- concatenated (with the hidden regions preserved) once all alignment
- functions have completed. Each sub-job's state is reported in its
- own tab:
+ href="../features/hiddenRegions.html">hidden columns</a> then
+ each visible segment of the input sequence set will be submitted for
+ alignment separately, and the results concatenated (with the hidden
+ regions preserved) once all alignment functions have completed. Each
+ sub-job's state is reported in its own tab:
<p>
<center>
<strong>Multiple Multiple Sequence Alignment sub jobs
<p>
<strong>The Jalview Desktop RSS News Reader</strong><br /> The
Jalview Desktop includes a built in news reader for the <a
- href="http://www.jalview.org/feeds/desktop/rss"
- >Jalview Desktop News Channel</a>.
+ href="http://www.jalview.org/feeds/desktop/rss">Jalview
+ Desktop News Channel</a>.
</p>
<p>We will use the desktop news channel to keep you informed of
important updates relevant to users of the Jalview desktop, such as
web service outages and user community events.</p>
- <p>The news reader will be launched automatically when you start
- the Desktop if new items are available. Should you want to browse
- older items, however, you can open it manually from the 'Jalview
- news reader' option in the Desktop's <a href="../menus/desktopMenu.html">'Tools' menu</a>.</p><br/>
- <div style="text-align: center;"><img src="jalviewrssreader.gif" width="513"
- height="337" alt="Snapshot of the Jalview Desktop's RSS reader"/></div>
+ <p>
+ The news reader will be launched automatically when you start the
+ Desktop if new items are available. Should you want to browse older
+ items, however, you can open it manually from the 'Jalview news
+ reader' option in the Desktop's <a href="../menus/desktopMenu.html">'Tools'
+ menu</a>.
+ </p>
+ <br />
+ <div style="text-align: center;">
+ <img src="jalviewrssreader.gif" width="513" height="337"
+ alt="Snapshot of the Jalview Desktop's RSS reader" />
+ </div>
- <br/><p>
+ <br />
+ <p>
The <em>Jalview news reader</em> was introduced in <a
- href="http://www.jalview.org/releaseHistory.html#Jalview2.7"
- >Jalview version 2.7</a>. Its implementation is based on <a
- href="http://jswingreader.sourceforge.net/"
- >JSwingReader</a>.
+ href="http://www.jalview.org/releaseHistory.html#Jalview2.7">Jalview
+ version 2.7</a>. Its implementation is based on <a
+ href="http://jswingreader.sourceforge.net/">JSwingReader</a>.
</p>
<br />
<em>If you need to prevent the news-reader opening, then add the
The <strong>Web Services→Disorder</strong> menu in the
alignment window allows access to protein disorder prediction
services provided by the configured <a
- href="http://www.compbio.dundee.ac.uk/jabaws"
- >JABAWS servers</a>. Each service operates on sequences in the
- alignment or currently selected region (<em>since Jalview
- 2.8.0b1</em>) to identify regions likely to be unstructured or
- flexible, or alternately, fold to form globular domains.
+ href="http://www.compbio.dundee.ac.uk/jabaws">JABAWS
+ servers</a>. Each service operates on sequences in the alignment or
+ currently selected region (<em>since Jalview 2.8.0b1</em>) to
+ identify regions likely to be unstructured or flexible, or
+ alternately, fold to form globular domains.
</p>
<p>
Predictor results include both <a
- href="../features/seqfeatures.html"
- >sequence features</a> and sequence associated <a
- href="../features/annotation.html"
- >alignment annotation</a> rows. Features display is controlled from
- the <a href="../features/featuresettings.html">Feature Settings</a>
+ href="../features/seqfeatures.html">sequence features</a> and
+ sequence associated <a href="../features/annotation.html">alignment
+ annotation</a> rows. Features display is controlled from the <a
+ href="../features/featuresettings.html">Feature Settings</a>
dialog box. Clicking on the ID for a disorder prediction annotation
row will highlight or select (if double clicked) the associated
sequence for that row. You can also use the <em>Sequence
Associated</em> option in the <a
- href="../colourSchemes/annotationColouring.html"
- >Colour By Annotation</a> dialog box to colour sequences according to
- the results of predictors shown as annotation rows.
+ href="../colourSchemes/annotationColouring.html">Colour
+ By Annotation</a> dialog box to colour sequences according to the
+ results of predictors shown as annotation rows.
</p>
<p>JABAWS 2.0 provides four disorder predictors which are
described below:</p>
<td>Sequence Feature &<br />Annotation Row
</td>
<td>Predicts loops/coils according to DSSP definition<a
- href="#dsspstates"
- >[1]</a>.<br />Features mark range(s) of residues predicted as
- loops/coils, and annotation row gives raw value for each
- residue. Value over 0.516 indicates loop/coil.
+ href="#dsspstates">[1]</a>.<br />Features mark range(s)
+ of residues predicted as loops/coils, and annotation row gives
+ raw value for each residue. Value over 0.516 indicates
+ loop/coil.
</td>
</tr>
<tr>
<p>
<strong><a name="ronn"></a><a
- href="http://www.strubi.ox.ac.uk/RONN"
- >RONN</a></strong> <em>a.k.a.</em> Regional Order Neural Network<br />This
- predictor employs an approach known as the 'bio-basis' method to
- predict regions of disorder in sequences based on their local
- similarity with a gold-standard set of disordered protein sequences.
- It yields a set of disorder prediction scores, which are shown as
- sequence annotation below the alignment.
+ href="http://www.strubi.ox.ac.uk/RONN">RONN</a></strong> <em>a.k.a.</em>
+ Regional Order Neural Network<br />This predictor employs an
+ approach known as the 'bio-basis' method to predict regions of
+ disorder in sequences based on their local similarity with a
+ gold-standard set of disordered protein sequences. It yields a set
+ of disorder prediction scores, which are shown as sequence
+ annotation below the alignment.
</p>
<table border="1">
<tr>
</p>
<p>
<strong><a name="iupred"></a><a
- href="http://iupred.enzim.hu/Help.php"
- >IUPred</a></strong><br /> IUPred employs an empirical model to estimate
- likely regions of disorder. There are three different prediction
- types offered, each using different parameters optimized for
- slightly different applications. It provides raw scores based on two
- models for predicting regions of 'long disorder' and 'short
- disorder'. A third predictor identifies regions likely to form
- structured domains.
+ href="http://iupred.enzim.hu/Help.php">IUPred</a></strong><br />
+ IUPred employs an empirical model to estimate likely regions of
+ disorder. There are three different prediction types offered, each
+ using different parameters optimized for slightly different
+ applications. It provides raw scores based on two models for
+ predicting regions of 'long disorder' and 'short disorder'. A third
+ predictor identifies regions likely to form structured domains.
</p>
<table border="1">
<tr>
</table>
<p>
<strong><a name="globplot"></a><a
- href="http://globplot.embl.de/"
- >GLOBPLOT</a></strong><br /> Defines regions of globularity or natively
- unstructured regions based on a running sum of the propensity of
- residues to be structured or unstructured. The propensity is
- calculated based on the probability of each amino acid being
- observed within well defined regions of secondary structure or
- within regions of random coil. The initial signal is smoothed with a
- Savitzky-Golay filter, and its first order derivative computed.
- Residues for which the first order derivative is positive are
- designated as natively unstructured, whereas those with negative
- values are structured.<br />
+ href="http://globplot.embl.de/">GLOBPLOT</a></strong><br /> Defines
+ regions of globularity or natively unstructured regions based on a
+ running sum of the propensity of residues to be structured or
+ unstructured. The propensity is calculated based on the probability
+ of each amino acid being observed within well defined regions of
+ secondary structure or within regions of random coil. The initial
+ signal is smoothed with a Savitzky-Golay filter, and its first order
+ derivative computed. Residues for which the first order derivative
+ is positive are designated as natively unstructured, whereas those
+ with negative values are structured.<br />
<table border="1">
<tr>
<td><strong>Name</strong></td>
a protein sequence multiple alignment that has been sub-divided into
groups containing at least two non-identical protein sequences. An
easy way to create groups is to use the built-in <a
- href="../calculations/tree.html"
- >neighbour-joining or UPGMA tree</a> routines to calculate a tree for
- the alignment, and then click on the tree to subdivide the
- alignment.
+ href="../calculations/tree.html">neighbour-joining or
+ UPGMA tree</a> routines to calculate a tree for the alignment, and
+ then click on the tree to subdivide the alignment.
</p>
<p>
The SHMR service operates on the currently selected visible
region(s) of the alignment. Once submitted, a job progress window
will display status information about your job, including a URL
which allows you to visit the status page on the <a
- href="http://zeus.few.vu.nl/programs/shmrwww/"
- >IBIVU SHMR server</a>.
+ href="http://zeus.few.vu.nl/programs/shmrwww/">IBIVU SHMR
+ server</a>.
</p>
<p>When the job is complete, Jalview will automatically open a new
window containing the alignment and groups that were submitted for
analysis, with additional histograms added portraying the SHMR
scores for each column of the sub-grouped alignment.</p>
<p>
- If you use this service in your work, please cite :<br />
+ If you use this service in your work, please cite :<br />
<a name="shmrref" /> Brandt, B.W.*, Feenstra, K.A*. and Heringa, J.
(2010) Multi-Harmony: detecting functional specificity from sequence
alignment. <a
- href="http://nar.oxfordjournals.org/cgi/content/abstract/gkq415"
- >Nucleic Acids Res. 38: W35-W40.</a> (<em>* joint first authors</em>)
-
+ href="http://nar.oxfordjournals.org/cgi/content/abstract/gkq415">Nucleic
+ Acids Res. 38: W35-W40.</a> (<em>* joint first authors</em>)
<p>
<strong><em>Note:</em></strong> The Multi-Harmony service is
implemented with a prototype of Jalview's RESTful web service client
your web browser. <br> Double-clicking on the ID of a sequence
will open the first URL that can be generated from its sequence ID.
This is often the SRS site, but you can easily configure your own <a
- href="#urllinks"
- >sequence URL links</a>.
+ href="#urllinks">sequence URL links</a>.
</p>
<p>
Other links for a sequence either derived from any other configured
<p>
<strong><a name="urllinks">Configuring URL Links</a></strong> <br>URL
links are defined in the "Connections" tab of the <a
- href="../features/preferences.html"
- >Jalview desktop preferences</a>, or specified as <a
- href="http://www.jalview.org/examples/appletParameters.html#parameters"
- >applet parameters</a>. <br> By default the item "SRS"
- is added to this link menu. This link will show a web page in your
- default browser with the selected sequence id as part of the URL.<br>
+ href="../features/preferences.html">Jalview desktop
+ preferences</a>, or specified as <a
+ href="http://www.jalview.org/examples/appletParameters.html#parameters">applet
+ parameters</a>. <br> By default the item "SRS" is added
+ to this link menu. This link will show a web page in your default
+ browser with the selected sequence id as part of the URL.<br>
In the preferences dialog box, click <strong>new</strong> to add a
new link, and <strong>edit</strong> to modify an existing link, or <strong>delete</strong>
to remove it.<br> You can name the link, this will be displayed
<p>
Some Jalview services, including those provided by <a
- href="JABAWS.html"
- >JABAWS</a>, support a range of parameters and options, enabling you
- to employ the most appropriate settings for the input data. In
- addition to any preset combinations provided by services themselves,
- the Web services parameters dialog box also allows you to create and
- store your own parameter sets, so they can be accessed quickly from
- the presets menu.
+ href="JABAWS.html">JABAWS</a>, support a range of parameters
+ and options, enabling you to employ the most appropriate settings
+ for the input data. In addition to any preset combinations provided
+ by services themselves, the Web services parameters dialog box also
+ allows you to create and store your own parameter sets, so they can
+ be accessed quickly from the presets menu.
</p>
<p>
<Strong>Accessing the parameter dialog box</Strong><br> The
<p>
<center>
<img src="wsparams.gif" align="center" width="480" height="499"
- alt="Analysis Parameters Dialog Box for JABAWS Services"
- > <br> Parameter settings dialog box for JABAWS MAFFT Service
+ alt="Analysis Parameters Dialog Box for JABAWS Services">
+ <br> Parameter settings dialog box for JABAWS MAFFT Service
</center>
</p>
<p>The menu and text box at the top of the dialog box displays the
this), allowing you to provide notes to accompany the parameter set.
The modification of these or any of the option or parameter settings
will enable one or more of the following buttons, that allow you to:
+
<ul>
<li><em>Revert</em> the changes you have made. This will undo
<p>
<center>
<img src="wsprefs.gif" align="center"
- alt="Web Services Preferences Panel" width="571" height="461"
- ><br> Web Services Preference Panel
+ alt="Web Services Preferences Panel" width="571" height="461"><br>
+ Web Services Preference Panel
</center>
</p>
<p>
<center>
<img src="invalidurldialog.gif" align="center"
alt="Web Services Invalid URL Warning dialog box" width="389"
- height="258"
- ><br> Web Services Invalid URL Warning dialog box
+ height="258"><br> Web Services Invalid URL Warning
+ dialog box
</center>
<br>
<strong><em>Note:</em></strong> this warning will be shown if you are
</head>
<body>
<p>
- <strong>What's new ?</strong>
+ <strong>What's new in Jalview 2.10 ?</strong>
</p>
<p>
Jalview 2.10 is the next major release in the Jalview 2 series. Full
details are in the <a href="releases.html#Jalview.2.10.0">Jalview
2.10 Release Notes</a>, but the highlights are below.
</p>
- <p>
- <strong>Highlights in Jalview 2.10</strong>
<ul>
- <li><strong>Ensembl sequence fetcher.</strong> Annotated Genes,
- transcripts and proteins can be retrieved via Jalview's new <a
- href="features/ensemblsequencefetcher.html">Ensembl REST
- client</a>. Support for import of Ensembl data also allows:
+ <li><strong>Ensembl sequence fetcher</strong><br />Annotated
+ Genes, transcripts and proteins can be retrieved via Jalview's new
+ <a href="features/ensemblsequencefetcher.html">Ensembl REST
+ client</a>. Support for import of Ensembl data allows:
<ul>
- <li><strong>Sequence variant data.</strong> Jalview
- propagates variant annotation imported via Ensembl onto
- protein products, complete with associated metadata such as
- clinical significance.</li>
- <li><strong>Aligned locus view.</strong> Transcripts
+ <li><strong>Aligned locus view</strong><br />Transcripts
retrieved for a gene identifier via the Ensembl or
EnsemblGenomes sequence databases are automatically aligned to
- their reference genome.</li>
+ their reference genome, and introns hidden from the view.</li>
+ <li><strong>Sequence variant data</strong><br />Jalview
+ propagates variant annotation on genomic regions onto
+ transcripts and protein products, complete with associated
+ metadata such as clinical significance.</li>
</ul></li>
- <li><strong>Working with structures.</strong>
+ <li><strong>Ensembl and ENA 'show cross-references'
+ support</strong><br />The Calculations menu's <strong>'Show
+ cross-references'</strong> now offers Ensembl as well as EMBLCDS and
+ Uniprot when CDS/Protein mapping data is available for download or
+ display. This allows variant annotation to be added directly to an
+ alignment of UniProt sequences.</li>
+ <li><strong>Working with structures</strong>
<ul>
- <li><strong>More accurate structure mappings.</strong>
+ <li><strong>More accurate structure mappings</strong><br />
Jalview now utilises the PDBe's SIFTS database (at EMBL-EBI)
to <a href="features/siftsmapping.html">match structures
to UniProt sequences</a>, even for structures containing
multiple copies of a sequence.</li>
- <li><strong>Import structures as mmCIF</strong>. Jalview
- now downloads data from the EMBL-EBI's PDBe site as <a href="features/mmcif.html">mmCIF</a>.
- This allows very large structures to be imported, such as the HIV virus capsid assembly.</li>
+ <li><strong>Import structures as mmCIF</strong><br />Jalview
+ now downloads data from the EMBL-EBI's PDBe site as <a
+ href="features/mmcif.html">mmCIF</a>. This allows very large
+ structures to be imported, such as the HIV virus capsid
+ assembly.</li>
+ <li><strong>Chimera users will need to upgrade to
+ 1.11.1</strong><br />If you use Chimera to view structures
+ downloaded by Jalview 2.10, you will need to make sure you are
+ running the latest version of <a href="features/chimera.html">Chimera</a>.</li>
</ul></li>
- <li><strong>UniProt Free Text Search</strong>. The new search
- dialog for UniProt allows you to browse and retrieve sequences
- from UniProt with free-text search and more structured queries</li>
- <li><strong>Reference sequence based alignment
- visualisation.</strong>. When a reference sequence is defined for the
- alignment, the alignment column ruler is now numbered according to
- the reference sequence. The reference sequence for alignment views
- can also be saved and restored from Jalview projects.</li>
- <li></li>
+ <li><strong>UniProt Free Text Search</strong><br />The new
+ search dialog for UniProt allows you to browse and retrieve
+ sequences with free-text search, or structured queries.</li>
+ <li><strong>Reference sequence alignment view</strong><br />
+ Jalview 2.9 introduced support for reference sequences. In 2.10,
+ when a reference sequence is defined for the alignment, the
+ alignment column ruler is now numbered according to the reference
+ sequence. The reference sequence for alignment views can also be
+ saved and restored from Jalview projects.</li>
</ul>
</body>
-YEAR=2014
-AUTHORS=J Procter, AM Waterhouse, M Carstairs, TC Ofoegbu, J Engelhardt, LM Lui, A Menard, D Barton, N Sherstnev, D Roldan-Martinez, M Clamp, S Searle, G Barton
-AUTHORFNAMES=Jim Procter, Andrew Waterhouse, Mungo Carstairs, Tochukwu 'Charles' Ofoegbu, Jan Engelhardt, Lauren Lui, Anne Menard, Daniel Barton, Natasha Sherstnev, David Roldan-Martinez, Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton
+YEAR=2016
+AUTHORS=J Procter, M Carstairs, TC Ofoegbu, AM Waterhouse, J Engelhardt, LM Lui, A Menard, D Barton, N Sherstnev, D Roldan-Martinez, M Clamp, S Searle, G Barton
+AUTHORFNAMES=Jim Procter, Mungo Carstairs, Tochukwu 'Charles' Ofoegbu, Andrew Waterhouse, Jan Engelhardt, Lauren Lui, Anne Menard, Daniel Barton, Natasha Sherstnev, David Roldan-Martinez, Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton
\ No newline at end of file
for (int i = 0; i < pdb.getChains().size(); i++)
{
- mappingDetails.append("\n\nPDB Sequence is :\nSequence = "
- + pdb.getChains().elementAt(i).sequence.getSequenceAsString());
+ mappingDetails
+ .append("\n\nPDB Sequence is :\nSequence = "
+ + pdb.getChains().elementAt(i).sequence
+ .getSequenceAsString());
mappingDetails.append("\nNo of residues = "
+ pdb.getChains().elementAt(i).residues.size() + "\n\n");
// Align the sequence to the pdb
// TODO: DNa/Pep switch
AlignSeq as = new AlignSeq(sequence,
- pdb.getChains().elementAt(i).sequence,
- pdb.getChains().elementAt(i).isNa ? AlignSeq.DNA : AlignSeq.PEP);
+ pdb.getChains().elementAt(i).sequence, pdb.getChains()
+ .elementAt(i).isNa ? AlignSeq.DNA : AlignSeq.PEP);
as.calcScoreMatrix();
as.traceAlignment();
PrintStream ps = new PrintStream(System.out)
}
return false;
}
+
public Atom(float x, float y, float z)
{
this.x = x;
for (int i = 0; i < pdb.getChains().size(); i++)
{
- mappingDetails.append("\n\nPDB Sequence is :\nSequence = "
- + pdb.getChains().elementAt(i).sequence.getSequenceAsString());
+ mappingDetails
+ .append("\n\nPDB Sequence is :\nSequence = "
+ + pdb.getChains().elementAt(i).sequence
+ .getSequenceAsString());
mappingDetails.append("\nNo of residues = "
+ pdb.getChains().elementAt(i).residues.size() + "\n\n");
else
{
- // Make a new Residue object with the new atoms vector
- residues.addElement(new Residue(resAtoms, resNumber - 1, count));
+ // Make a new Residue object with the new atoms vector
+ residues.addElement(new Residue(resAtoms, resNumber - 1, count));
- Residue tmpres = residues.lastElement();
- Atom tmpat = tmpres.atoms.get(0);
- // Make A new SequenceFeature for the current residue numbering
+ Residue tmpres = residues.lastElement();
+ Atom tmpat = tmpres.atoms.get(0);
+ // Make A new SequenceFeature for the current residue numbering
SequenceFeature sf = new SequenceFeature("RESNUM", tmpat.resName
- + ":" + tmpat.resNumIns + " " + pdbid + id, "", offset
- + count, offset + count, pdbid);
- resFeatures.addElement(sf);
- resAnnotation.addElement(new Annotation(tmpat.tfactor));
- // Keep totting up the sequence
+ + ":" + tmpat.resNumIns + " " + pdbid + id, "", offset
+ + count, offset + count, pdbid);
+ resFeatures.addElement(sf);
+ resAnnotation.addElement(new Annotation(tmpat.tfactor));
+ // Keep totting up the sequence
- if ((symbol = ResidueProperties.getAA3Hash().get(tmpat.resName)) == null)
- {
- String nucname = tmpat.resName.trim();
- // use the aaIndex rather than call 'toLower' - which would take a bit
- // more time.
- deoxyn = nucname.length() == 2
- && ResidueProperties.aaIndex[nucname.charAt(0)] == ResidueProperties.aaIndex['D'];
- if (tmpat.name.equalsIgnoreCase("CA")
- || ResidueProperties.nucleotideIndex[nucname
- .charAt((deoxyn ? 1 : 0))] == -1)
+ if ((symbol = ResidueProperties.getAA3Hash().get(tmpat.resName)) == null)
{
+ String nucname = tmpat.resName.trim();
+ // use the aaIndex rather than call 'toLower' - which would take a bit
+ // more time.
+ deoxyn = nucname.length() == 2
+ && ResidueProperties.aaIndex[nucname.charAt(0)] == ResidueProperties.aaIndex['D'];
+ if (tmpat.name.equalsIgnoreCase("CA")
+ || ResidueProperties.nucleotideIndex[nucname
+ .charAt((deoxyn ? 1 : 0))] == -1)
+ {
char r = ResidueProperties
.getSingleCharacterCode(ResidueProperties
.getCanonicalAminoAcid(tmpat.resName));
seq.append(r == '0' ? 'X' : r);
// System.err.println("PDBReader:Null aa3Hash for " +
// tmpat.resName);
+ }
+ else
+ {
+ // nucleotide flag
+ nucleotide = true;
+ seq.append(nucname.charAt((deoxyn ? 1 : 0)));
+ }
}
else
{
- // nucleotide flag
- nucleotide = true;
- seq.append(nucname.charAt((deoxyn ? 1 : 0)));
- }
- }
- else
- {
- if (nucleotide)
- {
- System.err
- .println("Warning: mixed nucleotide and amino acid chain.. its gonna do bad things to you!");
+ if (nucleotide)
+ {
+ System.err
+ .println("Warning: mixed nucleotide and amino acid chain.. its gonna do bad things to you!");
+ }
+ seq.append(ResidueProperties.aa[((Integer) symbol).intValue()]);
}
- seq.append(ResidueProperties.aa[((Integer) symbol).intValue()]);
- }
count++;
}
}
if (StructureImportSettings.isShowSeqFeatures())
{
- for (i = 0, iSize = resFeatures.size(); i < iSize; i++)
- {
- sequence.addSequenceFeature(resFeatures.elementAt(i));
- resFeatures.setElementAt(null, i);
- }
+ for (i = 0, iSize = resFeatures.size(); i < iSize; i++)
+ {
+ sequence.addSequenceFeature(resFeatures.elementAt(i));
+ resFeatures.setElementAt(null, i);
+ }
}
if (visibleChainAnnotation)
{
radioItem.removeActionListener(radioItem.getActionListeners()[0]);
int option = JOptionPane.showInternalConfirmDialog(
- jalview.gui.Desktop.desktop,
- MessageManager
+ jalview.gui.Desktop.desktop, MessageManager
.getString("label.remove_from_default_list"),
MessageManager
.getString("label.remove_user_defined_colour"),
}
public PDBfile(boolean addAlignmentAnnotations, boolean predictSecStr,
- boolean externalSecStr,
- FileParse source) throws IOException
+ boolean externalSecStr, FileParse source) throws IOException
{
super(false, source);
addSettings(addAlignmentAnnotations, predictSecStr, externalSecStr);
Atom tmpatom = new Atom(line);
try
{
- tmpchain = findChain(tmpatom.chain);
+ tmpchain = findChain(tmpatom.chain);
if (tmpatom.resNumIns.trim().equals(lastID))
{
// phosphorylated protein - seen both CA and P..
markCalcIds();
}
-
-
/**
* Process a parsed chain to construct and return a Sequence, and add it to
* the list of sequences parsed.
}
pid = pid / (aseq1.length - count) * 100;
- output = output.append(new Format("Percentage ID = %2.2f\n")
- .form(pid));
+ output = output.append(new Format("Percentage ID = %2.2f\n").form(pid));
try
{
os.print(output.toString());
public static void sortByFeature(String featureLabel, String groupLabel,
int start, int stop, AlignmentI alignment, String method)
{
- sortByFeature(featureLabel == null ? null
+ sortByFeature(
+ featureLabel == null ? null
: Arrays.asList(new String[] { featureLabel }),
- groupLabel == null ? null
- : Arrays.asList(new String[]{ groupLabel }), start, stop, alignment, method);
+ groupLabel == null ? null : Arrays
+ .asList(new String[] { groupLabel }), start, stop,
+ alignment, method);
}
private static boolean containsIgnoreCase(final String lab,
}
public static void sortByFeature(List<String> featureLabels,
- List<String> groupLabels, int start, int stop, AlignmentI alignment,
- String method)
+ List<String> groupLabels, int start, int stop,
+ AlignmentI alignment, String method)
{
if (method != FEATURE_SCORE && method != FEATURE_LABEL
&& method != FEATURE_DENSITY)
{
private static final int CODON_LENGTH = 3;
+
private static final String SEQUENCE_VARIANT = "sequence_variant:";
+
private static final String ID = "ID";
/**
*/
if (cdnaLength != mappedLength && cdnaLength > 2)
{
- String lastCodon = String.valueOf(cdnaSeqChars, cdnaLength - CODON_LENGTH, CODON_LENGTH)
- .toUpperCase();
+ String lastCodon = String.valueOf(cdnaSeqChars,
+ cdnaLength - CODON_LENGTH, CODON_LENGTH).toUpperCase();
for (String stop : ResidueProperties.STOP)
{
if (lastCodon.equals(stop))
int aaPos = 0;
int dnaPos = cdnaStart;
- for (; dnaPos < cdnaSeqChars.length - 2
- && aaPos < aaSeqChars.length; dnaPos += CODON_LENGTH, aaPos++)
+ for (; dnaPos < cdnaSeqChars.length - 2 && aaPos < aaSeqChars.length; dnaPos += CODON_LENGTH, aaPos++)
{
String codon = String.valueOf(cdnaSeqChars, dnaPos, CODON_LENGTH);
final String translated = ResidueProperties.codonTranslate(codon);
.println("alignCdsSequenceAsProtein needs aligned sequence!");
return false;
}
-
+
List<AlignedCodonFrame> dnaMappings = MappingUtils
.findMappingsForSequence(cdsSeq, mappings);
for (AlignedCodonFrame mapping : dnaMappings)
.getFromRanges());
int mappedToLength = MappingUtils
.getLength(mapList.getToRanges());
- boolean addStopCodon = (cdsLength == mappedFromLength * CODON_LENGTH + CODON_LENGTH)
+ boolean addStopCodon = (cdsLength == mappedFromLength
+ * CODON_LENGTH + CODON_LENGTH)
|| (peptide.getDatasetSequence().getLength() == mappedFromLength - 1);
if (cdsLength != mappedToLength && !addStopCodon)
{
// TODO resolve JAL-2022 so this fudge can be removed
int mappedSequenceCount = protein.getHeight() - unmappedProtein.size();
addUnmappedPeptideStarts(alignedCodons, mappedSequenceCount);
-
+
return alignedCodons;
}
*/
List<int[]> cdsRange = Collections.singletonList(new int[] { 1,
cdsSeq.getLength() });
- MapList cdsToProteinMap = new MapList(cdsRange, mapList.getToRanges(),
- mapList.getFromRatio(), mapList.getToRatio());
+ MapList cdsToProteinMap = new MapList(cdsRange,
+ mapList.getToRanges(), mapList.getFromRatio(),
+ mapList.getToRatio());
AlignedCodonFrame cdsToProteinMapping = new AlignedCodonFrame();
cdsToProteinMapping.addMap(cdsSeqDss, proteinProduct,
cdsToProteinMap);
* same source and accession, so need a different accession for
* the CDS from the dna sequence
*/
-
+
// specific use case:
// Genomic contig ENSCHR:1, contains coding regions for ENSG01,
// ENSG02, ENSG03, with transcripts and products similarly named.
// cannot add distinct dbrefs mapping location on ENSCHR:1 to ENSG01
-
+
// JBPNote: ?? can't actually create an example that demonstrates we
// need to
// synthesize an xref.
-
+
for (DBRefEntry primRef : dnaDss.getPrimaryDBRefs())
{
// creates a complementary cross-reference to the source sequence's
int mappedFromLength = MappingUtils.getLength(aMapping.getMap()
.getFromRanges());
int dnaLength = seqDss.getLength();
- if (mappedFromLength == dnaLength || mappedFromLength == dnaLength - CODON_LENGTH)
+ if (mappedFromLength == dnaLength
+ || mappedFromLength == dnaLength - CODON_LENGTH)
{
return seqDss;
}
for (SequenceToSequenceMapping map : acf.getMappings())
{
Mapping mapping = map.getMapping();
- if (mapping != aMapping && mapping.getMap().getFromRatio() == CODON_LENGTH
+ if (mapping != aMapping
+ && mapping.getMap().getFromRatio() == CODON_LENGTH
&& proteinProduct == mapping.getTo()
&& seqDss != map.getFromSeq())
{
}
}
}
-
+
/*
* assign 'from id' held in the mapping if set (e.g. EMBL protein_id),
* else generate a sequence name
StringBuilder link = new StringBuilder(32);
try
{
- link.append(desc).append(" ").append(id)
+ link.append(desc)
+ .append(" ")
+ .append(id)
.append("|http://www.ensembl.org/Homo_sapiens/Variation/Summary?v=")
.append(URLEncoder.encode(id, "UTF-8"));
sf.addLink(link.toString());
// as if
}
}
- String clinSig = (String) var.variant
- .getValue(CLINICAL_SIGNIFICANCE);
+ String clinSig = (String) var.variant.getValue(CLINICAL_SIGNIFICANCE);
if (clinSig != null)
{
sf.setValue(CLINICAL_SIGNIFICANCE, clinSig);
}
newCol++;
}
-
+
/*
* trim trailing gaps
*/
{
tot = 0;
xx = new double[24];
- seqNum = (j < lengths[k]) ? seqNums.elementAt(k)[j + 1]
- : 23; // Sequence, or gap at the end
+ seqNum = (j < lengths[k]) ? seqNums.elementAt(k)[j + 1] : 23; // Sequence,
+ // or gap
+ // at the
+ // end
// This is a loop over r
for (i = 0; i < 23; i++)
Conservation cons = new Conservation(name, threshold, seqs, start, end);
cons.calculate();
cons.verdict(posOrNeg, consPercGaps);
-
+
if (calcQuality)
{
cons.findQuality();
}
-
+
return cons;
}
}
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.DBRefSource;
import jalview.datamodel.Mapping;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceFeature;
findXrefSourcesForSequence(seq, dna, sources);
}
}
+ sources.remove(DBRefSource.EMBL); // hack to prevent EMBL xrefs resulting in
+ // redundant datasets
+ if (dna)
+ {
+ sources.remove(DBRefSource.ENSEMBL); // hack to prevent Ensembl and
+ // EnsemblGenomes xref option shown
+ // from cdna panel
+ sources.remove(DBRefSource.ENSEMBLGENOMES);
+ }
+ // redundant datasets
return sources;
}
rseqs = new ArrayList<SequenceI>();
AlignedCodonFrame cf = new AlignedCodonFrame();
- matcher = new SequenceIdMatcher(
- dataset.getSequences());
+ matcher = new SequenceIdMatcher(dataset.getSequences());
for (SequenceI seq : fromSeqs)
{
if (!rseqs.contains(matchInDataset))
{
rseqs.add(matchInDataset);
- // need to try harder to only add unique mappings
- if (xref.getMap().getMap().isTripletMap()
- && dataset.getMapping(seq, matchInDataset) == null
- && cf.getMappingBetween(seq, matchInDataset) == null)
+ }
+ // even if rseqs contained matchInDataset - check mappings between
+ // these seqs are added
+ // need to try harder to only add unique mappings
+ if (xref.getMap().getMap().isTripletMap()
+ && dataset.getMapping(seq, matchInDataset) == null
+ && cf.getMappingBetween(seq, matchInDataset) == null)
+ {
+ // materialise a mapping for highlighting between these
+ // sequences
+ if (fromDna)
{
- // materialise a mapping for highlighting between these sequences
- if (fromDna)
- {
- cf.addMap(dss, matchInDataset, xref.getMap().getMap(), xref.getMap().getMappedFromId());
- } else {
- cf.addMap(matchInDataset, dss, xref.getMap().getMap().getInverse(), xref.getMap().getMappedFromId());
- }
+ cf.addMap(dss, matchInDataset, xref.getMap().getMap(),
+ xref.getMap().getMappedFromId());
+ }
+ else
+ {
+ cf.addMap(matchInDataset, dss, xref.getMap().getMap()
+ .getInverse(), xref.getMap().getMappedFromId());
}
}
+
refIterator.remove();
continue;
}
// first filter in case we are retrieving crossrefs that have already been
// retrieved. this happens for cases where a database record doesn't yield
// protein products for CDS
- DBRefEntry[] dbrSourceSet = sourceRefs.toArray(new DBRefEntry[0]);
- for (SequenceI sq : dataset.getSequences())
- {
- boolean dupeFound = false;
- // !fromDna means we are looking only for nucleotide sequences, not
- // protein
- if (sq.isProtein() == fromDna)
- {
- for (DBRefEntry dbr : sq.getPrimaryDBRefs())
- {
- for (DBRefEntry found : DBRefUtils.searchRefs(dbrSourceSet, dbr))
- {
- sourceRefs.remove(found);
- dupeFound = true;
- }
- }
- }
- if (dupeFound)
- {
- dbrSourceSet = sourceRefs.toArray(new DBRefEntry[0]);
- }
- }
+ removeAlreadyRetrievedSeqs(sourceRefs, fromDna);
if (sourceRefs.size() == 0)
{
// no more work to do! We already had all requested sequence records in
if (retrieved != null)
{
- updateDbrefMappings(seq, xrfs, retrieved, cf, fromDna);
+ boolean addedXref = false;
+ List<SequenceI> newDsSeqs = new ArrayList<SequenceI>(), doNotAdd = new ArrayList<SequenceI>();
+
for (SequenceI retrievedSequence : retrieved)
{
// dataset gets contaminated ccwith non-ds sequences. why ??!
// try: Ensembl -> Nuc->Ensembl, Nuc->Uniprot-->Protein->EMBL->
SequenceI retrievedDss = retrievedSequence.getDatasetSequence() == null ? retrievedSequence
: retrievedSequence.getDatasetSequence();
- DBRefEntry[] dbr = retrievedSequence.getDBRefs();
- if (dbr != null)
+ addedXref |= importCrossRefSeq(cf, newDsSeqs, doNotAdd, dss,
+ retrievedDss);
+ }
+ if (!addedXref)
+ {
+ // try again, after looking for matching IDs
+ // shouldn't need to do this unless the dbref mechanism has broken.
+ updateDbrefMappings(seq, xrfs, retrieved, cf, fromDna);
+ for (SequenceI retrievedSequence : retrieved)
+ {
+ // dataset gets contaminated ccwith non-ds sequences. why ??!
+ // try: Ensembl -> Nuc->Ensembl, Nuc->Uniprot-->Protein->EMBL->
+ SequenceI retrievedDss = retrievedSequence.getDatasetSequence() == null ? retrievedSequence
+ : retrievedSequence.getDatasetSequence();
+ addedXref |= importCrossRefSeq(cf, newDsSeqs, doNotAdd, dss,
+ retrievedDss);
+ }
+ }
+ for (SequenceI newToSeq : newDsSeqs)
+ {
+ if (!doNotAdd.contains(newToSeq)
+ && dataset.findIndex(newToSeq) == -1)
{
- for (DBRefEntry dbref : dbr)
+ dataset.addSequence(newToSeq);
+ matcher.add(newToSeq);
+ }
+ }
+ }
+ }
+
+ /**
+ * Search dataset for sequences with a primary reference contained in
+ * sourceRefs.
+ *
+ * @param sourceRefs
+ * - list of references to filter.
+ * @param fromDna
+ * - type of sequence to search for matching primary reference.
+ */
+ private void removeAlreadyRetrievedSeqs(List<DBRefEntry> sourceRefs,
+ boolean fromDna)
+ {
+ DBRefEntry[] dbrSourceSet = sourceRefs.toArray(new DBRefEntry[0]);
+ for (SequenceI sq : dataset.getSequences())
+ {
+ boolean dupeFound = false;
+ // !fromDna means we are looking only for nucleotide sequences, not
+ // protein
+ if (sq.isProtein() == fromDna)
+ {
+ for (DBRefEntry dbr : sq.getPrimaryDBRefs())
+ {
+ for (DBRefEntry found : DBRefUtils.searchRefs(dbrSourceSet, dbr))
{
- // find any entry where we should put in the sequence being
- // cross-referenced into the map
- Mapping map = dbref.getMap();
- if (map != null)
+ sourceRefs.remove(found);
+ dupeFound = true;
+ }
+ }
+ }
+ if (dupeFound)
+ {
+ // rebuild the search array from the filtered sourceRefs list
+ dbrSourceSet = sourceRefs.toArray(new DBRefEntry[0]);
+ }
+ }
+ }
+
+ /**
+ * process sequence retrieved via a dbref on source sequence to resolve and
+ * transfer data
+ *
+ * @param cf
+ * @param sourceSequence
+ * @param retrievedSequence
+ * @return true if retrieveSequence was imported
+ */
+ private boolean importCrossRefSeq(AlignedCodonFrame cf,
+ List<SequenceI> newDsSeqs, List<SequenceI> doNotAdd,
+ SequenceI sourceSequence, SequenceI retrievedSequence)
+ {
+ /**
+ * set when retrievedSequence has been verified as a crossreference for
+ * sourceSequence
+ */
+ boolean imported = false;
+ DBRefEntry[] dbr = retrievedSequence.getDBRefs();
+ if (dbr != null)
+ {
+ for (DBRefEntry dbref : dbr)
+ {
+ SequenceI matched = findInDataset(dbref);
+ if (matched == sourceSequence)
+ {
+ // verified retrieved and source sequence cross-reference each other
+ imported = true;
+ }
+ // find any entry where we should put in the sequence being
+ // cross-referenced into the map
+ Mapping map = dbref.getMap();
+ if (map != null)
+ {
+ if (map.getTo() != null && map.getMap() != null)
+ {
+ if (map.getTo() == sourceSequence)
+ {
+ // already called to import once, and most likely this sequence
+ // already imported !
+ continue;
+ }
+ if (matched == null)
+ {
+ /*
+ * sequence is new to dataset, so save a reference so it can be added.
+ */
+ newDsSeqs.add(map.getTo());
+ continue;
+ }
+
+ /*
+ * there was a matching sequence in dataset, so now, check to see if we can update the map.getTo() sequence to the existing one.
+ */
+
+ try
{
- if (map.getTo() != null && map.getMap() != null)
+ // compare ms with dss and replace with dss in mapping
+ // if map is congruent
+ SequenceI ms = map.getTo();
+ // TODO findInDataset requires exact sequence match but
+ // 'congruent' test is only for the mapped part
+ // maybe not a problem in practice since only ENA provide a
+ // mapping and it is to the full protein translation of CDS
+ // matcher.findIdMatch(map.getTo());
+ // TODO addendum: if matched is shorter than getTo, this will fail
+ // - when it should really succeed.
+ int sf = map.getMap().getToLowest();
+ int st = map.getMap().getToHighest();
+ SequenceI mappedrg = ms.getSubSequence(sf, st);
+ if (mappedrg.getLength() > 0
+ && ms.getSequenceAsString().equals(
+ matched.getSequenceAsString()))
{
- // TODO findInDataset requires exact sequence match but
- // 'congruent' test is only for the mapped part
- // maybe not a problem in practice since only ENA provide a
- // mapping and it is to the full protein translation of CDS
- SequenceI matched = findInDataset(dbref);
- // matcher.findIdMatch(map.getTo());
- if (matched != null)
+ /*
+ * sequences were a match,
+ */
+ String msg = "Mapping updated from " + ms.getName()
+ + " to retrieved crossreference "
+ + matched.getName();
+ System.out.println(msg);
+
+ DBRefEntry[] toRefs = map.getTo().getDBRefs();
+ if (toRefs != null)
{
/*
- * already got an xref to this sequence; update this
- * map to point to the same sequence, and add
- * any new dbrefs to it
+ * transfer database refs
*/
- DBRefEntry[] toRefs = map.getTo().getDBRefs();
- if (toRefs != null)
+ for (DBRefEntry ref : toRefs)
{
- for (DBRefEntry ref : toRefs)
+ if (dbref.getSrcAccString().equals(
+ ref.getSrcAccString()))
{
- matched.addDBRef(ref); // add or update mapping
+ continue; // avoid overwriting the ref on source sequence
}
- }
- map.setTo(matched);
- }
- else
- {
- if (dataset.findIndex(map.getTo()) == -1)
- {
- dataset.addSequence(map.getTo());
- matcher.add(map.getTo());
+ matched.addDBRef(ref); // add or update mapping
}
}
- try
- {
- // compare ms with dss and replace with dss in mapping
- // if map is congruent
- SequenceI ms = map.getTo();
- int sf = map.getMap().getToLowest();
- int st = map.getMap().getToHighest();
- SequenceI mappedrg = ms.getSubSequence(sf, st);
- // SequenceI loc = dss.getSubSequence(sf, st);
- if (mappedrg.getLength() > 0
- && ms.getSequenceAsString().equals(
- dss.getSequenceAsString()))
- // && mappedrg.getSequenceAsString().equals(
- // loc.getSequenceAsString()))
- {
- String msg = "Mapping updated from " + ms.getName()
- + " to retrieved crossreference "
- + dss.getName();
- System.out.println(msg);
- map.setTo(dss);
+ doNotAdd.add(map.getTo());
+ map.setTo(matched);
- /*
- * give the reverse reference the inverse mapping
- * (if it doesn't have one already)
- */
- setReverseMapping(dss, dbref, cf);
+ /*
+ * give the reverse reference the inverse mapping
+ * (if it doesn't have one already)
+ */
+ setReverseMapping(matched, dbref, cf);
+ /*
+ * copy sequence features as well, avoiding
+ * duplication (e.g. same variation from two
+ * transcripts)
+ */
+ SequenceFeature[] sfs = ms.getSequenceFeatures();
+ if (sfs != null)
+ {
+ for (SequenceFeature feat : sfs)
+ {
/*
- * copy sequence features as well, avoiding
- * duplication (e.g. same variation from two
- * transcripts)
+ * make a flyweight feature object which ignores Parent
+ * attribute in equality test; this avoids creating many
+ * otherwise duplicate exon features on genomic sequence
*/
- SequenceFeature[] sfs = ms.getSequenceFeatures();
- if (sfs != null)
+ SequenceFeature newFeature = new SequenceFeature(feat)
{
- for (SequenceFeature feat : sfs)
+ @Override
+ public boolean equals(Object o)
{
- /*
- * make a flyweight feature object which ignores Parent
- * attribute in equality test; this avoids creating many
- * otherwise duplicate exon features on genomic sequence
- */
- SequenceFeature newFeature = new SequenceFeature(
- feat)
- {
- @Override
- public boolean equals(Object o)
- {
- return super.equals(o, true);
- }
- };
- dss.addSequenceFeature(newFeature);
+ return super.equals(o, true);
}
- }
+ };
+ matched.addSequenceFeature(newFeature);
}
- cf.addMap(retrievedDss, map.getTo(), map.getMap());
- } catch (Exception e)
- {
- System.err
- .println("Exception when consolidating Mapped sequence set...");
- e.printStackTrace(System.err);
}
+
}
+ cf.addMap(retrievedSequence, map.getTo(), map.getMap());
+ } catch (Exception e)
+ {
+ System.err
+ .println("Exception when consolidating Mapped sequence set...");
+ e.printStackTrace(System.err);
}
}
}
- retrievedSequence.updatePDBIds();
- rseqs.add(retrievedDss);
- if (dataset.findIndex(retrievedDss) == -1)
- {
- dataset.addSequence(retrievedDss);
- matcher.add(retrievedDss);
- }
}
}
+ if (imported)
+ {
+ retrievedSequence.updatePDBIds();
+ rseqs.add(retrievedSequence);
+ if (dataset.findIndex(retrievedSequence) == -1)
+ {
+ dataset.addSequence(retrievedSequence);
+ matcher.add(retrievedSequence);
+ }
+ }
+ return imported;
}
+
/**
* Sets the inverse sequence mapping in the corresponding dbref of the mapped
* to sequence (if any). This is used after fetching a cross-referenced
}
/**
- * Returns the first identical sequence in the dataset if any, else null
+ * Returns null or the first sequence in the dataset which is identical to
+ * xref.mapTo, and has a) a primary dbref matching xref, or if none found, the
+ * first one with an ID source|xrefacc
*
* @param xref
+ * with map and mapped-to sequence
* @return
*/
SequenceI findInDataset(DBRefEntry xref)
String name2 = xref.getSource() + "|" + name;
SequenceI dss = mapsTo.getDatasetSequence() == null ? mapsTo : mapsTo
.getDatasetSequence();
+ // first check ds if ds is directly referenced
+ if (dataset.findIndex(dss) > -1)
+ {
+ return dss;
+ }
+ DBRefEntry template = new DBRefEntry(xref.getSource(), null,
+ xref.getAccessionId());
+ /**
+ * remember the first ID match - in case we don't find a match to template
+ */
+ SequenceI firstIdMatch = null;
for (SequenceI seq : dataset.getSequences())
{
+ // first check primary refs.
+ List<DBRefEntry> match = DBRefUtils.searchRefs(seq.getPrimaryDBRefs()
+ .toArray(new DBRefEntry[0]), template);
+ if (match != null && match.size() == 1 && sameSequence(seq, dss))
+ {
+ return seq;
+ }
/*
* clumsy alternative to using SequenceIdMatcher which currently
* returns sequences with a dbref to the matched accession id
* which we don't want
*/
- if (name.equals(seq.getName()) || seq.getName().startsWith(name2))
+ if (firstIdMatch == null
+ && (name.equals(seq.getName()) || seq.getName().startsWith(
+ name2)))
{
if (sameSequence(seq, dss))
{
- return seq;
+ firstIdMatch = seq;
}
}
}
- return null;
+ return firstIdMatch;
}
/**
MapList mapping = null;
SequenceI dsmapFrom = mapFrom.getDatasetSequence() == null ? mapFrom
: mapFrom.getDatasetSequence();
- SequenceI dsmapTo = mapTo.getDatasetSequence() == null ? mapTo
- : mapTo.getDatasetSequence();
+ SequenceI dsmapTo = mapTo.getDatasetSequence() == null ? mapTo : mapTo
+ .getDatasetSequence();
/*
* look for a reverse mapping, if found make its inverse.
* Note - we do this on dataset sequences only.
public static char getComplement(char c)
{
char result = c;
- switch (c) {
+ switch (c)
+ {
case '-':
case '.':
case ' ':
if ((nd.left() == null) && (nd.right() == null))
{
- System.out
- .println("Leaf = " + ((SequenceI) nd.element()).getName());
+ System.out.println("Leaf = " + ((SequenceI) nd.element()).getName());
System.out.println("Dist " + nd.dist);
System.out.println("Boot " + nd.getBootstrap());
}
}
else
{
- System.out.println(" name = "
- + ((SequenceI) nd.element()).getName());
+ System.out.println(" name = " + ((SequenceI) nd.element()).getName());
}
System.out.println(" dist = " + nd.dist + " " + nd.count + " "
public void applyToNodes(NodeTransformI nodeTransformI)
{
for (Enumeration<SequenceNode> nodes = node.elements(); nodes
- .hasMoreElements(); nodeTransformI
- .transform(nodes.nextElement()))
+ .hasMoreElements(); nodeTransformI.transform(nodes
+ .nextElement()))
{
;
}
{
second -= 32;
}
-
+
switch (first)
{
case 'A':
{
sqinfo.put("SeqFeatures", sfeat);
sqinfo.put("PdbId",
- (seq.getAllPDBEntries() != null) ? seq.getAllPDBEntries()
- : new Vector<PDBEntry>());
+ (seq.getAllPDBEntries() != null) ? seq.getAllPDBEntries()
+ : new Vector<PDBEntry>());
}
else
{
sqinfo.put("datasetSequence",
- (seq.getDatasetSequence() != null) ? seq.getDatasetSequence()
- : new Sequence("THISISAPLACEHOLDER", ""));
+ (seq.getDatasetSequence() != null) ? seq.getDatasetSequence()
+ : new Sequence("THISISAPLACEHOLDER", ""));
}
return sqinfo;
}
&& !(seqds.getName().equals("THISISAPLACEHOLDER") && seqds
.getLength() == 0))
{
- if (sfeatures!=null)
+ if (sfeatures != null)
{
System.err
.println("Implementation error: setting dataset sequence for a sequence which has sequence features.\n\tDataset sequence features will not be visible.");
if (canonicalOrWobblePairCount >= otherPairCount)
{
maxResidue = (canonicalOrWobblePairCount - canonical) < canonical ? "("
- : "[";
+ : "[";
}
else
{
* @return String[]
*/
String[] getViewAsString(boolean selectedRegionOnly);
-
+
/**
* This method returns the visible alignment as text, as seen on the GUI, ie
* if columns are hidden they will not be returned in the result. Use this for
*
* @return String[]
*/
- String[] getViewAsString(boolean selectedRegionOnly, boolean isExportHiddenSeqs);
+ String[] getViewAsString(boolean selectedRegionOnly,
+ boolean isExportHiddenSeqs);
void setSelectionGroup(SequenceGroup sg);
*/
void setFollowHighlight(boolean b);
-
public void applyFeaturesStyle(FeatureSettingsModelI featureSettings);
/**
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.api;
import jalview.datamodel.Mapping;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.api;
import jalview.datamodel.SequenceFeature;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.api;
/**
*/
public String getDbCoordSys();
-
/**
* Get DB Source for the SIFTs Entry
*
*/
public StructureMapping getSiftsStructureMapping(SequenceI seq,
String pdbFile, String chain) throws SiftsException;
-
+
/**
* Get residue by residue mapping for a given Sequence and SIFTs entity
*
* @throws Exception
*/
public HashMap<Integer, int[]> getGreedyMapping(String entityId,
- SequenceI seq,
- java.io.PrintStream os) throws SiftsException;
+ SequenceI seq, java.io.PrintStream os) throws SiftsException;
}
\ No newline at end of file
if (alignPanel.getAlignment().getAlignmentAnnotation() != null)
{
for (AlignmentAnnotation aa : alignPanel.getAlignment()
- .getAlignmentAnnotation())
- {
- boolean visible = (aa.sequenceRef == null ? showForAlignment
- : showForSequences);
- aa.visible = visible;
+ .getAlignmentAnnotation())
+ {
+ boolean visible = (aa.sequenceRef == null ? showForAlignment
+ : showForSequences);
+ aa.visible = visible;
}
}
alignPanel.validateAnnotationDimensions(true);
FeaturesFile formatter = new FeaturesFile();
if (format.equalsIgnoreCase("Jalview"))
{
- features = formatter.printJalviewFormat(viewport
- .getAlignment().getSequencesArray(),
- getDisplayedFeatureCols());
+ features = formatter.printJalviewFormat(viewport.getAlignment()
+ .getSequencesArray(), getDisplayedFeatureCols());
}
else
{
}
protected void popupSort(final MyCheckbox check,
- final Map<String, float[][]> minmax,
- int x, int y)
+ final Map<String, float[][]> minmax, int x, int y)
{
final String type = check.type;
final FeatureColourI typeCol = fr.getFeatureStyle(type);
* @param type
* @param columnsContaining
*/
- void hideFeatureColumns(final String type,
- boolean columnsContaining)
+ void hideFeatureColumns(final String type, boolean columnsContaining)
{
- if (ap.alignFrame.avc.markColumnsContainingFeatures(
- columnsContaining, false, false, type))
+ if (ap.alignFrame.avc.markColumnsContainingFeatures(columnsContaining,
+ false, false, type))
{
if (ap.alignFrame.avc.markColumnsContainingFeatures(
!columnsContaining, false, false, type))
if ((av.getSelectionGroup() == null)
|| ((!jalview.util.Platform.isControlDown(e) && !e
- .isShiftDown()) && av
- .getSelectionGroup() != null))
+ .isShiftDown()) && av.getSelectionGroup() != null))
{
av.setSelectionGroup(new SequenceGroup());
av.getSelectionGroup().setStartRes(0);
PopupMenu pop = new PopupMenu();
if (reveal != null)
{
- MenuItem item = new MenuItem(
- MessageManager.getString("label.reveal"));
+ MenuItem item = new MenuItem(MessageManager.getString("label.reveal"));
item.addActionListener(new ActionListener()
{
@Override
{
av.hideColumns(res, res);
if (av.getSelectionGroup() != null
- && av.getSelectionGroup().getSize() == av
- .getAlignment().getHeight())
+ && av.getSelectionGroup().getSize() == av.getAlignment()
+ .getHeight())
{
av.setSelectionGroup(null);
}
gg.fillPolygon(new int[] {
-1 + res * avCharWidth - avcharHeight / 4,
-1 + res * avCharWidth + avcharHeight / 4,
- -1 + res * avCharWidth },
- new int[] { y, y, y + 2 * yOf }, 3);
+ -1 + res * avCharWidth }, new int[] { y, y, y + 2 * yOf }, 3);
}
}
}
}
g.drawLine((mpos * avcharWidth) + (avcharWidth / 2), (ypos + 2)
- (avcharHeight / 2), (mpos * avcharWidth)
- + (avcharWidth / 2),
- ypos - 2);
+ + (avcharWidth / 2), ypos - 2);
}
}
}
}
PaintRefresher.Refresh(ap, av.getSequenceSetId());
ap.paintAlignment(needOverviewUpdate);
- needOverviewUpdate =false;
+ needOverviewUpdate = false;
changeEndRes = false;
changeStartRes = false;
stretchGroup = null;
pid = (SliderPanel) PIDSlider.getComponent(0);
pid.cs = cs;
}
- PIDSlider.setTitle(MessageManager
- .formatMessage("label.percentage_identity_threshold",
+ PIDSlider
+ .setTitle(MessageManager.formatMessage(
+ "label.percentage_identity_threshold",
new String[] { source }));
if (ap.av.getAlignment().getGroups() != null)
for (int i = 0; i < leaves.size(); i++)
{
- SequenceI seq = (SequenceI) leaves.elementAt(i)
- .element();
+ SequenceI seq = (SequenceI) leaves.elementAt(i).element();
treeSelectionChanged(seq);
}
}
(int) (Math.random() * 255), (int) (Math.random() * 255));
setColor(tree.getGroups().elementAt(i), col.brighter());
- Vector<SequenceNode> l = tree.findLeaves(tree
- .getGroups().elementAt(i));
+ Vector<SequenceNode> l = tree.findLeaves(tree.getGroups()
+ .elementAt(i));
Vector<SequenceI> sequences = new Vector<SequenceI>();
for (int j = 0; j < l.size(); j++)
{
- SequenceI s1 = (SequenceI) l.elementAt(j)
- .element();
+ SequenceI s1 = (SequenceI) l.elementAt(j).element();
if (!sequences.contains(s1))
{
sequences.addElement(s1);
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.bin;
import java.net.URLDecoder;
return vargs.size();
}
-}
\ No newline at end of file
+}
private final static String DEFAULT_CACHE_THRESHOLD_IN_DAYS = "2";
private final static String DEFAULT_FAIL_SAFE_PID_THRESHOLD = "30";
-
+
/**
* Allowed values are PDB or mmCIF
*/
{
setProperty(property, jalview.util.Format.getHexString(colour));
}
-
+
/**
* Stores a formatted date in a jalview property, using a fixed locale.
*
import groovy.lang.Binding;
import groovy.util.GroovyScriptEngine;
+import jalview.ext.so.SequenceOntology;
import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
import jalview.gui.PromptUserConfig;
import jalview.io.HtmlSvgOutput;
import jalview.io.IdentifyFile;
import jalview.io.NewickFile;
+import jalview.io.gff.SequenceOntologyFactory;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.ColourSchemeProperty;
import jalview.schemes.UserColourScheme;
}
}
+ /*
+ * configure 'full' SO model if preferences say to,
+ * else use the default (SO Lite)
+ */
+ if (Cache.getDefault("USE_FULL_SO", false))
+ {
+ SequenceOntologyFactory.setInstance(new SequenceOntology());
+ }
+
if (!headless)
{
desktop = new Desktop();
setEdit(new Edit(Action.CUT, seqs, column + 1, width, al));
}
-
performEdit(0, null);
}
return (this.fromSeq == that.fromSeq || (this.fromSeq != null
&& that.fromSeq != null
&& this.fromSeq.getDatasetSequence() != null && this.fromSeq
- .getDatasetSequence() == that.fromSeq
- .getDatasetSequence())) && this.mapping.equals(that.mapping);
+ .getDatasetSequence() == that.fromSeq.getDatasetSequence()))
+ && this.mapping.equals(that.mapping);
}
public SequenceI getFromSeq()
}
/**
- * Returns the first mapping found that is between 'fromSeq' and 'toSeq', or null
- * if none found
+ * Returns the first mapping found that is between 'fromSeq' and 'toSeq', or
+ * null if none found
*
* @param fromSeq
* aligned or dataset sequence
import jalview.datamodel.AlignedCodonFrame.SequenceToSequenceMapping;
import jalview.io.FastaFile;
import jalview.util.Comparison;
+import jalview.util.LinkedIdentityHashSet;
import jalview.util.MessageManager;
import java.util.ArrayList;
private void resolveAndAddDatasetSeq(SequenceI currentSeq,
Set<SequenceI> seqs, boolean createDatasetSequence)
{
+ SequenceI alignedSeq = currentSeq;
if (currentSeq.getDatasetSequence() != null)
{
currentSeq = currentSeq.getDatasetSequence();
{
if (dbr.getMap() != null && dbr.getMap().getTo() != null)
{
+ if (dbr.getMap().getTo() == alignedSeq)
+ {
+ /*
+ * update mapping to be to the newly created dataset sequence
+ */
+ dbr.getMap().setTo(currentSeq);
+ }
if (dbr.getMap().getTo().getDatasetSequence() != null)
{
- throw new Error("Implementation error: Map.getTo() for dbref"
- + dbr + " is not a dataset sequence.");
- // TODO: if this happens, could also rewrite the reference to
- // point to new dataset sequence
+ throw new Error(
+ "Implementation error: Map.getTo() for dbref " + dbr
+ + " from " + curDs.getName()
+ + " is not a dataset sequence.");
}
// we recurse to add all forward references to dataset sequences via
// DBRefs/etc
return;
}
// try to avoid using SequenceI.equals at this stage, it will be expensive
- Set<SequenceI> seqs = new jalview.util.LinkedIdentityHashSet<SequenceI>();
+ Set<SequenceI> seqs = new LinkedIdentityHashSet<SequenceI>();
for (int i = 0; i < getHeight(); i++)
{
* already
*/
public void remap(SequenceI newref, HashMap<Integer, int[]> mapping,
- int from, int to,
- int idxoffset)
+ int from, int to, int idxoffset)
{
if (mapping != null)
{
*/
public int[] locateVisibleBoundsOfSequence(SequenceI seq)
{
- int fpos=seq.getStart(),lpos= seq.getEnd();
+ int fpos = seq.getStart(), lpos = seq.getEnd();
int start = 0;
-
+
if (hiddenColumns == null || hiddenColumns.size() == 0)
{
int ifpos = seq.findIndex(fpos) - 1, ilpos = seq.findIndex(lpos) - 1;
* makes a copy of the alignment with hidden sequences included. Using the
* copy for anything other than simple output is not recommended. Note - this
* method DOES NOT USE THE AlignmentI COPY CONSTRUCTOR!
+ *
* @return
*/
public AlignmentI getFullAlignment()
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.datamodel;
/**
import jalview.analysis.AlignSeq;
import jalview.api.DBRefEntryI;
+import jalview.util.Comparison;
import jalview.util.DBRefUtils;
import jalview.util.MapList;
import jalview.util.StringUtils;
{
char[] oseq = seq.getSequence();
initSeqAndName(seq.getName(), Arrays.copyOf(oseq, oseq.length),
- seq.getStart(),
- seq.getEnd());
+ seq.getStart(), seq.getEnd());
}
description = seq.getDescription();
if (seq != datasetSequence)
}
}
-
@Override
public void setSequenceFeatures(SequenceFeature[] features)
{
@Override
public synchronized void addSequenceFeature(SequenceFeature sf)
{
- if (sequenceFeatures==null && datasetSequence != null)
+ if (sequenceFeatures == null && datasetSequence != null)
{
datasetSequence.addSequenceFeature(sf);
return;
{
if (sequenceFeatures == null)
{
- if (datasetSequence!=null) {
- datasetSequence.deleteFeature(sf);
+ if (datasetSequence != null)
+ {
+ datasetSequence.deleteFeature(sf);
}
return;
}
@Override
public void setDBRefs(DBRefEntry[] dbref)
{
+ if (dbrefs == null && datasetSequence != null
+ && this != datasetSequence)
+ {
+ datasetSequence.setDBRefs(dbref);
+ return;
+ }
dbrefs = dbref;
+ if (dbrefs != null)
+ {
+ DBRefUtils.ensurePrimaries(this);
+ }
}
@Override
@Override
public void addDBRef(DBRefEntry entry)
{
- // TODO add to dataset sequence instead if there is one?
+ if (datasetSequence != null)
+ {
+ datasetSequence.addDBRef(entry);
+ return;
+ }
+
if (dbrefs == null)
{
dbrefs = new DBRefEntry[0];
temp[temp.length - 1] = entry;
dbrefs = temp;
+
+ DBRefUtils.ensurePrimaries(this);
}
@Override
public void setDatasetSequence(SequenceI seq)
{
- // TODO check for circular reference before setting?
+ if (seq == this)
+ {
+ throw new IllegalArgumentException(
+ "Implementation Error: self reference passed to SequenceI.setDatasetSequence");
+ }
+ if (seq != null && seq.getDatasetSequence() != null)
+ {
+ throw new IllegalArgumentException(
+ "Implementation error: cascading dataset sequences are not allowed.");
+ }
datasetSequence = seq;
}
@Override
public SequenceI deriveSequence()
{
- Sequence seq=null;
+ Sequence seq = null;
if (datasetSequence == null)
{
if (isValidDatasetSequence())
else
{
// Create a new, valid dataset sequence
- createDatasetSequence();
+ createDatasetSequence();
}
}
return new Sequence(this);
private long _seqhash = 0;
+ /**
+ * Answers false if the sequence is more than 85% nucleotide (ACGTU), else
+ * true
+ */
@Override
public boolean isProtein()
{
if (_seqhash != sequence.hashCode())
{
_seqhash = sequence.hashCode();
- _isNa=jalview.util.Comparison.isNucleotide(new SequenceI[] { this });
+ _isNa = Comparison.isNucleotide(this);
}
return !_isNa;
};
dsseq.setDescription(description);
// move features and database references onto dataset sequence
dsseq.sequenceFeatures = sequenceFeatures;
- sequenceFeatures=null;
+ sequenceFeatures = null;
dsseq.dbrefs = dbrefs;
- dbrefs=null;
+ dbrefs = null;
// TODO: search and replace any references to this sequence with
// references to the dataset sequence in Mappings on dbref
dsseq.pdbIds = pdbIds;
return null;
}
-
@Override
public List<DBRefEntry> getPrimaryDBRefs()
{
- if (datasetSequence!=null)
+ if (datasetSequence != null)
{
return datasetSequence.getPrimaryDBRefs();
}
- if (dbrefs==null || dbrefs.length==0)
+ if (dbrefs == null || dbrefs.length == 0)
{
return Collections.emptyList();
}
public int[] findPositionMap();
/**
+ * Answers true if the sequence is composed of amino acid characters. Note
+ * that implementations may use heuristic methods which are not guaranteed to
+ * give the biologically 'right' answer.
*
- * @return true if sequence is composed of amino acid characters
+ * @return
*/
public boolean isProtein();
public void setVamsasId(String id);
+ /**
+ * set the array of Database references for the sequence.
+ *
+ * @param dbs
+ * @deprecated - use is discouraged since side-effects may occur if DBRefEntry
+ * set are not normalised.
+ */
+ @Deprecated
public void setDBRefs(DBRefEntry[] dbs);
public DBRefEntry[] getDBRefs();
*/
public PDBEntry getPDBEntry(String pdbId);
-
/**
* Get all primary database/accessions for this sequence's data. These
* DBRefEntry are expected to resolve to a valid record in the associated
* Data model for one entry returned from an EMBL query, as marshalled by a
* Castor binding file
*
- * For example:
- * http://www.ebi.ac.uk/ena/data/view/J03321&display=xml
+ * For example: http://www.ebi.ac.uk/ena/data/view/J03321&display=xml
*
* @see embl_mapping.xml
*/
retrievedref.setMap(new Mapping(null, new int[] { 1, dna.getLength() },
new int[] { 1, dna.getLength() }, 1, 1));
-
/*
* transform EMBL Database refs to canonical form
*/
if (qname.equals("translation"))
{
// remove all spaces (precompiled String.replaceAll(" ", ""))
- translation = SPACE_PATTERN.matcher(q.getValues()[0]).replaceAll("");
+ translation = SPACE_PATTERN.matcher(q.getValues()[0]).replaceAll(
+ "");
}
else if (qname.equals("protein_id"))
{
*/
String source = DBRefUtils.getCanonicalName(ref.getSource());
ref.setSource(source);
- DBRefEntry proteinDbRef = new DBRefEntry(ref.getSource(), ref.getVersion(), ref
- .getAccessionId());
+ DBRefEntry proteinDbRef = new DBRefEntry(ref.getSource(),
+ ref.getVersion(), ref.getAccessionId());
if (source.equals(DBRefSource.UNIPROT))
{
String proteinSeqName = DBRefSource.UNIPROT + "|"
+ ref.getAccessionId();
- if (dnaToProteinMapping != null && dnaToProteinMapping.getTo() != null)
+ if (dnaToProteinMapping != null
+ && dnaToProteinMapping.getTo() != null)
{
if (mappingUsed)
{
*/
static void canonicaliseDbRefs(EmblFile record)
{
+ if (record.getEntries() == null)
+ {
+ return;
+ }
for (EmblEntry entry : record.getEntries())
{
if (entry.getDbRefs() != null)
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.datamodel.SequenceFeature;
*/
private static final Regex ACCESSION_REGEX = new Regex(
"(ENS([A-Z]{3}|)[TG][0-9]{11}$)" + "|" + "(CCDS[0-9.]{3,}$)");
-
+
/*
* fetch exon features on genomic sequence (to identify the cdna regions)
* and cds and variation features (to retain)
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.datamodel.SequenceFeature;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.datamodel.Alignment;
protected URL getUrl(List<String> ids) throws MalformedURLException
{
StringBuffer urlstring = new StringBuffer(128);
- urlstring.append(getDomain()).append("/overlap/id/")
- .append(ids.get(0));
+ urlstring.append(getDomain()).append("/overlap/id/").append(ids.get(0));
// @see https://github.com/Ensembl/ensembl-rest/wiki/Output-formats
urlstring.append("?content-type=text/x-gff3");
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.api.FeatureColourI;
}
}
gene.setSequenceFeatures(filtered
- .toArray(new SequenceFeature[filtered
- .size()]));
+ .toArray(new SequenceFeature[filtered.size()]));
}
}
return new FeatureSettingsAdapter()
{
SequenceOntologyI so = SequenceOntologyFactory.getInstance();
+
@Override
public boolean isFeatureDisplayed(String type)
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.datamodel.SequenceFeature;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
-
/**
* A class to behave much like EnsemblGene but referencing the ensemblgenomes
* domain and data
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
/**
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.datamodel.AlignmentI;
public String getParent(String identifier)
{
List<String> ids = Arrays.asList(new String[] { identifier });
-
+
BufferedReader br = null;
try
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.datamodel.AlignmentI;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.io.FileParse;
* update these constants when Jalview has been checked / updated for
* changes to Ensembl REST API
* @see https://github.com/Ensembl/ensembl-rest/wiki/Change-log
+ * @see http://rest.ensembl.org/info/rest?content-type=application/json
*/
private static final String LATEST_ENSEMBLGENOMES_REST_VERSION = "4.6";
- private static final String LATEST_ENSEMBL_REST_VERSION = "4.6";
+ private static final String LATEST_ENSEMBL_REST_VERSION = "4.7";
private static final String REST_CHANGE_LOG = "https://github.com/Ensembl/ensembl-rest/wiki/Change-log";
private final static long VERSION_RETEST_INTERVAL = 1000L * 3600; // 1 hr
private static final Regex TRANSCRIPT_REGEX = new Regex(
- "(ENS)([A-Z]{3}|)T[0-9]{11}$");
+ "(ENS)([A-Z]{3}|)T[0-9]{11}$");
private static final Regex GENE_REGEX = new Regex(
- "(ENS)([A-Z]{3}|)G[0-9]{11}$");
+ "(ENS)([A-Z]{3}|)G[0-9]{11}$");
static
{
throws IOException
{
URL url = getUrl(ids);
-
+
BufferedReader reader = getHttpResponse(url, ids);
+ if (reader == null)
+ {
+ // request failed
+ return null;
+ }
FileParse fp = new FileParse(reader, url.toString(), "HTTP_POST");
return fp;
}
{
// long now = System.currentTimeMillis();
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-
+
/*
* POST method allows multiple queries in one request; it is supported for
* sequence queries, but not for overlap
{
writePostBody(connection, ids);
}
-
- InputStream response = connection.getInputStream();
+
int responseCode = connection.getResponseCode();
-
+
if (responseCode != 200)
{
/*
* note: a GET request for an invalid id returns an error code e.g. 415
* but POST request returns 200 and an empty Fasta response
*/
- throw new IOException(
- "Response code was not 200. Detected response was "
- + responseCode);
+ System.err.println("Response code " + responseCode + " for " + url);
+ return null;
}
+ // get content
+ InputStream response = connection.getInputStream();
+
// System.out.println(getClass().getName() + " took "
// + (System.currentTimeMillis() - now) + "ms to fetch");
checkRateLimits(connection);
-
+
BufferedReader reader = null;
reader = new BufferedReader(new InputStreamReader(response, "UTF-8"));
return reader;
// remaining, limit, reset));
}
}
-
+
/**
* Rechecks if Ensembl is responding, unless the last check was successful and
* the retest interval has not yet elapsed. Returns true if Ensembl is up,
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.analysis.AlignmentUtils;
import jalview.analysis.Dna;
+import jalview.bin.Cache;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.DBRefSource;
import jalview.datamodel.Mapping;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
+ " chunks. Unexpected problem (" + r.getLocalizedMessage()
+ ")";
System.err.println(msg);
+ r.printStackTrace();
break;
}
}
proteinSeq.createDatasetSequence();
querySeq.createDatasetSequence();
- MapList mapList = AlignmentUtils.mapCdsToProtein(querySeq, proteinSeq);
+ MapList mapList = AlignmentUtils
+ .mapCdsToProtein(querySeq, proteinSeq);
if (mapList != null)
{
// clunky: ensure Uniprot xref if we have one is on mapped sequence
DBRefEntry dbr = new DBRefEntry(getDbSource(),
getEnsemblDataVersion(), proteinSeq.getName(), map);
querySeq.getDatasetSequence().addDBRef(dbr);
-
+ DBRefEntry[] uprots = DBRefUtils.selectRefs(ds.getDBRefs(),
+ new String[] { DBRefSource.UNIPROT });
+ DBRefEntry[] upxrefs = DBRefUtils.selectRefs(querySeq.getDBRefs(),
+ new String[] { DBRefSource.UNIPROT });
+ if (uprots != null)
+ {
+ for (DBRefEntry up : uprots)
+ {
+ // locate local uniprot ref and map
+ List<DBRefEntry> upx = DBRefUtils.searchRefs(upxrefs,
+ up.getAccessionId());
+ DBRefEntry upxref;
+ if (upx.size() != 0)
+ {
+ upxref = upx.get(0);
+
+ if (upx.size() > 1)
+ {
+ Cache.log
+ .warn("Implementation issue - multiple uniprot acc on product sequence.");
+ }
+ }
+ else
+ {
+ upxref = new DBRefEntry(DBRefSource.UNIPROT,
+ getEnsemblDataVersion(), up.getAccessionId());
+ }
+
+ Mapping newMap = new Mapping(ds, mapList);
+ upxref.setVersion(getEnsemblDataVersion());
+ upxref.setMap(newMap);
+ if (upx.size() == 0)
+ {
+ // add the new uniprot ref
+ querySeq.getDatasetSequence().addDBRef(upxref);
+ }
+
+ }
+ }
+
/*
* copy exon features to protein, compute peptide variants from dna
* variants and add as features on the protein sequence ta-da
*/
- AlignmentUtils.computeProteinFeatures(querySeq, proteinSeq, mapList);
+ AlignmentUtils
+ .computeProteinFeatures(querySeq, proteinSeq, mapList);
}
} catch (Exception e)
{
throw new JalviewException("ENSEMBL Rest API not available.");
}
FileParse fp = getSequenceReader(ids);
+ if (fp == null)
+ {
+ return alignment;
+ }
+
FastaFile fr = new FastaFile(fp);
if (fr.hasWarningMessage())
{
if (fr.getSeqs().size() > 0)
{
- AlignmentI seqal = new Alignment(
- fr.getSeqsAsArray());
- for (SequenceI sq:seqal.getSequences())
+ AlignmentI seqal = new Alignment(fr.getSeqsAsArray());
+ for (SequenceI sq : seqal.getSequences())
{
if (sq.getDescription() == null)
{
int mappedLength = 0;
int direction = 1; // forward
boolean directionSet = false;
-
+
for (SequenceFeature sf : sfs)
{
/*
// abort - mix of forward and backward
System.err.println("Error: forward and backward strand for "
+ accId);
- return null;
- }
- direction = strand;
- directionSet = true;
-
- /*
- * add to CDS ranges, semi-sorted forwards/backwards
- */
- if (strand < 0)
- {
- regions.add(0, new int[] { sf.getEnd(), sf.getBegin() });
- }
- else
- {
+ return null;
+ }
+ direction = strand;
+ directionSet = true;
+
+ /*
+ * add to CDS ranges, semi-sorted forwards/backwards
+ */
+ if (strand < 0)
+ {
+ regions.add(0, new int[] { sf.getEnd(), sf.getBegin() });
+ }
+ else
+ {
regions.add(new int[] { sf.getBegin(), sf.getEnd() });
}
mappedLength += Math.abs(sf.getEnd() - sf.getBegin() + 1);
}
}
}
-
+
if (regions.isEmpty())
{
System.out.println("Failed to identify target sequence for " + accId
* (havana / ensembl_havana)
*/
Collections.sort(regions, new RangeSorter(direction == 1));
-
+
List<int[]> to = Arrays.asList(new int[] { start,
start + mappedLength - 1 });
-
+
return new MapList(regions, to, 1, 1);
}
int start = sf.getBegin();
int end = sf.getEnd();
int[] mappedRange = mapping.locateInTo(start, end);
-
+
if (mappedRange != null)
{
SequenceFeature copy = new SequenceFeature(sf);
// long start = System.currentTimeMillis();
SequenceFeature[] sfs = sourceSequence.getSequenceFeatures();
- MapList mapping = getGenomicRangesFromFeatures(sourceSequence, accessionId,
- targetSequence.getStart());
+ MapList mapping = getGenomicRangesFromFeatures(sourceSequence,
+ accessionId, targetSequence.getStart());
if (mapping == null)
{
return false;
String type, String parentId)
{
List<SequenceFeature> result = new ArrayList<SequenceFeature>();
-
+
SequenceFeature[] sfs = sequence.getSequenceFeatures();
- if (sfs != null) {
+ if (sfs != null)
+ {
SequenceOntologyI so = SequenceOntologyFactory.getInstance();
- for (SequenceFeature sf :sfs) {
+ for (SequenceFeature sf : sfs)
+ {
if (so.isA(sf.getType(), type))
{
String parent = (String) sf.getValue(PARENT);
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.datamodel.DBRefSource;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import java.io.BufferedReader;
protected URL getUrl(String id, Species species)
{
String url = getDomain() + "/xrefs/symbol/" + species.toString() + "/"
- + id
- + "?content-type=application/json";
+ + id + "?content-type=application/json";
try
{
return new URL(url);
List<String> result = new ArrayList<String>();
List<String> ids = new ArrayList<String>();
ids.add(identifier);
-
+
String[] queries = identifier.split(getAccessionSeparator());
BufferedReader br = null;
try
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.datamodel.AlignmentI;
super(d);
dbName = dbSource;
xrefVersion = dbSource + ":" + version;
-
+
}
@Override
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
/**
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.htsjdk;
import htsjdk.samtools.SAMSequenceDictionary;
}
-
SAMSequenceDictionary rrefDict = null;
- private ReferenceSequenceFile initSequenceDictionaryFor(File dbLocation2) throws Exception
+
+ private ReferenceSequenceFile initSequenceDictionaryFor(File dbLocation2)
+ throws Exception
{
rrefDict = getDictionary(dbLocation2, true);
if (rrefDict != null)
{
- ReferenceSequenceFile rrefFile = ReferenceSequenceFileFactory.getReferenceSequenceFile(dbLocation2, true);
+ ReferenceSequenceFile rrefFile = ReferenceSequenceFileFactory
+ .getReferenceSequenceFile(dbLocation2, true);
return rrefFile;
}
return null;
}
+
/**
* code below hacked out from picard ----
*
* broadinstitute/picard/commit/270580d3e28123496576f0b91b3433179bb5d876
*/
-
/*
* The MIT License
*
{
// remove listeners for all structures in viewer
getSsm().removeStructureViewerListener(this, this.getPdbFile());
- viewer.dispose();
+ viewer.dispose();
lastCommand = null;
viewer = null;
releaseUIResources();
{
Viewer viewer = null;
- public JmolParser(String inFile, String type)
- throws IOException
+ public JmolParser(String inFile, String type) throws IOException
{
super(inFile, type);
}
{
try
{
- asecstr[p] = new Annotation(String.valueOf(secstr[p]), null,
- secstrcode[p], Float.NaN);
- ssFound = true;
+ asecstr[p] = new Annotation(String.valueOf(secstr[p]), null,
+ secstrcode[p], Float.NaN);
+ ssFound = true;
} catch (Exception e)
{
// e.printStackTrace();
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.so;
import jalview.io.gff.SequenceOntologyI;
*/
protected void loadOntologyZipFile(String ontologyFile)
{
+ long now = System.currentTimeMillis();
ZipInputStream zipStream = null;
try
{
String zipFile = ontologyFile + ".zip";
- System.out.println("Loading Sequence Ontology from " + zipFile);
InputStream inStream = this.getClass().getResourceAsStream(
"/" + zipFile);
zipStream = new ZipInputStream(new BufferedInputStream(inStream));
loadOboFile(zipStream);
}
}
+ long elapsed = System.currentTimeMillis() - now;
+ System.out.println("Loaded Sequence Ontology from " + zipFile + " ("
+ + elapsed + "ms)");
} catch (Exception e)
{
e.printStackTrace();
}
else
{
- System.err.println("Warning: " + term.getName()
- + " has replaced " + replaced.getName()
- + " for lookup of '" + description + "'");
+ System.err.println("Warning: " + term.getName()
+ + " has replaced " + replaced.getName()
+ + " for lookup of '" + description + "'");
}
}
termsByDescription.put(description, term);
{
try
{
- if (Boolean.TRUE.equals(ann.getProperty("is_obsolete")))
- {
+ if (Boolean.TRUE.equals(ann.getProperty("is_obsolete")))
+ {
return true;
}
} catch (NoSuchElementException e)
public FTSDataColumnI getDataColumnByNameOrCode(String nameOrCode)
throws Exception;
-
/**
* Convert collection of FTSDataColumnI objects to a comma delimited string of
* the 'code' values
public String getDataColumnsFieldsAsCommaDelimitedString(
Collection<FTSDataColumnI> wantedFields);
-
/**
* Fetch index of the primary key column for the dynamic table
*
public int getPrimaryKeyColumIndex(
Collection<FTSDataColumnI> wantedFields, boolean hasRefSeq)
throws Exception;
-
+
/**
* Fetch the primary key data column object
*
*/
public int getDefaultResponsePageSize();
}
-
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.fts.core;
import java.awt.Component;
return super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, column);
}
-}
\ No newline at end of file
+}
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
-
@SuppressWarnings("serial")
public class FTSDataColumnPreferences extends JScrollPane
{
if (source.equals(PreferenceSource.STRUCTURE_CHOOSER)
|| source.equals(PreferenceSource.PREFERENCES))
{
- structSummaryColumns = ((PDBFTSRestClient) ftsRestClient)
+ structSummaryColumns = ((PDBFTSRestClient) ftsRestClient)
.getAllDefaultDisplayedStructureDataColumns();
}
allFTSDataColumns.addAll(ftsRestClient.getAllFTSDataColumns());
{
case SEARCH_SUMMARY:
data[x++] = new Object[] {
- ftsRestClient.getAllDefaultDisplayedFTSDataColumns()
- .contains(field),
- field.getName(), field.getGroup() };
+ ftsRestClient.getAllDefaultDisplayedFTSDataColumns().contains(
+ field), field.getName(), field.getGroup() };
break;
case STRUCTURE_CHOOSER:
data[x++] = new Object[] { structSummaryColumns.contains(field),
field.getName(), field.getGroup() };
break;
case PREFERENCES:
- data[x++] = new Object[] { field.getName(),
- ftsRestClient.getAllDefaultDisplayedFTSDataColumns()
- .contains(field),
- structSummaryColumns.contains(field) };
+ data[x++] = new Object[] {
+ field.getName(),
+ ftsRestClient.getAllDefaultDisplayedFTSDataColumns().contains(
+ field), structSummaryColumns.contains(field) };
break;
default:
break;
map.put(field.getName(), field);
}
- FTSDataColumnPrefsTableModel model = new FTSDataColumnPrefsTableModel(columnNames, data);
+ FTSDataColumnPrefsTableModel model = new FTSDataColumnPrefsTableModel(
+ columnNames, data);
tbl_FTSDataColumnPrefs.setModel(model);
switch (source)
tbl_FTSDataColumnPrefs.getColumnModel().getColumn(1).setMinWidth(150);
tbl_FTSDataColumnPrefs.getColumnModel().getColumn(2)
.setPreferredWidth(150);
- tbl_FTSDataColumnPrefs.getColumnModel().getColumn(2)
-.setMinWidth(150);
+ tbl_FTSDataColumnPrefs.getColumnModel().getColumn(2).setMinWidth(150);
TableRowSorter<TableModel> sorter = new TableRowSorter<>(
tbl_FTSDataColumnPrefs.getModel());
sortKeys.add(new RowSorter.SortKey(columnIndexToSort,
SortOrder.ASCENDING));
sorter.setSortKeys(sortKeys);
- sorter.setComparator(
- columnIndexToSort,
+ sorter.setComparator(columnIndexToSort,
new Comparator<FTSDataColumnGroupI>()
{
@Override
class FTSDataColumnPrefsTableModel extends AbstractTableModel
{
- public FTSDataColumnPrefsTableModel(String[] columnNames, Object[][] data)
+ public FTSDataColumnPrefsTableModel(String[] columnNames,
+ Object[][] data)
{
this.data = data;
this.columnNames = columnNames;
if (currentSource == PreferenceSource.SEARCH_SUMMARY)
{
- updatePrefs(ftsRestClient
- .getAllDefaultDisplayedFTSDataColumns(), ftsDataColumn,
- selected);
+ updatePrefs(ftsRestClient.getAllDefaultDisplayedFTSDataColumns(),
+ ftsDataColumn, selected);
}
else if (currentSource == PreferenceSource.STRUCTURE_CHOOSER)
{
{
if (col == 1)
{
- updatePrefs(ftsRestClient
- .getAllDefaultDisplayedFTSDataColumns(), ftsDataColumn,
- selected);
+ updatePrefs(ftsRestClient.getAllDefaultDisplayedFTSDataColumns(),
+ ftsDataColumn, selected);
}
else if (col == 2)
{
}
}
- private void updatePrefs(
- Collection<FTSDataColumnI> prefConfig,
+ private void updatePrefs(Collection<FTSDataColumnI> prefConfig,
FTSDataColumnI dataColumn, boolean selected)
{
if (prefConfig.contains(dataColumn) && !selected)
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.fts.core;
import jalview.fts.api.FTSDataColumnI;
public void parseDataColumnsConfigFile()
{
String fileName = getColumnDataConfigFileName();
-
- InputStream in = getClass().getResourceAsStream(fileName);
-
+
+ InputStream in = getClass().getResourceAsStream(fileName);
+
try (BufferedReader br = new BufferedReader(new InputStreamReader(in)))
{
String line;
this.getGroup());
}
-
@Override
public boolean equals(Object otherObject)
{
&& this.getGroup().equals(that.getGroup());
}
-
};
dataColumns.add(dataCol);
return result;
}
-
@Override
public Collection<FTSDataColumnI> getAllFTSDataColumns()
{
switch (code)
{
case 400:
- message = MessageManager
- .getString("exception.bad_request");
+ message = MessageManager.getString("exception.bad_request");
break;
-
+
case 410:
message = MessageManager.formatMessage(
"exception.fts_rest_service_no_longer_available", service);
case 502:
case 504:
case 505:
- message = MessageManager.getString("exception.fts_server_error");
+ message = MessageManager.formatMessage("exception.fts_server_error",
+ service);
break;
case 503:
message = MessageManager.getString("exception.service_not_available");
return wantedFields;
}
- public void setWantedFields(
- Collection<FTSDataColumnI> wantedFields)
+ public void setWantedFields(Collection<FTSDataColumnI> wantedFields)
{
this.wantedFields = wantedFields;
}
public static DefaultTableModel getTableModel(FTSRestRequest request,
Collection<FTSData> summariesList)
{
- final FTSDataColumnI[] cols = request.getWantedFields()
- .toArray(new FTSDataColumnI[0]);
+ final FTSDataColumnI[] cols = request.getWantedFields().toArray(
+ new FTSDataColumnI[0]);
final int colOffset = request.getAssociatedSequence() == null ? 0 : 1;
DefaultTableModel tableModel = new DefaultTableModel()
{
tableModel.addColumn("Ref Sequence"); // Create sequence column header if
// exists in the request
}
- for (FTSDataColumnI field : request
- .getWantedFields())
+ for (FTSDataColumnI field : request.getWantedFields())
{
tableModel.addColumn(field.getName()); // Create sequence column header if
// exists in the request
}
}
-
}
protected static final DecimalFormat totalNumberformatter = new DecimalFormat(
"###,###");
+
private JTable tbl_summary = new JTable()
{
private boolean inLayout;
return toolTipText;
}
};
+
protected JScrollPane scrl_searchResult = new JScrollPane(tbl_summary);
public GFTSPanel()
});
final DeferredTextInputListener listener = new DeferredTextInputListener(
- 1500,
- new ActionListener()
+ 1500, new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
@Override
public void focusLost(FocusEvent e)
{
-// listener.stop();
+ // listener.stop();
}
});
txt_search.setEnabled(false);
cmb_searchTarget.setEnabled(false);
previousWantedFields = getFTSRestClient()
- .getAllDefaultDisplayedFTSDataColumns()
- .toArray(new Object[0]);
+ .getAllDefaultDisplayedFTSDataColumns().toArray(
+ new Object[0]);
}
if (sourceTabbedPane.getTitleAt(index).equals(searchTabTitle))
{
getTempUserPrefs().put("FTSPanel.y", mainFrame.getY());
mainFrame.dispose();
}
+
public class DeferredTextInputListener implements DocumentListener
{
private final Timer swingTimer;
}
return Arrays.equals(getFTSRestClient()
- .getAllDefaultDisplayedFTSDataColumns()
- .toArray(new Object[0]), previousWantedFields) ? false
- : true;
+ .getAllDefaultDisplayedFTSDataColumns().toArray(new Object[0]),
+ previousWantedFields) ? false : true;
}
}
}
-
public void transferToSequenceFetcher(String ids)
{
// mainFrame.dispose();
int[] selectedRows = resultTable.getSelectedRows();
for (int summaryRow : selectedRows)
{
- String idStr = resultTable.getValueAt(summaryRow,
- primaryKeyColIndex).toString();
+ String idStr = resultTable.getValueAt(summaryRow, primaryKeyColIndex)
+ .toString();
paginatorCart.add(idStr);
}
// System.out.println("Paginator shopping cart size : "
}
validateSelection();
}
+
public void refreshPaginatorState()
{
// System.out.println("resultSet count : " + resultSetCount);
setPrevPageButtonEnabled(true);
}
}
+
public void referesh()
{
mainFrame.setTitle(getFTSFrameTitle());
.getProgressIndicator();
}
-
@Override
public void searchAction(boolean isFreshSearch)
{
{
getResultTable().setModel(
FTSRestResponse.getTableModel(request,
- resultList.getSearchSummary()));
+ resultList.getSearchSummary()));
FTSRestResponse.configureTableColumn(getResultTable(),
wantedFields, tempUserPrefs);
getResultTable().setVisible(true);
String result = (resultSetCount > 0) ? MessageManager
.getString("label.results") : MessageManager
.getString("label.result");
-
+
if (isPaginationEnabled() && resultSetCount > 0)
{
- updateSearchFrameTitle(defaultFTSFrameTitle + " - " + result
+ updateSearchFrameTitle(defaultFTSFrameTitle
+ + " - "
+ + result
+ " "
+ totalNumberformatter.format((Number) (offSet + 1))
+ " to "
.format((Number) (offSet + resultSetCount))
+ " of "
+ totalNumberformatter
- .format((Number) totalResultSetCount)
- + " " + " (" + (endTime - startTime) + " milli secs)");
+ .format((Number) totalResultSetCount) + " "
+ + " (" + (endTime - startTime) + " milli secs)");
}
else
{
+ resultSetCount + " " + result + " ("
+ (endTime - startTime) + " milli secs)");
}
-
+
setSearchInProgress(false);
refreshPaginatorState();
updateSummaryTableSelections();
try
{
primaryKeyColIndex = getFTSRestClient().getPrimaryKeyColumIndex(
- wantedFields,
- false);
+ wantedFields, false);
} catch (Exception e)
{
e.printStackTrace();
for (int summaryRow : selectedRows)
{
String idStr = getResultTable().getValueAt(summaryRow,
- primaryKeyColIndex)
- .toString();
+ primaryKeyColIndex).toString();
selectedIdsSet.add(getPDBIdwithSpecifiedChain(idStr, searchTerm));
}
delayAndEnableActionButtons();
}
-
public static String getPDBIdwithSpecifiedChain(String pdbId,
String searchTerm)
{
.queryParam("wt", "json").queryParam("fl", wantedFields)
.queryParam("rows", String.valueOf(responseSize))
.queryParam("start", String.valueOf(offSet))
- .queryParam("q", query)
- .queryParam("sort", sortParam);
+ .queryParam("q", query).queryParam("sort", sortParam);
}
// Execute the REST request
ClientResponse clientResponse = webResource.accept(
}
else
{
- errorMessage = getMessageByHTTPStatusCode(clientResponse
-.getStatus(), "PDB");
+ errorMessage = getMessageByHTTPStatusCode(
+ clientResponse.getStatus(), "PDB");
throw new Exception(errorMessage);
}
}
}
}
-
/**
* Process error response from PDB server if/when one occurs.
*
{
summaryRowData[colCounter++] = (field.getDataType()
.getDataTypeClass() == Integer.class) ? Integer
- .valueOf(fieldData)
- : (field.getDataType()
+ .valueOf(fieldData) : (field.getDataType()
.getDataTypeClass() == Double.class) ? Double
- .valueOf(fieldData)
- : sanitiseData(fieldData);
+ .valueOf(fieldData) : sanitiseData(fieldData);
} catch (Exception e)
{
e.printStackTrace();
- System.out.println("offending value:" + fieldData);
+ System.out.println("offending value:" + fieldData);
}
}
}
return "/fts/pdb_data_columns.txt";
}
-
public static FTSRestClientI getInstance()
{
if (instance == null)
summaryRowData[colCounter++] = (field.getDataType()
.getDataTypeClass() == Integer.class) ? Integer
.valueOf(fieldData.replace(",", ""))
- : (field.getDataType()
- .getDataTypeClass() == Double.class) ? Double
+ : (field.getDataType().getDataTypeClass() == Double.class) ? Double
.valueOf(fieldData) : fieldData;
} catch (Exception e)
{
e.printStackTrace();
- System.out.println("offending value:" + fieldData);
+ System.out.println("offending value:" + fieldData);
}
}
} catch (Exception e)
};
}
-
public static FTSRestClientI getInstance()
{
if (instance == null)
offSet = 0;
}
new Thread()
- {
+ {
@Override
public void run()
{
.getString("label.result");
if (isPaginationEnabled() && resultSetCount > 0)
{
- updateSearchFrameTitle(defaultFTSFrameTitle + " - " + result
+ updateSearchFrameTitle(defaultFTSFrameTitle
+ + " - "
+ + result
+ " "
+ totalNumberformatter.format((Number) (offSet + 1))
+ " to "
.format((Number) (offSet + resultSetCount))
+ " of "
+ totalNumberformatter
- .format((Number) totalResultSetCount)
- + " " + " (" + (endTime - startTime) + " milli secs)");
+ .format((Number) totalResultSetCount) + " "
+ + " (" + (endTime - startTime) + " milli secs)");
}
else
{
return foundSearchTerms;
}
-
@Override
public boolean isPaginationEnabled()
{
radioItem.removeActionListener(radioItem.getActionListeners()[0]);
int option = JOptionPane.showInternalConfirmDialog(
- jalview.gui.Desktop.desktop,
- MessageManager
+ jalview.gui.Desktop.desktop, MessageManager
.getString("label.remove_from_default_list"),
MessageManager
.getString("label.remove_user_defined_colour"),
* along with Jalview. If not, see <http://www.gnu.org/licenses/>.
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
-/*
- * Jalview - A Sequence Alignment Editor and Viewer
- * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
- */
package jalview.gui;
import jalview.analysis.AlignmentUtils;
List<SequenceI> choosenSeqs = new ArrayList<SequenceI>();
for (SequenceI sq : alignment.getSequences())
{
- Vector<PDBEntry> pdbRefEntries = sq.getDatasetSequence().getAllPDBEntries();
+ Vector<PDBEntry> pdbRefEntries = sq.getDatasetSequence()
+ .getAllPDBEntries();
if (pdbRefEntries == null)
{
continue;
}
}
}
- seqvectors.add(choosenSeqs.toArray(new SequenceI[choosenSeqs.size()]));
+ seqvectors
+ .add(choosenSeqs.toArray(new SequenceI[choosenSeqs.size()]));
}
return seqvectors.toArray(new SequenceI[seqvectors.size()][]);
}
if (file != null)
{
alignFrame.setProgressBar(MessageManager.formatMessage(
- "status.saving_file", new Object[] { type.getLabel() }),
+ "status.saving_file", new Object[] { type.getLabel() }),
pSessionId);
}
}
im = new jalview.util.ImageMaker(this, type, imageAction,
aDimension.getWidth(), aDimension.getHeight()
- + boarderBottomOffset, file,
- imageTitle, alignFrame, pSessionId, headless);
+ + boarderBottomOffset, file, imageTitle,
+ alignFrame, pSessionId, headless);
if (av.getWrapAlignment())
{
if (im.getGraphics() != null)
else
{
text = new FeaturesFile().printJalviewFormat(ap.av.getAlignment()
- .getDataset().getSequencesArray(), displayedFeatureColours, true, ap.av.isShowNPFeats()); // ap.av.featuresDisplayed);
+ .getDataset().getSequencesArray(), displayedFeatureColours,
+ true, ap.av.isShowNPFeats()); // ap.av.featuresDisplayed);
text = formatter.printJalviewFormat(sequences, featureColours,
true, includeNonPositional);
}
String tlabel = null;
if (anots[index] != null)
{ // LML added stem code
- if (type.equals(HELIX) || type.equals(SHEET)
- || type.equals(STEM) || type.equals(LABEL))
+ if (type.equals(HELIX) || type.equals(SHEET) || type.equals(STEM)
+ || type.equals(LABEL))
{
tlabel = anots[index].description;
if (tlabel == null || tlabel.length() < 1)
{
text.append(", ")
.append(MessageManager.getString("label.sequence"))
- .append(" ")
- .append(seqIndex + 1);
+ .append(" ").append(seqIndex + 1);
char residue = seqref.getCharAt(column);
if (!Comparison.isGap(residue))
{
}
}
- protected boolean colorAlignmContaining(
- AlignmentAnnotation currentAnn, int selectedThresholdOption)
+ protected boolean colorAlignmContaining(AlignmentAnnotation currentAnn,
+ int selectedThresholdOption)
{
AnnotationColourGradient acg = null;
}
acg.setSeqAssociated(seqAssociated.isSelected());
- if (currentAnn.graphMin == 0f
- && currentAnn.graphMax == 0f)
+ if (currentAnn.graphMin == 0f && currentAnn.graphMax == 0f)
{
acg.setPredefinedColours(true);
}
StringBuilder fileList = new StringBuilder();
for (String s : files)
{
- fileList.append(SPACE).append(BACKSLASH).append(Platform.escapeString(s))
- .append(BACKSLASH);
+ fileList.append(SPACE).append(BACKSLASH)
+ .append(Platform.escapeString(s)).append(BACKSLASH);
}
String filesString = fileList.toString();
jmb.evalStateCommand(command);
} catch (OutOfMemoryError oomerror)
{
- new OOMWarning(
- "When trying to add structures to the Jmol viewer!",
+ new OOMWarning("When trying to add structures to the Jmol viewer!",
oomerror);
Cache.log.debug("File locations are " + filesString);
} catch (Exception ex)
{
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke(KeyEvent.VK_Q, Toolkit
- .getDefaultToolkit().getMenuShortcutKeyMask()),
- "Quit");
+ .getDefaultToolkit().getMenuShortcutKeyMask()), "Quit");
getRootPane().getActionMap().put("Quit", new AbstractAction()
{
@Override
for (Object file : (List) t
.getTransferData(DataFlavor.javaFileListFlavor))
{
- files.add(((File)file).toString());
+ files.add(((File) file).toString());
protocols.add(FormatAdapter.FILE);
}
}
}
else
{
- Color color = new Color(
- Integer.parseInt(jucs.getColour(i).getRGB(), 16));
+ Color color = new Color(Integer.parseInt(jucs.getColour(i)
+ .getRGB(), 16));
fr.setColour(name = jucs.getColour(i).getName(),
new FeatureColour(color));
}
void save()
{
JalviewFileChooser chooser = new JalviewFileChooser(
- Cache.getProperty("LAST_DIRECTORY"),
- new String[] { "fc" },
+ Cache.getProperty("LAST_DIRECTORY"), new String[] { "fc" },
new String[] { "Sequence Feature Colours" },
"Sequence Feature Colours");
chooser.setFileView(new jalview.io.JalviewFileView());
{
public enum HelpId
{
- Home("home"), SequenceFeatureSettings("seqfeatures.settings"), StructureViewer(
- "viewingpdbs");
+ Home("home"), SequenceFeatureSettings("seqfeatures.settings"),
+ StructureViewer("viewingpdbs");
private String id;
}
if ((av.getSelectionGroup() == null)
- || (!jalview.util.Platform.isControlDown(e)
- && !e.isShiftDown() && av.getSelectionGroup() != null))
+ || (!jalview.util.Platform.isControlDown(e) && !e.isShiftDown() && av
+ .getSelectionGroup() != null))
{
av.setSelectionGroup(new SequenceGroup());
av.getSelectionGroup().setStartRes(0);
Sequence sq = (Sequence) av.getAlignment().getSequenceAt(seq2);
// build a new links menu based on the current links + any non-positional
// features
- Vector<String> nlinks = new Vector<String>(
- Preferences.sequenceURLLinks);
+ Vector<String> nlinks = new Vector<String>(Preferences.sequenceURLLinks);
SequenceFeature sfs[] = sq == null ? null : sq.getSequenceFeatures();
if (sfs != null)
{
}
return sq;
}
+
/**
* @return true if the forward reference was fully resolved
*/
public void resolveFrefedSequences()
{
- Iterator<SeqFref> nextFref=frefedSequence.iterator();
- int toresolve=frefedSequence.size();
- int unresolved=0,failedtoresolve=0;
- while (nextFref.hasNext()) {
+ Iterator<SeqFref> nextFref = frefedSequence.iterator();
+ int toresolve = frefedSequence.size();
+ int unresolved = 0, failedtoresolve = 0;
+ while (nextFref.hasNext())
+ {
SeqFref ref = nextFref.next();
if (ref.isResolvable())
{
- try {
+ try
+ {
if (ref.resolve())
{
nextFref.remove();
- } else {
+ }
+ else
+ {
failedtoresolve++;
}
- } catch (Exception x) {
- System.err.println("IMPLEMENTATION ERROR: Failed to resolve forward reference for sequence "+ref.getSref());
+ } catch (Exception x)
+ {
+ System.err
+ .println("IMPLEMENTATION ERROR: Failed to resolve forward reference for sequence "
+ + ref.getSref());
x.printStackTrace();
failedtoresolve++;
- }
- } else {
+ }
+ }
+ else
+ {
unresolved++;
}
}
- if (unresolved>0)
+ if (unresolved > 0)
{
System.err.println("Jalview Project Import: There were " + unresolved
+ " forward references left unresolved on the stack.");
}
- if (failedtoresolve>0)
+ if (failedtoresolve > 0)
{
System.err.println("SERIOUS! " + failedtoresolve
+ " resolvable forward references failed to resolve.");
JSeq jseq;
Set<String> calcIdSet = new HashSet<String>();
// record the set of vamsas sequence XML POJO we create.
- HashMap<String,Sequence> vamsasSetIds = new HashMap<String,Sequence>();
+ HashMap<String, Sequence> vamsasSetIds = new HashMap<String, Sequence>();
// SAVE SEQUENCES
for (final SequenceI jds : rjal.getSequences())
{
if (av.isHiddenRepSequence(jds))
{
jalview.datamodel.SequenceI[] reps = av
- .getRepresentedSequences(jds)
- .getSequencesInOrder(rjal);
+ .getRepresentedSequences(jds).getSequencesInOrder(rjal);
for (int h = 0; h < reps.length; h++)
{
for (String featureType : renderOrder)
{
FeatureColourI fcol = ap.getSeqPanel().seqCanvas
- .getFeatureRenderer()
- .getFeatureStyle(featureType);
+ .getFeatureRenderer().getFeatureStyle(featureType);
Setting setting = new Setting();
setting.setType(featureType);
if (!fcol.isSimpleColour())
setting.setAutoScale(fcol.isAutoScaled());
setting.setThreshold(fcol.getThreshold());
// -1 = No threshold, 0 = Below, 1 = Above
- setting.setThreshstate(fcol.isAboveThreshold() ? 1
- : (fcol.isBelowThreshold() ? 0 : -1));
+ setting.setThreshstate(fcol.isAboveThreshold() ? 1 : (fcol
+ .isBelowThreshold() ? 0 : -1));
}
else
{
// is groups actually supposed to be a map here ?
Iterator<String> en = ap.getSeqPanel().seqCanvas
- .getFeatureRenderer()
- .getFeatureGroups().iterator();
+ .getFeatureRenderer().getFeatureGroups().iterator();
Vector<String> groupsAdded = new Vector<String>();
while (en.hasNext())
{
SplitFrame sf = createSplitFrame(dnaFrame, af);
addedToSplitFrames.add(dnaFrame);
addedToSplitFrames.add(af);
+ dnaFrame.setMenusForViewport();
+ af.setMenusForViewport();
if (af.viewport.isGatherViewsHere())
{
gatherTo.add(sf);
Viewport view = candidate.getKey();
Desktop.addInternalFrame(af, view.getTitle(), view.getWidth(),
view.getHeight());
+ af.setMenusForViewport();
System.err.println("Failed to restore view " + view.getTitle()
+ " to split frame");
}
List<SequenceI> hiddenSeqs = null;
-
List<SequenceI> tmpseqs = new ArrayList<SequenceI>();
boolean multipleView = false;
if (!incompleteSeqs.containsKey(seqId))
{
// may not need this check, but keep it for at least 2.9,1 release
- if (tmpSeq.getStart()!=jseqs[i].getStart() || tmpSeq.getEnd()!=jseqs[i].getEnd())
- {
+ if (tmpSeq.getStart() != jseqs[i].getStart()
+ || tmpSeq.getEnd() != jseqs[i].getEnd())
+ {
System.err
.println("Warning JAL-2154 regression: updating start/end for sequence "
+ tmpSeq.toString() + " to " + jseqs[i]);
}
- } else {
+ }
+ else
+ {
incompleteSeqs.remove(seqId);
}
if (vamsasSeq.length > vi && vamsasSeq[vi].getId().equals(seqId))
// filename
// translation differently.
StructureData filedat = oldFiles.get(new File(oldfilenam));
- if (filedat == null)
- {
- String reformatedOldFilename = oldfilenam.replaceAll("/",
- "\\\\");
- filedat = oldFiles.get(new File(reformatedOldFilename));
+ if (filedat == null)
+ {
+ String reformatedOldFilename = oldfilenam.replaceAll("/", "\\\\");
+ filedat = oldFiles.get(new File(reformatedOldFilename));
}
newFileLoc.append(Platform.escapeString(filedat.getFilePath()));
pdbfilenames.add(filedat.getFilePath());
if (!adjusting)
{
valueField.setText(""
- + ((integ) ? ("" + slider.getValue())
- : ("" + slider.getValue() / 1000f)));
+ + ((integ) ? ("" + slider.getValue()) : ("" + slider
+ .getValue() / 1000f)));
checkIfModified();
}
}
private BufferedImage lastMiniMe = null;
+
/**
* DOCUMENT ME!
*
urlLink = new GroupUrlLink(link);
} catch (Exception foo)
{
- Cache.log.error("Exception for GroupURLLink '" + link
- + "'", foo);
+ Cache.log.error("Exception for GroupURLLink '" + link + "'", foo);
continue;
}
;
/*
* Save Output settings
*/
- Cache.applicationProperties.setProperty("EPS_RENDERING",
- ((OptionsParam) epsRendering.getSelectedItem()).getCode());
+ Cache.applicationProperties.setProperty("EPS_RENDERING",
+ ((OptionsParam) epsRendering.getSelectedItem()).getCode());
/*
* Save Connections settings
}
@Override
- public int hashCode(){
+ public int hashCode()
+ {
return name.hashCode() + code.hashCode();
}
}
}
PaintRefresher.Refresh(this, av.getSequenceSetId());
ap.paintAlignment(needOverviewUpdate);
- needOverviewUpdate =false;
+ needOverviewUpdate = false;
changeEndRes = false;
changeStartRes = false;
stretchGroup = null;
{
if (av.getAlignment() == null)
{
- Cache.log.warn("alignviewport av SeqSetId="
- + av.getSequenceSetId() + " ViewId=" + av.getViewId()
+ Cache.log.warn("alignviewport av SeqSetId=" + av.getSequenceSetId()
+ + " ViewId=" + av.getViewId()
+ " 's alignment is NULL! returning immediately.");
return;
}
if (sfetch == null
|| dasRegistry != Cache.getDasSourceRegistry()
|| lastDasSourceRegistry != (Cache.getDasSourceRegistry()
- .getDasRegistryURL() + Cache
- .getDasSourceRegistry().getLocalSourceString())
- .hashCode())
+ .getDasRegistryURL() + Cache.getDasSourceRegistry()
+ .getLocalSourceString()).hashCode())
{
_initingFetcher = true;
initingThread = Thread.currentThread();
public SequenceFetcher(IProgressIndicator guiIndic,
final String selectedDb, final String queryString)
{
- this._isConstructing=true;
+ this._isConstructing = true;
this.progressIndicator = guiIndic;
final SequenceFetcher us = this;
// launch initialiser thread
if (getSequenceFetcherSingleton(progressIndicator) != null)
{
us.initGui(progressIndicator, selectedDb, queryString);
- us._isConstructing=false;
+ us._isConstructing = false;
}
else
{
});
sf.start();
}
+
/**
- * blocking call which creates a new sequence fetcher panel, configures it and presses the OK button with the given database and query.
+ * blocking call which creates a new sequence fetcher panel, configures it and
+ * presses the OK button with the given database and query.
+ *
* @param database
* @param query
*/
public static List<AlignFrame> fetchAndShow(String database, String query)
{
- final SequenceFetcher sf = new SequenceFetcher(Desktop.instance, database, query);
+ final SequenceFetcher sf = new SequenceFetcher(Desktop.instance,
+ database, query);
while (sf._isConstructing)
{
- try { Thread.sleep(50);
+ try
+ {
+ Thread.sleep(50);
} catch (Exception q)
{
return Collections.emptyList();
{
};
-
+
/**
* initialise the database and query for this fetcher panel
*
new UniprotFTSPanel(this);
frame.dispose();
}
+
private void otherSourceAction()
{
try
} catch (Exception e)
{
Cache.log.info(
- "Error retrieving " + accession
- + " from " + proxy.getDbName(), e);
+ "Error retrieving " + accession + " from "
+ + proxy.getDbName(), e);
}
return success;
}
try
{
- af.setMaximum(Cache.getDefault("SHOW_FULLSCREEN",
- false));
+ af.setMaximum(Cache.getDefault("SHOW_FULLSCREEN", false));
} catch (Exception ex)
{
}
pid.cs = cs;
}
- PIDSlider.setTitle(MessageManager
- .formatMessage("label.percentage_identity_threshold",
+ PIDSlider
+ .setTitle(MessageManager.formatMessage(
+ "label.percentage_identity_threshold",
new String[] { source }));
if (ap.av.getAlignment().getGroups() != null)
private static final int WINDOWS_INSETS_HEIGHT = 50; // tbc
private static final int MAC_INSETS_HEIGHT = 50;
+
private static final int DESKTOP_DECORATORS_HEIGHT = 65;
+
private static final long serialVersionUID = 1L;
public SplitFrame(GAlignFrame top, GAlignFrame bottom)
return Arrays.asList(new AlignFrame[] { (AlignFrame) getTopFrame(),
(AlignFrame) getBottomFrame() });
}
+
/**
* Replace Cmd-F Find action with our version. This is necessary because the
* 'default' Finder searches in the first AlignFrame it finds. We need it to
{
getResultTable().setModel(
FTSRestResponse.getTableModel(lastPdbRequest,
- discoveredStructuresSet));
+ discoveredStructuresSet));
noOfStructuresFound = discoveredStructuresSet.size();
mainFrame.setTitle(MessageManager.formatMessage(
"label.structure_chooser_no_of_structures",
if (isValidSeqName(entry.getId()))
{
queryBuilder.append("pdb_id:")
- .append(entry.getId().toLowerCase())
- .append(" OR ");
+ .append(entry.getId().toLowerCase()).append(" OR ");
isPDBRefsFound = true;
// seqRefs.add(entry.getId());
}
if (dbRef.getSource().equalsIgnoreCase(DBRefSource.UNIPROT))
{
queryBuilder.append("uniprot_accession:")
- .append(getDBRefId(dbRef))
- .append(" OR ");
+ .append(getDBRefId(dbRef)).append(" OR ");
queryBuilder.append("uniprot_id:").append(getDBRefId(dbRef))
.append(" OR ");
isUniProtRefsFound = true;
{
queryBuilder.append("pdb_id:")
- .append(getDBRefId(dbRef).toLowerCase())
- .append(" OR ");
+ .append(getDBRefId(dbRef).toLowerCase()).append(" OR ");
isPDBRefsFound = true;
}
else
.replaceAll("[^\\dA-Za-z|_]", "").replaceAll("\\s+", "+");
}
-
/**
* Ensures sequence ref names are not less than 3 characters and does not
* contain a database name
reorderedStructuresSet.addAll(filteredResponse);
reorderedStructuresSet.addAll(discoveredStructuresSet);
getResultTable().setModel(
- FTSRestResponse.getTableModel(
- lastPdbRequest, reorderedStructuresSet));
+ FTSRestResponse.getTableModel(lastPdbRequest,
+ reorderedStructuresSet));
FTSRestResponse.configureTableColumn(getResultTable(),
wantedFields, tempUserPrefs);
}
if (seq.getPrimaryDBRefs().size() == 0)
{
- seqsWithoutSourceDBRef.add(seq);
- continue;
- }
+ seqsWithoutSourceDBRef.add(seq);
+ continue;
+ }
}
if (!seqsWithoutSourceDBRef.isEmpty())
{
pdbRequest.setResponseSize(1);
pdbRequest.setFieldToSearchBy("(pdb_id:");
pdbRequest.setWantedFields(wantedFields);
- pdbRequest
-.setSearchTerm(searchTerm + ")");
+ pdbRequest.setSearchTerm(searchTerm + ")");
pdbRequest.setAssociatedSequence(selectedSequence);
pdbRestCleint = PDBFTSRestClient.getInstance();
wantedFields.add(pdbRestCleint.getPrimaryKeyColumn());
for (int i = 0; i < leaves.size(); i++)
{
- SequenceI seq = (SequenceI) leaves.elementAt(i)
- .element();
+ SequenceI seq = (SequenceI) leaves.elementAt(i).element();
treeSelectionChanged(seq);
}
av.sendSelection();
(int) (Math.random() * 255), (int) (Math.random() * 255));
setColor(tree.getGroups().elementAt(i), col.brighter());
- Vector<SequenceNode> l = tree.findLeaves(tree
- .getGroups().elementAt(i));
+ Vector<SequenceNode> l = tree.findLeaves(tree.getGroups()
+ .elementAt(i));
Vector<SequenceI> sequences = new Vector<SequenceI>();
for (int j = 0; j < l.size(); j++)
{
- SequenceI s1 = (SequenceI) l.elementAt(j)
- .element();
+ SequenceI s1 = (SequenceI) l.elementAt(j).element();
if (!sequences.contains(s1))
{
addProperties(al);
for (int i = 0; i < annotations.size(); i++)
{
- AlignmentAnnotation aa = annotations
- .elementAt(i);
+ AlignmentAnnotation aa = annotations.elementAt(i);
aa.setPadGaps(true, al.getGapCharacter());
al.addAnnotation(aa);
}
* @return true if features were added
*/
public boolean parse(AlignmentI align,
- Map<String, FeatureColourI> colours,
- boolean removeHTML)
+ Map<String, FeatureColourI> colours, boolean removeHTML)
{
return parse(align, colours, removeHTML, false);
}
* @return true if features were added
*/
public boolean parse(AlignmentI align,
- Map<String, FeatureColourI> colours,
- boolean removeHTML, boolean relaxedIdmatching)
+ Map<String, FeatureColourI> colours, boolean removeHTML,
+ boolean relaxedIdmatching)
{
Map<String, String> gffProps = new HashMap<String, String>();
/*
{
for (SequenceFeature sequenceFeature : features)
{
- isnonpos = sequenceFeature.begin == 0 && sequenceFeature.end == 0;
+ isnonpos = sequenceFeature.begin == 0
+ && sequenceFeature.end == 0;
if ((!nonpos && isnonpos)
|| (!isnonpos && visOnly && !visible
.containsKey(sequenceFeature.type)))
private boolean headless;
-
public HtmlSvgOutput(File file, AlignmentPanel ap)
{
this.av = ap.av;
try
{
setProgressMessage(null);
- setProgressMessage(MessageManager
-.formatMessage(
+ setProgressMessage(MessageManager.formatMessage(
"status.exporting_alignment_as_x_file", "HTML"));
AlignmentDimension aDimension = ap.getAlignmentDimension();
SVGGraphics2D g1 = new SVGGraphics2D(aDimension.getWidth(),
}
int lessThan = data.indexOf("<");
if ((lessThan > -1)) // possible Markup Language data i.e HTML,
- // RNAML, XML
+ // RNAML, XML
{
String upper = data.toUpperCase();
if (upper.substring(lessThan).startsWith("<HTML"))
}
/**
- * Returns true if the data has at least 6 tab-delimited fields _and_
- * fields 4 and 5 are integer (start/end)
+ * Returns true if the data has at least 6 tab-delimited fields _and_ fields 4
+ * and 5 are integer (start/end)
+ *
* @param data
* @return
*/
return false;
}
String[] columns = data.split("\t");
- if (columns.length < 6) {
+ if (columns.length < 6)
+ {
return false;
}
for (int col = 3; col < 5; col++)
{
- try {
+ try
+ {
Integer.parseInt(columns[col]);
- } catch (NumberFormatException e) {
+ } catch (NumberFormatException e)
+ {
return false;
}
}
* modify to MSF format: uses '.' for internal gaps,
* and '~' for leading or trailing gaps
*/
- String seqString = sqs[i].getSequenceAsString()
- .replace('-', '.');
+ String seqString = sqs[i].getSequenceAsString().replace('-', '.');
StringBuilder sb = new StringBuilder(seqString);
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io;
import jalview.api.FeatureColourI;
return 0;
}
}
-
{
if (seqhash.get(headers.get(i)) != null)
{
- if (maxLength < seqhash.get(headers.get(i)).toString()
- .length())
+ if (maxLength < seqhash.get(headers.get(i)).toString().length())
{
maxLength = seqhash.get(headers.get(i)).toString().length();
}
}
else
{
- if (tmpString.indexOf("<") > -1
- || tmpString.indexOf(">") > -1)
+ if (tmpString.indexOf("<") > -1 || tmpString.indexOf(">") > -1)
{
// The description does not specify html is to
// be used, so we must remove < > symbols
.getType());
if (rng != null && rng[0] != null && rng[0][0] != rng[0][1])
{
- sb.append(" Score=").append(
- String.valueOf(feature.getScore()));
+ sb.append(" Score=").append(String.valueOf(feature.getScore()));
}
}
String status = (String) feature.getValue("status");
String unq = urls[u] + "|" + urls[u + 1];
if (!uniques.contains(unq))
{
- result.add(new String[] { target, label, urls[u],
- urls[u + 1] });
+ result.add(new String[] { target, label, urls[u], urls[u + 1] });
uniques.add(unq);
}
}
String unq = urls[u] + "|" + urls[u + 1];
if (!uniques.contains(unq))
{
- result.add(new String[] { target, label, urls[u],
- urls[u + 1] });
+ result.add(new String[] { target, label, urls[u], urls[u + 1] });
uniques.add(unq);
}
}
String unq = urls[u] + "|" + urls[u + 1];
if (!uniques.contains(unq))
{
- result.add(new String[] { target, label, urls[u],
- urls[u + 1] });
+ result.add(new String[] { target, label, urls[u], urls[u + 1] });
uniques.add(unq);
}
}
{
if (DETECT_BRACKETS.search(pos))
{
- ann.secondaryStructure = Rna.getRNASecStrucState(
- pos).charAt(0);
+ ann.secondaryStructure = Rna.getRNASecStrucState(pos).charAt(0);
}
else
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io;
import jalview.analysis.AlignSeq;
}
- public StructureFile(boolean parseImmediately, String dataObject, String type)
- throws IOException
+ public StructureFile(boolean parseImmediately, String dataObject,
+ String type) throws IOException
{
super(parseImmediately, dataObject, type);
}
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import jalview.datamodel.AlignedCodonFrame;
try
{
- processGffSimilarity(set, seq, gffColumns,
- align, newseqs, relaxedIdMatching);
+ processGffSimilarity(set, seq, gffColumns, align, newseqs,
+ relaxedIdMatching);
} catch (IOException ivfe)
{
System.err.println(ivfe);
* if true allow fuzzy search for a matching target sequence
* @throws IOException
*/
- protected void processGffSimilarity(
- Map<String, List<String>> set,
+ protected void processGffSimilarity(Map<String, List<String>> set,
SequenceI seq, String[] gff, AlignmentI align,
List<SequenceI> newseqs, boolean relaxedIdMatching)
throws IOException
int alignFromStart;
int alignToStart;
int alignCount;
- try {
+ try
+ {
alignFromStart = Integer.parseInt(tokens[0]);
alignToStart = Integer.parseInt(tokens[1]);
alignCount = Integer.parseInt(tokens[2]);
- } catch (NumberFormatException nfe) {
+ } catch (NumberFormatException nfe)
+ {
System.err.println(nfe.toString());
return null;
}
-
+
int fromStart;
int fromEnd;
int toStart;
{
result = MappingType.PeptideToNucleotide;
}
- else if (model.contains(CODING2CODING)
- || model.contains(CODING2GENOME)
- || model.contains(CDNA2GENOME)
- || model.contains(GENOME2GENOME))
+ else if (model.contains(CODING2CODING) || model.contains(CODING2GENOME)
+ || model.contains(CDNA2GENOME) || model.contains(GENOME2GENOME))
{
result = MappingType.NucleotideToNucleotide;
}
{
String mdl = model.toLowerCase();
if (mdl.contains(PROTEIN2DNA) || mdl.contains(PROTEIN2GENOME)
- || mdl.contains(CODING2CODING)
- || mdl.contains(CODING2GENOME)
- || mdl.contains(CDNA2GENOME)
- || mdl.contains(GENOME2GENOME))
+ || mdl.contains(CODING2CODING) || mdl.contains(CODING2GENOME)
+ || mdl.contains(CDNA2GENOME) || mdl.contains(GENOME2GENOME))
{
return true;
}
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import jalview.datamodel.AlignmentI;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import jalview.datamodel.AlignedCodonFrame;
}
else if (so.isA(soTerm, SequenceOntologyI.NUCLEOTIDE_MATCH))
{
- sf = processNucleotideMatch(attributes, seq, gff, align,
- newseqs, relaxedIdMatching);
+ sf = processNucleotideMatch(attributes, seq, gff, align, newseqs,
+ relaxedIdMatching);
}
else
{
*/
sf = buildSequenceFeature(gff, null);
}
-
+
return sf;
}
protected SequenceFeature processNucleotideMatch(
Map<String, List<String>> attributes, SequenceI seq,
String[] gffColumns, AlignmentI align, List<SequenceI> newseqs,
- boolean relaxedIdMatching)
- throws IOException
+ boolean relaxedIdMatching) throws IOException
{
String strand = gffColumns[STRAND_COL];
* (new or existing) virtual sequence in the newseqs list
*/
String targetId = findTargetId(tokens[0], attributes);
- SequenceI mappedSequence1 = findSequence(targetId, align,
- newseqs, relaxedIdMatching);
+ SequenceI mappedSequence1 = findSequence(targetId, align, newseqs,
+ relaxedIdMatching);
SequenceI mappedSequence = mappedSequence1;
if (mappedSequence == null)
{
int fromStart = Integer.parseInt(gffColumns[START_COL]);
int fromEnd = Integer.parseInt(gffColumns[END_COL]);
MapList mapping = constructMappingFromAlign(fromStart, fromEnd,
- toStart, toEnd,
- MappingType.NucleotideToNucleotide);
+ toStart, toEnd, MappingType.NucleotideToNucleotide);
if (mapping != null)
{
for (String target : targets)
{
- SequenceI mappedSequence1 = findSequence(findTargetId(target, set), align,
- newseqs, relaxedIdMatching);
+ SequenceI mappedSequence1 = findSequence(findTargetId(target, set),
+ align, newseqs, relaxedIdMatching);
SequenceI mappedSequence = mappedSequence1;
if (mappedSequence == null)
{
/*
* Ensembl returns dna variants as 'alleles'
*/
- desc = StringUtils.listToDelimitedString(
- attributes.get("alleles"), ",");
+ desc = StringUtils.listToDelimitedString(attributes.get("alleles"),
+ ",");
}
/*
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
/**
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import jalview.analysis.SequenceIdMatcher;
* @param toSeq
* @return
*/
- protected AlignedCodonFrame getMapping(AlignmentI align, SequenceI fromSeq, SequenceI toSeq)
+ protected AlignedCodonFrame getMapping(AlignmentI align,
+ SequenceI fromSeq, SequenceI toSeq)
{
AlignedCodonFrame acf = align.getMapping(fromSeq, toSeq);
if (acf == null)
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
-
/**
* A factory to serve instances of GFF helper classes
*/
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import jalview.datamodel.AlignmentI;
* @throws IOException
*/
SequenceFeature processGff(SequenceI seq, String[] gffColumns,
- AlignmentI align,
- List<SequenceI> newseqs, boolean relaxedIdMatching)
- throws IOException;
+ AlignmentI align, List<SequenceI> newseqs,
+ boolean relaxedIdMatching) throws IOException;
// java 8 will allow static methods in interfaces:
// static boolean recognises(String [] columns);
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import jalview.datamodel.AlignmentI;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
+/**
+ * A factory class that returns a model of the Sequence Ontology. By default a
+ * hard-coded subset is used (for the applet, or testing), or setInstance() can
+ * be used to set full Ontology data.
+ *
+ * @author gmcarstairs
+ *
+ */
public class SequenceOntologyFactory
{
private static SequenceOntologyI instance;
{
if (instance == null)
{
- // instance = new SequenceOntology();
instance = new SequenceOntologyLite();
}
return instance;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import java.util.List;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import java.util.ArrayList;
{ "miRNA", "transcript" },
{ "lincRNA", "transcript" },
{ "rRNA", "transcript" },
+ { "mRNA", "transcript" },
// there are many more sub-types of ncRNA...
/*
private void loadStaticData()
{
parents = new HashMap<String, List<String>>();
- for (String [] pair : TERMS) {
+ for (String[] pair : TERMS)
+ {
List<String> p = parents.get(pair[0]);
if (p == null)
{
{
if (!termsNotFound.contains(term))
{
- System.out.println("SO term " + term
- + " not known - may be invalid, or model if needed in "
- + getClass().getName());
+ // suppress logging here as it reports Uniprot sequence features
+ // (which do not use SO terms) when auto-configuring feature colours
+ // System.out.println("SO term " + term
+ // + " not known - add to model if needed in "
+ // + getClass().getName());
termsNotFound.add(term);
}
}
* @param parentAlignment
*/
public JalviewDataset(AlignmentI aldataset,
- Map<String, FeatureColourI> fc,
- Hashtable seqDets)
+ Map<String, FeatureColourI> fc, Hashtable seqDets)
{
// TODO not used - remove?
this(aldataset, fc, seqDets, null);
* with.
*/
public JalviewDataset(AlignmentI aldataset,
- Map<String, FeatureColourI> fc,
- Hashtable seqDets, AlignmentI parentAlignment)
+ Map<String, FeatureColourI> fc, Hashtable seqDets,
+ AlignmentI parentAlignment)
{
this();
parentDataset = aldataset;
radioItem.removeActionListener(radioItem.getActionListeners()[0]);
int option = JOptionPane.showInternalConfirmDialog(
- jalview.gui.Desktop.desktop,
- MessageManager
+ jalview.gui.Desktop.desktop, MessageManager
.getString("label.remove_from_default_list"),
MessageManager
.getString("label.remove_user_defined_colour"),
showProducts.setText(MessageManager.getString("label.get_cross_refs"));
runGroovy.setText(MessageManager.getString("label.run_groovy"));
- runGroovy.setToolTipText(MessageManager.getString("label.run_groovy_tip"));
+ runGroovy.setToolTipText(MessageManager
+ .getString("label.run_groovy_tip"));
runGroovy.addActionListener(new ActionListener()
{
@Override
{
}
+
/**
* Adds the given action listener and key accelerator to the given menu item.
* Also saves in a lookup table to support lookup of action by key stroke.
{
return true;
}
-
+
FTSDataColumnI[] currentWantedFields = pdbDocFieldPrefs
- .getStructureSummaryFields()
- .toArray(new FTSDataColumnI[0]);
+ .getStructureSummaryFields().toArray(new FTSDataColumnI[0]);
return Arrays.equals(currentWantedFields, previousWantedFields) ? false
: true;
{
return tbl_summary;
}
+
public JComboBox<FilterOption> getCmbFilterOption()
{
return cmb_filterOption;
annotationPanel = null;
}
- void drawStemAnnot(Graphics g, Annotation[] row_annotations,
- int lastSSX, int x, int y, int iconOffset, int startRes,
- int column, boolean validRes, boolean validEnd)
+ void drawStemAnnot(Graphics g, Annotation[] row_annotations, int lastSSX,
+ int x, int y, int iconOffset, int startRes, int column,
+ boolean validRes, boolean validEnd)
{
g.setColor(STEM_COLOUR);
int sCol = (lastSSX / charWidth) + startRes;
private Color sdNOTCANONICAL_COLOUR;
- void drawGlyphLine(Graphics g, Annotation[] row, int lastSSX,
- int x, int y, int iconOffset, int startRes, int column,
+ void drawGlyphLine(Graphics g, Annotation[] row, int lastSSX, int x,
+ int y, int iconOffset, int startRes, int column,
boolean validRes, boolean validEnd)
{
g.setColor(GLYPHLINE_COLOR);
}
- void drawHelixAnnot(Graphics g, Annotation[] row, int lastSSX,
- int x, int y, int iconOffset, int startRes, int column,
+ void drawHelixAnnot(Graphics g, Annotation[] row, int lastSSX, int x,
+ int y, int iconOffset, int startRes, int column,
boolean validRes, boolean validEnd)
{
g.setColor(HELIX_COLOUR);
* marker position in alignment column coords, a String to be rendered
* at the position (or null)
*/
- public List<ScaleMark> calculateMarks(AlignViewportI av,
- int startx, int endx)
+ public List<ScaleMark> calculateMarks(AlignViewportI av, int startx,
+ int endx)
{
int scalestartx = (startx / 10) * 10;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.schemes;
import jalview.api.FeatureColourI;
setAutoScaled(fc.isAutoScaled());
setColourByLabel(fc.isColourByLabel());
}
-
+
/**
* Copy constructor with new min/max ranges
+ *
* @param fc
* @param min
* @param max
setGraduatedColour(false);
}
}
+
@Override
public boolean isBelowThreshold()
{
{
scl = 1f;
}
- return new Color(minRed + scl * deltaRed, minGreen + scl * deltaGreen, minBlue + scl * deltaBlue);
+ return new Color(minRed + scl * deltaRed, minGreen + scl * deltaGreen,
+ minBlue + scl * deltaBlue);
}
/**
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.schemes;
import jalview.api.FeatureColourI;
charged.put("D", Integer.valueOf(1));
charged.put("N", Integer.valueOf(0)); // Asparagine is polar but not
// charged.
- // Alternative would be charged and
- // negative (in basic form)?
+ // Alternative would be charged and
+ // negative (in basic form)?
charged.put("S", Integer.valueOf(0));
charged.put("T", Integer.valueOf(0));
charged.put("P", Integer.valueOf(0));
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.structure;
import jalview.datamodel.PDBEntry;
JMOL_PARSER, JALVIEW_PARSER
}
-
/**
* Determines the default file format for structure files to be downloaded
* from the PDB sequence fetcher. Possible options include: PDB|mmCIF
* are : JMolParser|JalveiwParser
*/
private static StructureParser defaultPDBFileParser = StructureParser.JMOL_PARSER;
+
public static void addSettings(boolean addAlignmentAnnotations,
boolean processSecStr, boolean externalSecStr)
{
return setMapping(true, sequence, targetChains, pdbFile, protocol);
}
-
/**
* create sequence structure mappings between each sequence and the given
* pdbFile (retrieved via the given protocol).
*/
synchronized public StructureFile setMapping(boolean forStructureView,
SequenceI[] sequenceArray, String[] targetChainIds,
- String pdbFile,
- String protocol)
+ String pdbFile, String protocol)
{
/*
* There will be better ways of doing this in the future, for now we'll use
try
{
StructureMapping siftsMapping = getStructureMapping(seq,
- pdbFile,
- chain.id, pdb, chain, sqmpping, maxAlignseq);
+ pdbFile, chain.id, pdb, chain, sqmpping, maxAlignseq);
foundSiftsMappings.add(siftsMapping);
} catch (SiftsException e)
{
PDBChain maxChain, jalview.datamodel.Mapping sqmpping,
AlignSeq maxAlignseq) throws SiftsException
{
- StructureMapping curChainMapping = siftsClient
- .getSiftsStructureMapping(seq, pdbFile, targetChainId);
- try
- {
+ StructureMapping curChainMapping = siftsClient
+ .getSiftsStructureMapping(seq, pdbFile, targetChainId);
+ try
+ {
PDBChain chain = pdb.findChain(targetChainId);
if (chain != null)
{
chain.transferResidueAnnotation(curChainMapping, sqmpping);
}
- } catch (Exception e)
- {
- e.printStackTrace();
- }
- return curChainMapping;
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ return curChainMapping;
}
- private StructureMapping getNWMappings(SequenceI seq,
- String pdbFile,
+ private StructureMapping getNWMappings(SequenceI seq, String pdbFile,
String maxChainId, PDBChain maxChain, StructureFile pdb,
AlignSeq maxAlignseq)
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.util;
public class ArrayUtils
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.util;
/**
import jalview.datamodel.SequenceI;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
@Override
public boolean matches(DBRefEntry refa, DBRefEntry refb)
{
- if (refa.getSource() != null && refb.getSource() != null
+ if (refa.getSource() != null
+ && refb.getSource() != null
&& DBRefUtils.getCanonicalName(refb.getSource()).equals(
DBRefUtils.getCanonicalName(refa.getSource())))
{
@Override
public boolean matches(DBRefEntry refa, DBRefEntry refb)
{
- if (refa.getSource() != null && refb.getSource() != null
+ if (refa.getSource() != null
+ && refb.getSource() != null
&& DBRefUtils.getCanonicalName(refb.getSource()).equals(
DBRefUtils.getCanonicalName(refa.getSource())))
{
@Override
public boolean matches(DBRefEntry refa, DBRefEntry refb)
{
- if (refa.getSource() != null && refb.getSource() != null
+ if (refa.getSource() != null
+ && refb.getSource() != null
&& DBRefUtils.getCanonicalName(refb.getSource()).equals(
DBRefUtils.getCanonicalName(refa.getSource())))
{
@Override
public boolean matches(DBRefEntry refa, DBRefEntry refb)
{
- if (refa.getSource() != null && refb.getSource() != null
+ if (refa.getSource() != null
+ && refb.getSource() != null
&& DBRefUtils.getCanonicalName(refb.getSource()).equals(
DBRefUtils.getCanonicalName(refa.getSource())))
{
return matches;
}
+ /**
+ * promote direct database references to primary for nucleotide or protein
+ * sequences if they have an appropriate primary ref
+ * <table>
+ * <tr>
+ * <th>Seq Type</th>
+ * <th>Primary DB</th>
+ * <th>Direct which will be promoted</th>
+ * </tr>
+ * <tr align=center>
+ * <td>peptides</td>
+ * <td>Ensembl</td>
+ * <td>Uniprot</td>
+ * </tr>
+ * <tr align=center>
+ * <td>peptides</td>
+ * <td>Ensembl</td>
+ * <td>Uniprot</td>
+ * </tr>
+ * <tr align=center>
+ * <td>dna</td>
+ * <td>Ensembl</td>
+ * <td>ENA</td>
+ * </tr>
+ * </table>
+ *
+ * @param sequence
+ */
+ public static void ensurePrimaries(SequenceI sequence)
+ {
+ List<DBRefEntry> pr = sequence.getPrimaryDBRefs();
+ if (pr.size() == 0)
+ {
+ // nothing to do
+ return;
+ }
+ List<DBRefEntry> selfs = new ArrayList<DBRefEntry>();
+ {
+ DBRefEntry[] selfArray = selectDbRefs(!sequence.isProtein(),
+ sequence.getDBRefs());
+ if (selfArray == null || selfArray.length == 0)
+ {
+ // nothing to do
+ return;
+ }
+ selfs.addAll(Arrays.asList(selfArray));
+ }
+
+ // filter non-primary refs
+ for (DBRefEntry p : pr)
+ {
+ while (selfs.contains(p))
+ {
+ selfs.remove(p);
+ }
+ }
+ List<DBRefEntry> toPromote = new ArrayList<DBRefEntry>();
+
+ for (DBRefEntry p : pr)
+ {
+ List<String> promType = new ArrayList<String>();
+ if (sequence.isProtein())
+ {
+ switch (getCanonicalName(p.getSource()))
+ {
+ case DBRefSource.UNIPROT:
+ // case DBRefSource.UNIPROTKB:
+ // case DBRefSource.UP_NAME:
+ // search for and promote ensembl
+ promType.add(DBRefSource.ENSEMBL);
+ break;
+ case DBRefSource.ENSEMBL:
+ // search for and promote Uniprot
+ promType.add(DBRefSource.UNIPROT);
+ break;
+ }
+ }
+ else
+ {
+ // TODO: promote transcript refs
+ }
+
+ // collate candidates and promote them
+ DBRefEntry[] candidates = selectRefs(
+ selfs.toArray(new DBRefEntry[0]),
+ promType.toArray(new String[0]));
+ if (candidates != null)
+ {
+ for (DBRefEntry cand : candidates)
+ {
+ if (cand.hasMap())
+ {
+ if (cand.getMap().getTo() != null
+ && cand.getMap().getTo() != sequence)
+ {
+ // can't promote refs with mappings to other sequences
+ continue;
+ }
+ if (cand.getMap().getMap().getFromLowest() != sequence
+ .getStart()
+ && cand.getMap().getMap().getFromHighest() != sequence
+ .getEnd())
+ {
+ // can't promote refs with mappings from a region of this sequence
+ // - eg CDS
+ continue;
+ }
+ }
+ // and promote
+ cand.setVersion(p.getVersion() + " (promoted)");
+ selfs.remove(cand);
+ toPromote.add(cand);
+ if (!cand.isPrimaryCandidate())
+ {
+ System.out.println("Warning: Couldn't promote dbref "
+ + cand.toString() + " for sequence "
+ + sequence.toString());
+ }
+ }
+ }
+ }
+ }
+
}
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.util;
import java.text.ParseException;
-/*******************************************************************************
+/*
* Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
* Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* You should have received a copy of the GNU General Public License
* along with Jalview. If not, see <http://www.gnu.org/licenses/>.
* The Jalview Authors are detailed in the 'AUTHORS' file.
- ******************************************************************************/
+ */
package jalview.util;
import java.io.IOException;
public enum TYPE
{
- EPS("EPS", MessageManager.getString("label.eps_file"), getEPSChooser()), PNG(
- "PNG", MessageManager.getString("label.png_image"),
- getPNGChooser()), SVG("SVG", "SVG", getSVGChooser());
+ EPS("EPS", MessageManager.getString("label.eps_file"), getEPSChooser()),
+ PNG("PNG", MessageManager.getString("label.png_image"), getPNGChooser()),
+ SVG("SVG", "SVG", getSVGChooser());
private JalviewFileChooser chooser;
*/
public static List<int[]> coalesceRanges(final List<int[]> ranges)
{
- if (ranges == null || ranges.size() < 2) {
+ if (ranges == null || ranges.size() < 2)
+ {
return ranges;
}
lastRange = new int[] { lastRange[0], lastRange[1] };
merged.add(lastRange);
boolean first = true;
-
+
for (final int[] range : ranges)
{
if (first)
* if next range is in the same direction as last and contiguous,
* just update the end position of the last range
*/
- boolean sameDirection = range[1] == range[0] || direction == lastDirection;
+ boolean sameDirection = range[1] == range[0]
+ || direction == lastDirection;
boolean extending = range[0] == lastRange[1] + lastDirection;
boolean overlapping = (lastDirection == 1 && range[0] >= lastRange[0] && range[0] <= lastRange[1])
|| (lastDirection == -1 && range[0] <= lastRange[0] && range[0] >= lastRange[1]);
lastDirection = (range[1] == range[0]) ? lastDirection : direction;
}
}
-
+
return changed ? merged : ranges;
}
/*
* Found a sequence mapping. Locate the start/end mapped residues.
*/
- List<AlignedCodonFrame> mapping = Arrays.asList(new AlignedCodonFrame[] { acf });
+ List<AlignedCodonFrame> mapping = Arrays
+ .asList(new AlignedCodonFrame[] { acf });
SearchResults sr = buildSearchResults(selected,
startResiduePos, mapping);
for (Match m : sr.getResults())
* @param fromGapChar
*/
protected static void mapHiddenColumns(int[] hidden,
- List<AlignedCodonFrame> mappings,
- ColumnSelection mappedColumns, List<SequenceI> fromSequences,
- List<SequenceI> toSequences, char fromGapChar)
+ List<AlignedCodonFrame> mappings, ColumnSelection mappedColumns,
+ List<SequenceI> fromSequences, List<SequenceI> toSequences,
+ char fromGapChar)
{
for (int col = hidden[0]; col <= hidden[1]; col++)
{
* @param fromGapChar
*/
protected static void mapColumn(int col,
- List<AlignedCodonFrame> mappings,
- ColumnSelection mappedColumns, List<SequenceI> fromSequences,
- List<SequenceI> toSequences, char fromGapChar)
+ List<AlignedCodonFrame> mappings, ColumnSelection mappedColumns,
+ List<SequenceI> fromSequences, List<SequenceI> toSequences,
+ char fromGapChar)
{
int[] mappedTo = findMappedColumns(col, mappings, fromSequences,
toSequences, fromGapChar);
* Get the residue position and find the mapped position.
*/
int residuePos = fromSeq.findPosition(col);
- SearchResults sr = buildSearchResults(fromSeq, residuePos,
- mappings);
+ SearchResults sr = buildSearchResults(fromSeq, residuePos, mappings);
for (Match m : sr.getResults())
{
int mappedStartResidue = m.getStart();
{
return ranges;
}
-
+
int[] copy = Arrays.copyOf(ranges, ranges.length);
int sxpos = -1;
int cdspos = 0;
break;
}
}
-
+
if (sxpos > 0)
{
/*
final int length = arr.length;
Integer[] indices = makeIndexArray(length);
Arrays.sort(indices, new IntComparator(arr, ascending));
-
+
/*
* Copy the array values as per the sorted indices
*/
sortedInts[i] = arr[indices[i]];
sortedObjects[i] = s[indices[i]];
}
-
+
/*
* And copy the sorted values back into the arrays
*/
final int length = arr.length;
Integer[] indices = makeIndexArray(length);
Arrays.sort(indices, new ExternalComparator(arr, ascending));
-
+
/*
* Copy the array values as per the sorted indices
*/
sortedStrings[i] = arr[indices[i]];
sortedObjects[i] = s[indices[i]];
}
-
+
/*
* And copy the sorted values back into the arrays
*/
final int length = arr.length;
Integer[] indices = makeIndexArray(length);
Arrays.sort(indices, new DoubleComparator(arr, ascending));
-
+
/*
* Copy the array values as per the sorted indices
*/
sortedDoubles[i] = arr[indices[i]];
sortedObjects[i] = s[indices[i]];
}
-
+
/*
* And copy the sorted values back into the arrays
*/
}
return "" + separator;
}
-
+
/**
* Converts a list to a string with a delimiter before each term except the
* first. Returns an empty string given a null or zero-length argument. This
public boolean isHiddenRepSequence(SequenceI seq)
{
return (hiddenRepSequences != null && hiddenRepSequences
- .containsKey(seq));
+ .containsKey(seq));
}
/**
public void expandColSelection(SequenceGroup sg, boolean wholewidth)
{
int sgs, sge;
- if (sg != null
- && (sgs = sg.getStartRes()) >= 0
+ if (sg != null && (sgs = sg.getStartRes()) >= 0
&& sg.getStartRes() <= (sge = sg.getEndRes())
&& !this.hasSelectedColumns())
{
@Override
public void setColour(String featureType, FeatureColourI col)
{
- featureColours.put(featureType, col);
+ featureColours.put(featureType, col);
}
public void setTransparency(float value)
ourAnnots.clear();
}
}
+
// TODO: allow GUI to query workers associated with annotation to add items to
// annotation label panel popup menu
float max = Float.MIN_VALUE;
float min = Float.MAX_VALUE;
boolean set = false;
- for (Annotation a : anns) {
- if (a != null) {
+ for (Annotation a : anns)
+ {
+ if (a != null)
+ {
set = true;
float val = a.value;
max = Math.max(max, val);
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.workers;
import jalview.api.AlignViewportI;
{
// TODO need an interface for AlignFrame by which to access
// its AlignViewportI and AlignmentViewPanel
- AlignFrame currentAlignFrame = Jalview.getCurrentAlignFrame() ;
+ AlignFrame currentAlignFrame = Jalview.getCurrentAlignFrame();
if (currentAlignFrame != null)
{
newCalculator(currentAlignFrame.getViewport(), currentAlignFrame
* provider of AlignmentAnnotation for the alignment
*/
public static void newCalculator(AlignViewportI viewport,
- AlignmentViewPanel panel,
- AnnotationProviderI calculator)
+ AlignmentViewPanel panel, AnnotationProviderI calculator)
{
new AnnotationWorker(viewport, panel, calculator);
}
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.workers;
import jalview.api.FeatureRenderer;
*/
AlignmentAnnotation ann = alignViewport.getAlignment()
.findOrCreateAnnotation(counter.getName(),
- counter.getDescription(), false, null,
- null);
+ counter.getDescription(), false, null, null);
ann.description = counter.getDescription();
ann.showAllColLabels = true;
ann.scaleColLabel = true;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.workers;
import jalview.datamodel.SequenceFeature;
*/
public DBRefFetcher(SequenceI[] seqs,
IProgressIndicator progressIndicatorFrame,
- DbSourceProxy[] sources, FeatureSettings featureSettings, boolean isNucleotide)
+ DbSourceProxy[] sources, FeatureSettings featureSettings,
+ boolean isNucleotide)
{
listeners = new ArrayList<FetchFinishedListenerI>();
this.progressWindow = progressIndicatorFrame;
{
progressWindow.setProgressBar(
MessageManager.getString("status.fetching_db_refs"),
- startTime);
+ startTime);
}
try
{
// Still queries to make for current seqIndex
StringBuffer queryString = new StringBuffer("");
int numq = 0;
- int nqSize = (maxqlen > queries.size()) ? queries
- .size() : maxqlen;
+ int nqSize = (maxqlen > queries.size()) ? queries.size()
+ : maxqlen;
while (queries.size() > 0 && numq < nqSize)
{
output.setText(sb.toString());
Desktop.addInternalFrame(output,
- MessageManager.getString("label.sequences_updated"),
- 600, 300);
+ MessageManager.getString("label.sequences_updated"), 600, 300);
// The above is the dataset, we must now find out the index
// of the viewed sequence
* @param warningMessages
* a list of messages to add to
*/
- boolean transferReferences(Vector<SequenceI> sdataset,
- String dbSource,
+ boolean transferReferences(Vector<SequenceI> sdataset, String dbSource,
AlignmentI retrievedAl, boolean trimDatasetSeqs,
List<String> warningMessages)
{
// taking into account all accessionIds and names in the file
Vector<SequenceI> sequenceMatches = new Vector<SequenceI>();
// look for corresponding accession ids
- DBRefEntry[] entryRefs = DBRefUtils.selectRefs(retrievedSeq.getDBRefs(),
- new String[] { dbSource });
+ DBRefEntry[] entryRefs = DBRefUtils.selectRefs(
+ retrievedSeq.getDBRefs(), new String[] { dbSource });
if (entryRefs == null)
{
System.err
*/
mp = new Mapping(null, new int[] { sequenceStart + absStart,
sequenceStart + absStart + entrySeq.length() - 1 }, new int[]
- { retrievedSeq.getStart(), retrievedSeq.getStart() + entrySeq.length() - 1 },
- 1, 1);
+ { retrievedSeq.getStart(),
+ retrievedSeq.getStart() + entrySeq.length() - 1 }, 1, 1);
updateRefFrame = false;
}
else
}
System.out.println("Adding dbrefs to " + sequence.getName()
- + " from " + dbSource + " sequence : " + retrievedSeq.getName());
+ + " from " + dbSource + " sequence : "
+ + retrievedSeq.getName());
sequence.transferAnnotation(retrievedSeq, mp);
absStart += retrievedSeq.getStart();
public void run()
{
running = true;
- boolean isNucleotide = af.getViewport().getAlignment()
- .isNucleotide();
+ boolean isNucleotide = af.getViewport().getAlignment().isNucleotide();
new DBRefFetcher(sequences, af, null, af.featureSettings,
isNucleotide).fetchDBRefs(true);
{
jalviewSourceI[] sources = sourceRegistry.getSources().toArray(
new jalviewSourceI[0]);
- String active = Cache.getDefault("DAS_ACTIVE_SOURCE",
- "uniprot");
+ String active = Cache.getDefault("DAS_ACTIVE_SOURCE", "uniprot");
StringTokenizer st = new StringTokenizer(active, "\t");
selectedSources = new Vector();
String token;
{
return null;
}
- DBRefEntry[] uprefs = DBRefUtils.selectRefs(
- seq.getDBRefs(), new String[] {
+ DBRefEntry[] uprefs = DBRefUtils.selectRefs(seq.getDBRefs(),
+ new String[] {
// jalview.datamodel.DBRefSource.PDB,
DBRefSource.UNIPROT,
// jalview.datamodel.DBRefSource.EMBL - not tested on any EMBL coord
for (COORDINATES csys : dasSource.getVersion().getCOORDINATES())
{
- if (DBRefUtils.isDasCoordinateSystem(
- csys.getAuthority(), uprefs[j]))
+ if (DBRefUtils.isDasCoordinateSystem(csys.getAuthority(),
+ uprefs[j]))
{
debug("Launched fetcher for coordinate system "
+ csys.getAuthority());
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ws;
import jalview.ws.seqfetcher.ASequenceFetcher;
}
List<SequenceI> peptides = new ArrayList<SequenceI>();
- if (efile != null)
+ if (efile != null && efile.getEntries() != null)
{
for (EmblEntry entry : efile.getEntries())
{
-
/*
* Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
* Copyright (C) $$Year-Rel$$ The Jalview Authors
public class Pdb extends EbiFileRetrievedProxy
{
private static final String SEPARATOR = "|";
+
private static final String COLON = ":";
- private static final int PDB_ID_LENGTH = 4;
+ private static final int PDB_ID_LENGTH = 4;
public Pdb()
{
String ext = StructureImportSettings.getDefaultStructureFileFormat()
.equalsIgnoreCase(Type.MMCIF.toString()) ? ".cif" : ".xml";
EBIFetchClient ebi = new EBIFetchClient();
- file = ebi.fetchDataAsFile("pdb:" + id,
- StructureImportSettings.getDefaultStructureFileFormat().toLowerCase(),
- ext)
- .getAbsolutePath();
+ file = ebi.fetchDataAsFile(
+ "pdb:" + id,
+ StructureImportSettings.getDefaultStructureFileFormat()
+ .toLowerCase(), ext).getAbsolutePath();
stopQuery();
if (file == null)
{
{
// FIXME seems to result in 'PDB|1QIP|1qip|A' - 1QIP is redundant.
// TODO: suggest simplify naming to 1qip|A as default name defined
- pdbcs.setName(jalview.datamodel.DBRefSource.PDB + SEPARATOR + id
- + SEPARATOR + pdbcs.getName());
+ pdbcs.setName(jalview.datamodel.DBRefSource.PDB + SEPARATOR
+ + id + SEPARATOR + pdbcs.getName());
// Might need to add more metadata to the PDBEntry object
// like below
/*
return 0;
}
-
/**
* Returns a descriptor for suitable feature display settings with
* <ul>
"STH");
for (int s = 0, sNum = rcds.getHeight(); s < sNum; s++)
{
- rcds.getSequenceAt(s).addDBRef(
-new DBRefEntry(DBRefSource.PFAM,
- // getDbSource(),
- getDbVersion(), queries.trim().toUpperCase()));
+ rcds.getSequenceAt(s).addDBRef(new DBRefEntry(DBRefSource.PFAM,
+ // getDbSource(),
+ getDbVersion(), queries.trim().toUpperCase()));
if (!getDbSource().equals(DBRefSource.PFAM))
{ // add the specific ref too
rcds.getSequenceAt(s).addDBRef(
*/
package jalview.ws.dbsources;
-
/**
* flyweight class specifying retrieval of Full family alignments from PFAM
*
*/
package jalview.ws.dbsources;
-
/**
* flyweight class specifying retrieval of Seed alignments from PFAM
*
*/
package jalview.ws.dbsources;
-
/**
* Flyweight class specifying retrieval of Full family alignments from RFAM
*
*/
package jalview.ws.dbsources;
-
/**
* Flyweight class specifying retrieval of Seed family alignments from RFAM
*
{
return "/alignment";
}
+
/*
* (non-Javadoc)
*
* UniprotEntry
* @return SequenceI instance created from the UniprotEntry instance
*/
- public SequenceI uniprotEntryToSequenceI(UniprotEntry entry){
+ public SequenceI uniprotEntryToSequenceI(UniprotEntry entry)
+ {
String id = getUniprotEntryId(entry);
SequenceI sequence = new Sequence(id, entry.getUniprotSequence()
.getContent());
{
onlyPdbEntries.addElement(pdb);
}
+ if ("EMBL".equals(pdb.getType()))
+ {
+ // look for a CDS reference and add it, too.
+ String cdsId = (String) pdb.getProperty()
+ .get("protein sequence ID");
+ if (cdsId != null && cdsId.trim().length() > 0)
+ {
+ // remove version
+ String[] vrs = cdsId.split("\\.");
+ dbr = new DBRefEntry(DBRefSource.EMBLCDS, vrs.length > 1 ? vrs[1]
+ : DBRefSource.UNIPROT + ":" + dbVersion, vrs[0]);
+ dbRefs.add(dbr);
+ }
+ }
+ if ("Ensembl".equals(pdb.getType()))
+ {
+ /*UniprotXML
+ * <dbReference type="Ensembl" id="ENST00000321556">
+ * <molecule id="Q9BXM7-1"/>
+ * <property type="protein sequence ID" value="ENSP00000364204"/>
+ * <property type="gene ID" value="ENSG00000158828"/>
+ * </dbReference>
+ */
+ String cdsId = (String) pdb.getProperty()
+ .get("protein sequence ID");
+ if (cdsId != null && cdsId.trim().length() > 0)
+ {
+ dbr = new DBRefEntry(DBRefSource.ENSEMBL, DBRefSource.UNIPROT
+ + ":" + dbVersion, cdsId.trim());
+ dbRefs.add(dbr);
+
+ }
+ }
+
}
sequence.setPDBId(onlyPdbEntries);
sequence.addSequenceFeature(sf);
}
}
- sequence.setDBRefs(dbRefs.toArray(new DBRefEntry[0]));
+ for (DBRefEntry dbr : dbRefs)
+ {
+ sequence.addDBRef(dbr);
+ }
return sequence;
}
// TODO: trap HTTP 404 exceptions and return null
AlignmentI rcds = new FormatAdapter().readFile(getXFAMURL()
+ queries.trim().toUpperCase() + getXFAMURLSUFFIX(),
- jalview.io.FormatAdapter.URL,
- "STH");
+ jalview.io.FormatAdapter.URL, "STH");
for (int s = 0, sNum = rcds.getHeight(); s < sNum; s++)
{
rcds.getSequenceAt(s).addDBRef(new DBRefEntry(getXfamSource(),
}
/*
- *
- */
+ *
+ */
@Override
public jalviewSourceI createLocalSource(String url, String name,
}
// note: outFile is currently always specified, so return value is null
- String[] rslt = fetchBatch(querystring.toString(), database, format, outFile);
+ String[] rslt = fetchBatch(querystring.toString(), database, format,
+ outFile);
return (rslt != null && rslt.length > 0 ? rslt : null);
}
return null;
}
System.err.println("Unexpected exception when retrieving from "
- + database
- + "\nQuery was : '" + ids + "'");
+ + database + "\nQuery was : '" + ids + "'");
ex.printStackTrace(System.err);
return null;
} finally
while (j < l)
{
- if (((AlignmentOrder) alorders.get(i))
- .equals((alorders.get(j))))
+ if (((AlignmentOrder) alorders.get(i)).equals((alorders
+ .get(j))))
{
alorders.remove(j);
l--;
try
{
- this.server = loc.getSeqSearchService(new java.net.URL(
- WsURL));
+ this.server = loc.getSeqSearchService(new java.net.URL(WsURL));
((SeqSearchServiceSoapBindingStub) this.server).setTimeout(60000); // One
// minute
// timeout
}
});
- String tooltip = JvSwingUtils.wrapTooltip(
- true,
+ String tooltip = JvSwingUtils
+ .wrapTooltip(
+ true,
"<strong>"
- + (preset.isModifiable() ? MessageManager
- .getString("label.user_preset")
- : MessageManager
- .getString("label.service_preset"))
+ + (preset.isModifiable() ? MessageManager
+ .getString("label.user_preset")
+ : MessageManager
+ .getString("label.service_preset"))
+ "</strong><br/>"
+ preset.getDescription());
methodR.setToolTipText(tooltip);
return true;
}
}
- Cache.log.warn("isFetchable doesn't know about '" + source
- + "'");
+ Cache.log.warn("isFetchable doesn't know about '" + source + "'");
return false;
}
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ws.sifts;
public class MappingOutputPojo
this.type = type;
}
-
}
siftsEntry = parseSIFTs(siftsFile);
}
-
/**
* Parse the given SIFTs File and return a JAXB POJO of parsed data
*
{
siftsDownloadDir.mkdirs();
}
- // System.out.println(">> Download ftp url : " + siftsFileFTPURL);
- URL url = new URL(siftsFileFTPURL);
- URLConnection conn = url.openConnection();
- InputStream inputStream = conn.getInputStream();
- FileOutputStream outputStream = new FileOutputStream(
- downloadedSiftsFile);
- byte[] buffer = new byte[BUFFER_SIZE];
- int bytesRead = -1;
- while ((bytesRead = inputStream.read(buffer)) != -1)
- {
- outputStream.write(buffer, 0, bytesRead);
- }
- outputStream.close();
- inputStream.close();
- // System.out.println(">>> File downloaded : " + downloadedSiftsFile);
+ // System.out.println(">> Download ftp url : " + siftsFileFTPURL);
+ URL url = new URL(siftsFileFTPURL);
+ URLConnection conn = url.openConnection();
+ InputStream inputStream = conn.getInputStream();
+ FileOutputStream outputStream = new FileOutputStream(
+ downloadedSiftsFile);
+ byte[] buffer = new byte[BUFFER_SIZE];
+ int bytesRead = -1;
+ while ((bytesRead = inputStream.read(buffer)) != -1)
+ {
+ outputStream.write(buffer, 0, bytesRead);
+ }
+ outputStream.close();
+ inputStream.close();
+ // System.out.println(">>> File downloaded : " + downloadedSiftsFile);
return new File(downloadedSiftsFile);
}
}
}
}
+
/**
*
* @param chainId
}
}
-
-
@Override
public Entity getEntityById(String id) throws SiftsException
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ws.sifts;
public class SiftsException extends Exception
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ws.sifts;
import java.util.Objects;
return al.getAlignmentAnnotation();
}
- //@formatter:on
-
+ // @formatter:on
+
@BeforeMethod(alwaysRun = true)
public void setUp()
{
SequenceI alignFrom = new Sequence("Seq2", alignModel);
alignFrom.createDatasetSequence();
AlignedCodonFrame acf = new AlignedCodonFrame();
- acf.addMap(alignMe.getDatasetSequence(), alignFrom.getDatasetSequence(), map);
+ acf.addMap(alignMe.getDatasetSequence(),
+ alignFrom.getDatasetSequence(), map);
AlignmentUtils.alignSequenceAs(alignMe, alignFrom, acf, "---", '-',
preserveMappedGaps, preserveUnmappedGaps);
* CDS sequences are 'discovered' from dna-to-protein mappings on the alignment
* dataset (e.g. added from dbrefs by CrossRef.findXrefSequences)
*/
- MapList mapfordna1 = new MapList(new int[] { 4, 6, 10, 12 },
- new int[] { 1, 2 }, 3, 1);
+ MapList mapfordna1 = new MapList(new int[] { 4, 6, 10, 12 }, new int[] {
+ 1, 2 }, 3, 1);
AlignedCodonFrame acf = new AlignedCodonFrame();
acf.addMap(dna1.getDatasetSequence(), pep1.getDatasetSequence(),
mapfordna1);
dna.addCodonFrame(acf);
MapList mapfordna2 = new MapList(new int[] { 1, 3, 7, 9, 13, 15 },
- new int[] { 1, 3 },
- 3, 1);
+ new int[] { 1, 3 }, 3, 1);
acf = new AlignedCodonFrame();
acf.addMap(dna2.getDatasetSequence(), pep2.getDatasetSequence(),
mapfordna2);
.findMappingsForSequence(cds.get(0), dnaMappings);
Mapping mapping = dnaToCds1Mappings.get(0).getMappings().get(0)
.getMapping();
- assertSame(cds.get(0).getDatasetSequence(), mapping
- .getTo());
+ assertSame(cds.get(0).getDatasetSequence(), mapping.getTo());
assertEquals("G(1) in CDS should map to G(4) in DNA", 4, mapping
.getMap().getToPosition(1));
* @throws IOException
*/
@Test(groups = { "Functional" })
- public void testMapCdnaToProtein_forSubsequence()
- throws IOException
+ public void testMapCdnaToProtein_forSubsequence() throws IOException
{
SequenceI prot = new Sequence("UNIPROT|V12345", "E-I--Q", 10, 12);
prot.createDatasetSequence();
@Test(groups = { "Functional" })
public void testAlignSequenceAs_mappedProteinProtein()
{
-
+
SequenceI alignMe = new Sequence("Match", "MGAASEV");
alignMe.createDatasetSequence();
SequenceI alignFrom = new Sequence("Query", "LQTGYMGAASEVMFSPTRR");
MapList map = new MapList(new int[] { 6, 12 }, new int[] { 1, 7 }, 1, 1);
acf.addMap(alignFrom.getDatasetSequence(),
alignMe.getDatasetSequence(), map);
-
+
AlignmentUtils.alignSequenceAs(alignMe, alignFrom, acf, "-", '-', true,
true);
assertEquals("-----MGAASEV-------", alignMe.getSequenceAsString());
{
// map first 3 codons to KPF; G is a trailing unmapped residue
MapList map = new MapList(new int[] { 1, 9 }, new int[] { 1, 3 }, 3, 1);
-
+
checkAlignSequenceAs("AAACCCTTT", "K-PFG", true, true, map,
"AAA---CCCTTT---");
}
MapList map = new MapList(new int[] { 4, 6, 10, 12 },
new int[] { 1, 6 }, 1, 1);
-
+
// [5, 11] maps to [2, 5]
dna.addSequenceFeature(new SequenceFeature("type4", "desc4", 5, 11, 4f,
null));
// [12, 12] maps to [6, 6]
dna.addSequenceFeature(new SequenceFeature("type8", "desc8", 12, 12,
8f, null));
-
+
// desc4 and desc8 are the 'omit these' varargs
AlignmentUtils.transferFeatures(dna, cds, map, null, "type4", "type8");
SequenceFeature[] sfs = cds.getSequenceFeatures();
assertEquals(1, sfs.length);
-
+
SequenceFeature sf = sfs[0];
assertEquals("type5", sf.getType());
assertEquals(1, sf.getBegin());
{
SequenceI dna = new Sequence("dna/20-34", "acgTAGcaaGCCcgt");
SequenceI cds = new Sequence("cds/10-15", "TAGGCC");
-
+
MapList map = new MapList(new int[] { 4, 6, 10, 12 },
new int[] { 1, 6 }, 1, 1);
-
+
// [5, 11] maps to [2, 5]
dna.addSequenceFeature(new SequenceFeature("type4", "desc4", 5, 11, 4f,
null));
// [12, 12] maps to [6, 6]
dna.addSequenceFeature(new SequenceFeature("type8", "desc8", 12, 12,
8f, null));
-
+
// "type5" is the 'select this type' argument
AlignmentUtils.transferFeatures(dna, cds, map, "type5");
SequenceFeature[] sfs = cds.getSequenceFeatures();
assertEquals(1, sfs.length);
-
+
SequenceFeature sf = sfs[0];
assertEquals("type5", sf.getType());
assertEquals(1, sf.getBegin());
AlignmentI dna = new Alignment(new SequenceI[] { dna1, dna2, dna3 });
dna.setDataset(null);
-
+
MapList map = new MapList(new int[] { 4, 12, 16, 18 },
new int[] { 1, 4 }, 3, 1);
AlignedCodonFrame acf = new AlignedCodonFrame();
acf.addMap(dna1.getDatasetSequence(), pep1.getDatasetSequence(), map);
dna.addCodonFrame(acf);
map = new MapList(new int[] { 4, 8, 12, 12, 16, 18 },
- new int[] { 1, 3 },
- 3, 1);
+ new int[] { 1, 3 }, 3, 1);
acf = new AlignedCodonFrame();
acf.addMap(dna2.getDatasetSequence(), pep2.getDatasetSequence(), map);
dna.addCodonFrame(acf);
-
+
AlignmentI cds = AlignmentUtils.makeCdsAlignment(new SequenceI[] {
dna1, dna2, dna3 }, dna.getDataset(), null);
List<SequenceI> cdsSeqs = cds.getSequences();
assertEquals(2, cdsSeqs.size());
assertEquals("GGGCCCTTTGGG", cdsSeqs.get(0).getSequenceAsString());
assertEquals("GGGCCTGGG", cdsSeqs.get(1).getSequenceAsString());
-
+
/*
* verify shared, extended alignment dataset
*/
*/
List<AlignedCodonFrame> mappings = cds.getCodonFrames();
assertEquals(6, mappings.size());
-
+
/*
* 2 mappings involve pep1
*/
pep1CdsMappings);
assertEquals(1, sr.getResults().size());
Match m = sr.getResults().get(0);
- assertEquals(cds.getSequenceAt(0).getDatasetSequence(),
- m.getSequence());
+ assertEquals(cds.getSequenceAt(0).getDatasetSequence(), m.getSequence());
assertEquals(1, m.getStart());
assertEquals(3, m.getEnd());
sr = MappingUtils.buildSearchResults(pep1, 2, pep1CdsMappings);
m = sr.getResults().get(0);
assertEquals(10, m.getStart());
assertEquals(12, m.getEnd());
-
+
/*
* Get mapping of pep2 to cds2 and verify it
* maps GPG in pep2 to 1-3,4-6,7-9 in second CDS sequence
sr = MappingUtils.buildSearchResults(pep2, 1, pep2CdsMappings);
assertEquals(1, sr.getResults().size());
m = sr.getResults().get(0);
- assertEquals(cds.getSequenceAt(1).getDatasetSequence(),
- m.getSequence());
+ assertEquals(cds.getSequenceAt(1).getDatasetSequence(), m.getSequence());
assertEquals(1, m.getStart());
assertEquals(3, m.getEnd());
sr = MappingUtils.buildSearchResults(pep2, 2, pep2CdsMappings);
SequenceI dna3 = new Sequence("Seq3", "ccaaa-ttt-GGG-");
AlignmentI dna = new Alignment(new SequenceI[] { dna1, dna2, dna3 });
dna.setDataset(null);
-
+
// prot1 has 'X' for incomplete start codon (not mapped)
SequenceI prot1 = new Sequence("Seq1", "XKFG"); // X for incomplete start
SequenceI prot2 = new Sequence("Seq2", "NG");
AlignmentI protein = new Alignment(new SequenceI[] { prot1, prot2,
prot3 });
protein.setDataset(null);
-
+
// map dna1 [3, 11] to prot1 [2, 4] KFG
MapList map = new MapList(new int[] { 3, 11 }, new int[] { 2, 4 }, 3, 1);
AlignedCodonFrame acf = new AlignedCodonFrame();
SequenceI dnaSeq = new Sequence("dna", "aaagGGCCCaaaTTTttt");
dnaSeq.createDatasetSequence();
SequenceI ds = dnaSeq.getDatasetSequence();
-
+
// CDS for dna 5-6 (incomplete codon), 7-9
SequenceFeature sf = new SequenceFeature("CDS", "", 5, 9, 0f, null);
sf.setPhase("2"); // skip 2 bases to start of next codon
// CDS for dna 13-15
sf = new SequenceFeature("CDS_predicted", "", 13, 15, 0f, null);
ds.addSequenceFeature(sf);
-
+
List<int[]> ranges = AlignmentUtils.findCdsPositions(dnaSeq);
-
+
/*
* check the mapping starts with the first complete codon
*/
SequenceI dnaSeq = new Sequence("dna", "aaaGGGcccAAATTTttt");
dnaSeq.createDatasetSequence();
SequenceI ds = dnaSeq.getDatasetSequence();
-
+
// CDS for dna 10-12
SequenceFeature sf = new SequenceFeature("CDS_predicted", "", 10, 12,
0f, null);
// exon feature should be ignored here
sf = new SequenceFeature("exon", "", 7, 9, 0f, null);
ds.addSequenceFeature(sf);
-
+
List<int[]> ranges = AlignmentUtils.findCdsPositions(dnaSeq);
/*
* verify ranges { [4-6], [12-10] }
SequenceI dnaSeq = new Sequence("dna", "aaaGGGcccAAATTTttt");
dnaSeq.createDatasetSequence();
SequenceI ds = dnaSeq.getDatasetSequence();
-
+
// CDS for dna 4-6
SequenceFeature sf = new SequenceFeature("CDS", "", 4, 6, 0f, null);
sf.setStrand("-");
sf = new SequenceFeature("CDS_predicted", "", 10, 12, 0f, null);
sf.setStrand("-");
ds.addSequenceFeature(sf);
-
+
List<int[]> ranges = AlignmentUtils.findCdsPositions(dnaSeq);
/*
* verify ranges { [12-10], [6-4] }
SequenceI dnaSeq = new Sequence("dna", "aaagGGCCCaaaTTTttt");
dnaSeq.createDatasetSequence();
SequenceI ds = dnaSeq.getDatasetSequence();
-
+
// CDS for dna 5-9
SequenceFeature sf = new SequenceFeature("CDS", "", 5, 9, 0f, null);
sf.setStrand("-");
sf.setStrand("-");
sf.setPhase("2"); // skip 2 bases to start of next codon
ds.addSequenceFeature(sf);
-
+
List<int[]> ranges = AlignmentUtils.findCdsPositions(dnaSeq);
-
+
/*
* check the mapping starts with the first complete codon
* expect ranges [13, 13], [9, 5]
from.createDatasetSequence();
seq1.createDatasetSequence();
Mapping mapping = new Mapping(seq1, new MapList(
- new int[] { 3, 6, 9, 10 },
- new int[] { 1, 6 }, 1, 1));
+ new int[] { 3, 6, 9, 10 }, new int[] { 1, 6 }, 1, 1));
Map<Integer, Map<SequenceI, Character>> map = new TreeMap<Integer, Map<SequenceI, Character>>();
AlignmentUtils.addMappedPositions(seq1, from, mapping, map);
from.createDatasetSequence();
seq1.createDatasetSequence();
Mapping mapping = new Mapping(seq1, new MapList(
- new int[] { 3, 6, 9, 10 },
- new int[] { 1, 6 }, 1, 1));
+ new int[] { 3, 6, 9, 10 }, new int[] { 1, 6 }, 1, 1));
Map<Integer, Map<SequenceI, Character>> map = new TreeMap<Integer, Map<SequenceI, Character>>();
AlignmentUtils.addMappedPositions(seq1, from, mapping, map);
-
+
/*
* verify map has seq1 residues in columns 3,4,6,7,11,12
*/
dna.setDataset(null);
AlignmentI emblPeptides = new Alignment(new SequenceI[] { pep3, pep4 });
emblPeptides.setDataset(null);
-
+
AlignedCodonFrame acf = new AlignedCodonFrame();
MapList map = new MapList(new int[] { 4, 6, 10, 12 },
new int[] { 1, 2 }, 3, 1);
acf.addMap(dna2.getDatasetSequence(), pep2.getDatasetSequence(), map);
acf.addMap(dna2.getDatasetSequence(), pep4.getDatasetSequence(), map);
dna.addCodonFrame(acf);
-
+
/*
* execute method under test to find CDS for EMBL peptides only
*/
AlignmentI cds = AlignmentUtils.makeCdsAlignment(new SequenceI[] {
dna1, dna2 }, dna.getDataset(), emblPeptides.getSequencesArray());
-
+
assertEquals(2, cds.getSequences().size());
assertEquals("GGGTTT", cds.getSequenceAt(0).getSequenceAsString());
assertEquals("GGGTTTCCC", cds.getSequenceAt(1).getSequenceAsString());
-
+
/*
* verify shared, extended alignment dataset
*/
.contains(cds.getSequenceAt(0).getDatasetSequence()));
assertTrue(dna.getDataset().getSequences()
.contains(cds.getSequenceAt(1).getDatasetSequence()));
-
+
/*
* Verify mappings from CDS to peptide, cDNA to CDS, and cDNA to peptide
* the mappings are on the shared alignment dataset
* 6 mappings, 2*(DNA->CDS), 2*(DNA->Pep), 2*(CDS->Pep)
*/
assertEquals(6, cdsMappings.size());
-
+
/*
* verify that mapping sets for dna and cds alignments are different
* [not current behaviour - all mappings are on the alignment dataset]
// Assert.assertNotSame(dna.getCodonFrames(), cds.getCodonFrames());
// assertEquals(4, dna.getCodonFrames().size());
// assertEquals(4, cds.getCodonFrames().size());
-
+
/*
* Two mappings involve pep3 (dna to pep3, cds to pep3)
* Mapping from pep3 to GGGTTT in first new exon sequence
List<AlignedCodonFrame> mappings = MappingUtils
.findMappingsForSequence(cds.getSequenceAt(0), pep3Mappings);
assertEquals(1, mappings.size());
-
+
// map G to GGG
SearchResults sr = MappingUtils.buildSearchResults(pep3, 1, mappings);
assertEquals(1, sr.getResults().size());
assertSame(cds.getSequenceAt(0).getDatasetSequence(), m.getSequence());
assertEquals(4, m.getStart());
assertEquals(6, m.getEnd());
-
+
/*
* Two mappings involve pep4 (dna to pep4, cds to pep4)
* Verify mapping from pep4 to GGGTTTCCC in second new exon sequence
dna4.setSequence(seq2);
AlignmentI al2 = new Alignment(new SequenceI[] { dna3, dna4 });
((Alignment) al2).createDatasetAlignment();
-
+
assertTrue(AlignmentUtils.alignAsSameSequences(al1, al2));
assertEquals(seq1, al1.getSequenceAt(0).getSequenceAsString());
assertEquals(seq2, al1.getSequenceAt(1).getSequenceAsString());
assertEquals(s_as2, uas2.getSequenceAsString());
assertEquals(s_as3, uas3.getSequenceAsString());
}
-
+
}
seq.addDBRef(new DBRefEntry("ENSEMBLGENOMES", "0", "E2350"));
sources = new CrossRef(new SequenceI[] { seq }, al)
.findXrefSourcesForSequences(false);
- assertEquals(4, sources.size());
- assertEquals("[EMBL, EMBLCDS, GENEDB, ENSEMBL]", sources.toString());
+ // method is patched to remove EMBL from the sources to match
+ assertEquals(3, sources.size());
+ assertEquals("[EMBLCDS, GENEDB, ENSEMBL]", sources.toString());
/*
* add a sequence to the alignment which has a dbref to UNIPROT|A1234
al.addSequence(seq2);
sources = new CrossRef(new SequenceI[] { seq, seq2 }, al)
.findXrefSourcesForSequences(false);
- assertEquals(3, sources.size());
- assertEquals("[EMBLCDS, EMBL, GENEDB]", sources.toString());
+ // method removed EMBL from sources to match
+ assertEquals(2, sources.size());
+ assertEquals("[EMBLCDS, GENEDB]", sources.toString());
}
/**
*/
SequenceI dna1 = new Sequence("AF039662", "GGGGCAGCACAAGAAC");
Mapping map = new Mapping(new Sequence("pep2", "MLAVSRG"), new MapList(
- new int[] { 1, 21 }, new int[] {
- 1, 7 }, 3, 1));
+ new int[] { 1, 21 }, new int[] { 1, 7 }, 3, 1));
DBRefEntry dbref = new DBRefEntry("UNIPROT", "0", "Q9ZTS2", map);
dna1.addDBRef(dbref);
dna1.addDBRef(new DBRefEntry("EMBL", "0", "AF039662"));
dbref = new DBRefEntry("UNIPROT", "0", "Q9ZTS2");
found = testee.searchDataset(!dna1.isProtein(), dna1, dbref, result,
acf, false); // search dataset with a protein xref from a dna
- // sequence to locate the protein product
+ // sequence to locate the protein product
assertTrue(found);
assertEquals(1, result.size());
assertSame(pep1, result.get(0));
dbref = new DBRefEntry("UNIPROT", "0", "Q9ZTS2");
found = testee.searchDataset(!pep1.isProtein(), pep1, dbref, result,
acf, false); // search dataset with a protein's direct dbref to
- // locate dna sequences with matching xref
+ // locate dna sequences with matching xref
assertTrue(found);
assertEquals(1, result.size());
assertSame(dna1, result.get(0));
public void testFindXrefSequences_withFetch()
{
SequenceI dna1 = new Sequence("AF039662", "GGGGCAGCACAAGAAC");
- dna1.addDBRef(new DBRefEntry("UNIPROT", "0", "Q9ZTS2"));
- dna1.addDBRef(new DBRefEntry("UNIPROT", "0", "P30419"));
- dna1.addDBRef(new DBRefEntry("UNIPROT", "0", "P00314"));
+ dna1.addDBRef(new DBRefEntry("UNIPROT", "ENA:0", "Q9ZTS2"));
+ dna1.addDBRef(new DBRefEntry("UNIPROT", "ENA:0", "P30419"));
+ dna1.addDBRef(new DBRefEntry("UNIPROT", "ENA:0", "P00314"));
final SequenceI pep1 = new Sequence("Q9ZTS2", "MYQLIRSSW");
+ pep1.addDBRef(new DBRefEntry("UNIPROT", "0", "Q9ZTS2"));
+
final SequenceI pep2 = new Sequence("P00314", "MRKLLAASG");
+ pep2.addDBRef(new DBRefEntry("UNIPROT", "0", "P00314"));
/*
* argument false suppresses adding DAS sources
* 'spliced transcript' with CDS ranges
*/
SequenceI braf002 = new Sequence("ENST00000497784", "gCAGGCtaTCTGTTCaa");
- braf002.addDBRef(new DBRefEntry("UNIPROT", "0", "H7C5K3"));
+ braf002.addDBRef(new DBRefEntry("UNIPROT", "ENSEMBL|0", "H7C5K3"));
braf002.addSequenceFeature(new SequenceFeature("CDS", "", 2, 6, 0f,
null));
braf002.addSequenceFeature(new SequenceFeature("CDS", "", 9, 15, 0f,
* which happens to be true for Uniprot,PDB,EMBL but not Pfam,Rfam,Ensembl
*/
final SequenceI pep1 = new Sequence("UNIPROT|P15056", "MAAL");
+ pep1.addDBRef(new DBRefEntry("UNIPROT", "0", "P15056"));
final SequenceI pep2 = new Sequence("UNIPROT|H7C5K3", "QALF");
-
+ pep2.addDBRef(new DBRefEntry("UNIPROT", "0", "H7C5K3"));
/*
* argument false suppresses adding DAS sources
* todo: define an interface type SequenceFetcherI and mock that
*/
final SequenceI x07547 = new Sequence("EMBL|X07547", "cccAAACCCTTTGGG");
DBRefEntry dbref7 = new DBRefEntry("UNIPROT", "0", "P0CE20");
- dbref7.setMap(new Mapping(new Sequence("UNIPROT|P0CE19", "KPFG"),
+ dbref7.setMap(new Mapping(new Sequence("UNIPROT|P0CE20", "PFGK"),
new MapList(map2)));
x07547.addDBRef(dbref7);
DBRefEntry dbref8 = new DBRefEntry("UNIPROT", "0", "B0BCM4");
String seqDsRev = new StringBuilder(seqDs).reverse().toString();
SequenceI dna = new Sequence("Seq1", seq);
- Alignment al = new Alignment(new SequenceI[] {dna});
+ Alignment al = new Alignment(new SequenceI[] { dna });
al.createDatasetAlignment();
assertEquals(seqDs, al.getSequenceAt(0).getDatasetSequence()
.getSequenceAsString());
Sequence s5 = new Sequence("s5", "AAAADDEDTTEE");
- SequenceGroup sg_12 = new SequenceGroup(Arrays.asList(new SequenceI[] { s1,
- s2 }), "Group1", null, false, false, false, 0, 5);
+ SequenceGroup sg_12 = new SequenceGroup(Arrays.asList(new SequenceI[] {
+ s1, s2 }), "Group1", null, false, false, false, 0, 5);
- SequenceGroup sg_345 = new SequenceGroup(Arrays.asList(new SequenceI[] { s3,
- s4, s5 }), "Group2", null, false, false, false, 0, 5);
+ SequenceGroup sg_345 = new SequenceGroup(Arrays.asList(new SequenceI[] {
+ s3, s4, s5 }), "Group2", null, false, false, false, 0, 5);
AlignmentI alignment = new Alignment(
new SequenceI[] { s1, s2, s3, s4, s5 });
{
String s = String.valueOf((char) i);
String ss = Rna.getRNASecStrucState(s);
-
+
/*
* valid SS chars are a-z, A-Z, and various brackets;
* anything else is returned as a space
assertEquals(" ", ss);
}
}
-
+
/*
* a string is processed character by character
*/
public void testIsRnaSecondaryStructureSymbol()
{
assertFalse(Rna.isRnaSecondaryStructureSymbol(null));
-
+
/*
* only A-Z, a-z, ()[]{}<> are valid symbols
*/
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.analysis;
import static org.testng.AssertJUnit.assertFalse;
{
AlignFrame alf = getTestAlignmentFrame();
FeatureScoreModel fsm = new FeatureScoreModel();
- Assert.assertTrue(fsm.configureFromAlignmentView(alf
- .getCurrentView().getAlignPanel()));
+ Assert.assertTrue(fsm.configureFromAlignmentView(alf.getCurrentView()
+ .getAlignPanel()));
alf.selectAllSequenceMenuItem_actionPerformed(null);
float[][] dm = fsm.findDistances(alf.getViewport().getAlignmentView(
true));
alf.selectAllSequenceMenuItem_actionPerformed(null);
float[][] dm = fsm.findDistances(alf.getViewport().getAlignmentView(
true));
- Assert.assertTrue(dm[0][2] == 0f,
+ Assert.assertTrue(
+ dm[0][2] == 0f,
"After hiding last two columns FER1_MESCR (0) should still be identical with RAPSA (2)");
- Assert.assertTrue(dm[0][1] == 0f,
+ Assert.assertTrue(
+ dm[0][1] == 0f,
"After hiding last two columns FER1_MESCR (0) should now also be identical with SPIOL (1)");
- for (int s=0;s<3;s++)
+ for (int s = 0; s < 3; s++)
{
Assert.assertTrue(dm[s][3] > 0f, "After hiding last two columns "
+ alf.getViewport().getAlignment().getSequenceAt(s).getName()
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.bin;
import static org.testng.AssertJUnit.assertEquals;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.bin;
import static org.testng.AssertJUnit.assertEquals;
public void testReplace()
{
// seem to need a dataset sequence on the edited sequence here
- seqs[1].setDatasetSequence(seqs[1]);
+ seqs[1].createDatasetSequence();
new EditCommand("", Action.REPLACE, "ZXY", new SequenceI[] { seqs[1] },
4, 8, al);
assertEquals("abcdefghjk", seqs[0].getSequenceAsString());
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.controller;
import static org.testng.AssertJUnit.assertEquals;
assertEquals(2, bs.cardinality());
assertTrue(bs.get(1));
assertTrue(bs.get(2));
-
+
/*
* select the first four columns: Metal in seq1 2:4, seq2 4:4
*/
sg.setEndRes(3);
bs.clear();
- seqCount = AlignViewController.findColumnsWithFeature("Metal", sg,
- bs);
+ seqCount = AlignViewController.findColumnsWithFeature("Metal", sg, bs);
assertEquals(2, seqCount);
assertEquals(3, bs.cardinality());
assertTrue(bs.get(1));
seq1.createDatasetSequence();
final Sequence aseq1 = new Sequence("Seq1", "-V-L");
aseq1.createDatasetSequence();
-
+
AlignedCodonFrame acf = new AlignedCodonFrame();
MapList map = new MapList(new int[] { 2, 4, 6, 6, 8, 9 }, new int[] {
1, 2 }, 3, 1);
* - the alignmentI object to verify (either alignment or dataset)
* @param raiseAssert
* - when set, testng assertions are raised.
- * @param message
- * - null or a string message to prepend to the assert failed messages.
+ * @param message
+ * - null or a string message to prepend to the assert failed
+ * messages.
* @return true if alignment references were in order, otherwise false.
*/
public static boolean verifyAlignmentDatasetRefs(AlignmentI alignment,
boolean raiseAssert, String message)
{
- if (message==null) { message = ""; }
+ if (message == null)
+ {
+ message = "";
+ }
if (alignment == null)
{
if (raiseAssert)
{
- Assert.fail(message+"Alignment for verification was null.");
+ Assert.fail(message + "Alignment for verification was null.");
}
return false;
}
{
if (raiseAssert)
{
- Assert.fail(message+" Alignment contained a sequence who's dataset sequence has a second dataset reference.");
+ Assert.fail(message
+ + " Alignment contained a sequence who's dataset sequence has a second dataset reference.");
}
return false;
}
{
if (raiseAssert)
{
- Assert.fail(message+" Alignment contained a sequence who's dataset sequence was not in the dataset.");
+ Assert.fail(message
+ + " Alignment contained a sequence who's dataset sequence was not in the dataset.");
}
return false;
}
}
- return verifyAlignmentDatasetRefs(alignment.getDataset(), raiseAssert, message);
+ return verifyAlignmentDatasetRefs(alignment.getDataset(),
+ raiseAssert, message);
}
else
{
{
if (raiseAssert)
{
- Assert.fail(message+" Dataset contained a sequence with non-null dataset reference (ie not a dataset sequence!)");
+ Assert.fail(message
+ + " Dataset contained a sequence with non-null dataset reference (ie not a dataset sequence!)");
}
return false;
}
{
if (raiseAssert)
{
- Assert.fail(message+" DBRefEntry for sequence in alignment had map to sequence which was not a dataset sequence");
+ Assert.fail(message
+ + " DBRefEntry for sequence in alignment had map to sequence which was not a dataset sequence");
}
return false;
{
if (raiseAssert)
{
- Assert.fail(message+" DBRefEntry for sequence in alignment had map to sequence not in dataset");
+ Assert.fail(message
+ + " DBRefEntry for sequence in alignment had map to sequence not in dataset");
}
return false;
}
{
if (raiseAssert)
{
- Assert.fail(message+" CodonFrame-SSM-FromSeq is not a dataset sequence");
+ Assert.fail(message
+ + " CodonFrame-SSM-FromSeq is not a dataset sequence");
}
return false;
}
if (raiseAssert)
{
- Assert.fail(message+" CodonFrame-SSM-FromSeq is not contained in dataset");
+ Assert.fail(message
+ + " CodonFrame-SSM-FromSeq is not contained in dataset");
}
return false;
}
{
if (raiseAssert)
{
- Assert.fail(message+" CodonFrame-SSM-Mapping-ToSeq is not a dataset sequence");
+ Assert.fail(message
+ + " CodonFrame-SSM-Mapping-ToSeq is not a dataset sequence");
}
return false;
}
if (raiseAssert)
{
- Assert.fail(message+" CodonFrame-SSM-Mapping-ToSeq is not contained in dataset");
+ Assert.fail(message
+ + " CodonFrame-SSM-Mapping-ToSeq is not contained in dataset");
}
return false;
}
+ msg);
}
}
+
@Test(groups = { "Functional" })
public void testVerifyAlignmentDatasetRefs()
{
"TTTTTT");
// construct simple valid alignment dataset
- Alignment al = new Alignment(new SequenceI[] {
- sq1, sq2 });
+ Alignment al = new Alignment(new SequenceI[] { sq1, sq2 });
// expect this to pass
assertVerifyAlignment(al, true, "Simple valid alignment didn't verify");
// check test for sequence->datasetSequence validity
sq1.setDatasetSequence(sq2);
- assertVerifyAlignment(
- al,
- false,
+ assertVerifyAlignment(al, false,
"didn't detect dataset sequence with a dataset sequence reference.");
sq1.setDatasetSequence(null);
*/
public static void assertDatasetIsNormalised(AlignmentI al, String message)
{
- if (al.getDataset()!=null)
+ if (al.getDataset() != null)
{
assertDatasetIsNormalised(al.getDataset(), message);
return;
* look for pairs of sequences with same ID, start, end, and sequence
*/
List<SequenceI> seqSet = al.getSequences();
- for (int p=0;p<seqSet.size(); p++)
+ for (int p = 0; p < seqSet.size(); p++)
{
SequenceI pSeq = seqSet.get(p);
- for (int q=p+1; q<seqSet.size(); q++)
+ for (int q = p + 1; q < seqSet.size(); q++)
{
SequenceI qSeq = seqSet.get(q);
- if (pSeq.getStart()!=qSeq.getStart())
+ if (pSeq.getStart() != qSeq.getStart())
{
continue;
}
- if (pSeq.getEnd()!=qSeq.getEnd())
+ if (pSeq.getEnd() != qSeq.getEnd())
{
continue;
}
}
}
}
-
+
@Test(groups = { "Functional", "Asserts" })
public void testAssertDatasetIsNormalised()
{
Assert.fail("Expected identical sequence to raise exception.");
}
}
+
/*
* Read in Stockholm format test data including secondary structure
* annotations.
assertAlignmentDatasetRefs(align,
"addSequence broke dataset reference integrity");
}
+
@Test(groups = "Functional")
public void getVisibleStartAndEndIndexTest()
{
assertEquals(23, startEnd[1]);
}
+ /**
+ * Tests that dbrefs with mappings to sequence get updated if the sequence
+ * acquires a dataset sequence
+ */
+ @Test(groups = "Functional")
+ public void testCreateDataset_updateDbrefMappings()
+ {
+ SequenceI pep = new Sequence("pep", "ASD");
+ SequenceI dna = new Sequence("dna", "aaaGCCTCGGATggg");
+ SequenceI cds = new Sequence("cds", "GCCTCGGAT");
+
+ // add dbref from dna to peptide
+ DBRefEntry dbr = new DBRefEntry("UNIPROT", "", "pep");
+ dbr.setMap(new Mapping(pep, new MapList(new int[] { 4, 15 }, new int[] {
+ 1, 4 }, 3, 1)));
+ dna.addDBRef(dbr);
+
+ // add dbref from dna to peptide
+ DBRefEntry dbr2 = new DBRefEntry("UNIPROT", "", "pep");
+ dbr2.setMap(new Mapping(pep, new MapList(new int[] { 1, 12 }, new int[]
+ { 1, 4 }, 3, 1)));
+ cds.addDBRef(dbr2);
+
+ // add dbref from peptide to dna
+ DBRefEntry dbr3 = new DBRefEntry("EMBL", "", "dna");
+ dbr3.setMap(new Mapping(dna, new MapList(new int[] { 1, 4 }, new int[] {
+ 4, 15 }, 1, 3)));
+ pep.addDBRef(dbr3);
+
+ // add dbref from peptide to cds
+ DBRefEntry dbr4 = new DBRefEntry("EMBLCDS", "", "cds");
+ dbr4.setMap(new Mapping(cds, new MapList(new int[] { 1, 4 }, new int[] {
+ 1, 12 }, 1, 3)));
+ pep.addDBRef(dbr4);
+
+ AlignmentI protein = new Alignment(new SequenceI[] { pep });
+
+ /*
+ * create the alignment dataset
+ */
+ ((Alignment) protein).createDatasetAlignment();
+
+ AlignmentI ds = protein.getDataset();
+
+ // should be 3 sequences in dataset
+ assertEquals(3, ds.getHeight());
+ assertTrue(ds.getSequences().contains(pep.getDatasetSequence()));
+ assertTrue(ds.getSequences().contains(dna));
+ assertTrue(ds.getSequences().contains(cds));
+
+ /*
+ * verify peptide.cdsdbref.peptidedbref is now mapped to peptide dataset
+ */
+ DBRefEntry[] dbRefs = pep.getDBRefs();
+ assertEquals(2, dbRefs.length);
+ assertSame(dna, dbRefs[0].map.to);
+ assertSame(cds, dbRefs[1].map.to);
+ assertEquals(1, dna.getDBRefs().length);
+ assertSame(pep.getDatasetSequence(), dna.getDBRefs()[0].map.to);
+ assertEquals(1, cds.getDBRefs().length);
+ assertSame(pep.getDatasetSequence(), cds.getDBRefs()[0].map.to);
+ }
+
}
}
- @Test(groups={"Functional"})
+ @Test(groups = { "Functional" })
public void testLocateVisibleBoundsPathologicals()
{
// test some pathological cases we missed
- AlignmentI al = new Alignment(new SequenceI[] { new Sequence("refseqGaptest","KTDVTI----------NFI-----G----L")});
+ AlignmentI al = new Alignment(new SequenceI[] { new Sequence(
+ "refseqGaptest", "KTDVTI----------NFI-----G----L") });
ColumnSelection cs = new ColumnSelection();
cs.hideInsertionsFor(al.getSequenceAt(0));
assertEquals(
+ al.getSequenceAt(0).getCharAt(
cs.adjustForHiddenColumns(9)));
-
}
+
@Test(groups = { "Functional" })
public void testHideColumns()
{
cs.addElement(1);
cs.hideColumns(3);
cs.hideColumns(7);
- cs.hideColumns(5,9);
+ cs.hideColumns(5, 9);
// same selections added in a different order
ColumnSelection cs2 = new ColumnSelection();
cs2.hideColumns(6, 9);
cs2.hideColumns(5, 8);
cs2.hideColumns(3);
-
+
assertTrue(cs.equals(cs2));
assertTrue(cs.equals(cs));
assertTrue(cs2.equals(cs));
assertTrue(ref1.updateFrom(ref2));
assertEquals("UNIPROT", ref1.getSource()); // unchanged
assertEquals("V71633", ref1.getAccessionId()); // unchanged
-
+
/*
* ref1 has no mapping, acquires mapping from ref2
*/
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.datamodel;
import static org.testng.AssertJUnit.assertEquals;
static int SEQ_COUNT = 10;
SequenceI[] seqs;
-
+
/**
* Set up an alignment of 10 sequences
*/
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.datamodel;
import static org.testng.AssertJUnit.assertEquals;
sr2.addResult(seq1, 6, 8);
assertEquals(sr1.hashCode(), sr2.hashCode());
}
-
+
/**
* Verify that SearchResults$Match constructor normalises start/end to the
* 'forwards' direction
}
}
}
+
/*
* refactored 'as is' from main method
*
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.datamodel;
import static org.testng.AssertJUnit.assertEquals;
public void testIsProtein()
{
// test Protein
- assertTrue(new Sequence("prot","ASDFASDFASDF").isProtein());
+ assertTrue(new Sequence("prot", "ASDFASDFASDF").isProtein());
// test DNA
- assertFalse(new Sequence("prot","ACGTACGTACGT").isProtein());
+ assertFalse(new Sequence("prot", "ACGTACGTACGT").isProtein());
// test RNA
- SequenceI sq = new Sequence("prot","ACGUACGUACGU");
+ SequenceI sq = new Sequence("prot", "ACGUACGUACGU");
assertFalse(sq.isProtein());
// change sequence, should trigger an update of cached result
sq.setSequence("ASDFASDFADSF");
assertEquals(1, sfs.length);
assertSame(sf, sfs[0]);
-
/*
* SequenceFeature on sequence and dataset sequence; returns that on
* sequence
* is there a usecase for this ? setDatasetSequence should throw an error if
* this actually occurs.
*/
- sq.getDatasetSequence().setDatasetSequence(sq); // loop!
+ try
+ {
+ sq.getDatasetSequence().setDatasetSequence(sq); // loop!
+ Assert.fail("Expected Error to be raised when calling setDatasetSequence with self reference");
+ } catch (IllegalArgumentException e)
+ {
+ // TODO Jalview error/exception class for raising implementation errors
+ assertTrue(e.getMessage().toLowerCase()
+ .contains("implementation error"));
+ }
assertNull(sq.getSequenceFeatures());
}
@Test(groups = { "Functional" })
public void testCreateDatasetSequence()
{
- SequenceI sq = new Sequence("my","ASDASD");
+ SequenceI sq = new Sequence("my", "ASDASD");
assertNull(sq.getDatasetSequence());
SequenceI rds = sq.createDatasetSequence();
assertNotNull(rds);
sq.addPDBId(new PDBEntry("1PDB", "B", Type.PDB, "filePath/test1"));
sq.addPDBId(new PDBEntry("2PDB", "A", Type.MMCIF, "filePath/test2"));
sq.addPDBId(new PDBEntry("2PDB", "B", Type.MMCIF, "filePath/test2"));
-
+
+ // these are the same as ones already added
DBRefEntry pdb1pdb = new DBRefEntry("PDB", "version1", "1PDB");
- DBRefEntry pdb2pdb = new DBRefEntry("PDB", "version1", "2PDB");
+ DBRefEntry pdb2pdb = new DBRefEntry("PDB", "version2", "2PDB");
-
List<DBRefEntry> primRefs = Arrays.asList(new DBRefEntry[] { pdb1pdb,
pdb2pdb });
- sq.getDatasetSequence().addDBRef(pdb1pdb);
- sq.getDatasetSequence().addDBRef(pdb2pdb);
+ sq.getDatasetSequence().addDBRef(pdb1pdb); // should do nothing
+ sq.getDatasetSequence().addDBRef(pdb2pdb); // should do nothing
sq.getDatasetSequence().addDBRef(
- new DBRefEntry("PDB", "version3", "3PDB"));
+ new DBRefEntry("PDB", "version3", "3PDB")); // should do nothing
sq.getDatasetSequence().addDBRef(
- new DBRefEntry("PDB", "version4", "4PDB"));
-
- PDBEntry pdbe1a=new PDBEntry("1PDB", "A", Type.PDB, "filePath/test1");
+ new DBRefEntry("PDB", "version4", "4PDB")); // should do nothing
+
+ PDBEntry pdbe1a = new PDBEntry("1PDB", "A", Type.PDB, "filePath/test1");
PDBEntry pdbe1b = new PDBEntry("1PDB", "B", Type.PDB, "filePath/test1");
- PDBEntry pdbe2a=new PDBEntry("2PDB", "A", Type.MMCIF, "filePath/test2");
- PDBEntry pdbe2b = new PDBEntry("2PDB", "B", Type.MMCIF, "filePath/test2");
- sq.getDatasetSequence().addPDBId(
- pdbe1a);
- sq.getDatasetSequence().addPDBId(
- pdbe1b);
+ PDBEntry pdbe2a = new PDBEntry("2PDB", "A", Type.MMCIF,
+ "filePath/test2");
+ PDBEntry pdbe2b = new PDBEntry("2PDB", "B", Type.MMCIF,
+ "filePath/test2");
+ sq.getDatasetSequence().addPDBId(pdbe1a);
+ sq.getDatasetSequence().addPDBId(pdbe1b);
sq.getDatasetSequence().addPDBId(pdbe2a);
sq.getDatasetSequence().addPDBId(pdbe2b);
new AlignmentAnnotation("Test annot", "Test annot description",
annots));
Assert.assertEquals(sq.getDescription(), "Test sequence description..");
- Assert.assertEquals(sq.getDBRefs().length, 5);
+ Assert.assertEquals(sq.getDBRefs().length, 5); // DBRefs are on dataset
+ // sequence
Assert.assertEquals(sq.getAllPDBEntries().size(), 4);
Assert.assertNotNull(sq.getAnnotation());
Assert.assertEquals(sq.getAnnotation()[0].annotations.length, 2);
- Assert.assertEquals(sq.getDatasetSequence().getDBRefs().length, 4);
+ Assert.assertEquals(sq.getDatasetSequence().getDBRefs().length, 5); // same
+ // as
+ // sq.getDBRefs()
Assert.assertEquals(sq.getDatasetSequence().getAllPDBEntries().size(),
4);
Assert.assertNotNull(sq.getDatasetSequence().getAnnotation());
Assert.assertEquals(derived.getDescription(),
"Test sequence description..");
- Assert.assertEquals(derived.getDBRefs().length, 4); // come from dataset
+ Assert.assertEquals(derived.getDBRefs().length, 5); // come from dataset
Assert.assertEquals(derived.getAllPDBEntries().size(), 4);
Assert.assertNotNull(derived.getAnnotation());
Assert.assertEquals(derived.getAnnotation()[0].annotations.length, 2);
- Assert.assertEquals(derived.getDatasetSequence().getDBRefs().length, 4);
+ Assert.assertEquals(derived.getDatasetSequence().getDBRefs().length, 5);
Assert.assertEquals(derived.getDatasetSequence().getAllPDBEntries()
.size(), 4);
Assert.assertNotNull(derived.getDatasetSequence().getAnnotation());
assertNotNull(sq.getSequenceFeatures());
assertArrayEquals(sq.getSequenceFeatures(),
derived.getSequenceFeatures());
-
+
/*
* verify we have primary db refs *just* for PDB IDs with associated
* PDBEntry objects
12.4f, "group"));
seq1.addPDBId(new PDBEntry("1A70", "B", Type.PDB, "File"));
seq1.addDBRef(new DBRefEntry("EMBL", "1.2", "AZ12345"));
-
+
SequenceI copy = new Sequence(seq1);
assertNull(copy.getDatasetSequence());
// copy has a copy of the sequence feature:
SequenceFeature[] sfs = copy.getSequenceFeatures();
assertEquals(1, sfs.length);
- if (seq1.getDatasetSequence()!=null && copy.getDatasetSequence()==seq1.getDatasetSequence()) {
+ if (seq1.getDatasetSequence() != null
+ && copy.getDatasetSequence() == seq1.getDatasetSequence())
+ {
assertTrue(sfs[0] == seq1.getSequenceFeatures()[0]);
- } else {
+ }
+ else
+ {
assertFalse(sfs[0] == seq1.getSequenceFeatures()[0]);
}
assertTrue(sfs[0].equals(seq1.getSequenceFeatures()[0]));
public void testGetPrimaryDBRefs_nucleotide()
{
SequenceI sq = new Sequence("aseq", "TGATCACTCGACTAGCATCAGCATA", 10, 34);
-
+
// primary - Ensembl
DBRefEntry dbr1 = new DBRefEntry("ENSEMBL", "0", "ENSG1234");
sq.addDBRef(dbr1);
-
+
// not primary - Ensembl 'transcript' mapping of sub-sequence
DBRefEntry dbr2 = new DBRefEntry("ENSEMBL", "0", "ENST1234");
dbr2.setMap(new Mapping(null, new MapList(new int[] { 15, 25 },
// not primary - to protein
DBRefEntry dbr5 = new DBRefEntry("UNIPROT", "0", "Q87654");
sq.addDBRef(dbr5);
-
+
List<DBRefEntry> primaryDBRefs = sq.getPrimaryDBRefs();
assertEquals(2, primaryDBRefs.size());
assertTrue(primaryDBRefs.contains(dbr1));
seq.addDBRef(new DBRefEntry("PDB", "0", "3a6sB"));
// 7 is not a valid chain code:
seq.addDBRef(new DBRefEntry("PDB", "0", "2GIS7"));
-
+
seq.updatePDBIds();
List<PDBEntry> pdbIds = seq.getAllPDBEntries();
assertEquals(4, pdbIds.size());
assertEquals(4, seq.getAllPDBEntries().size());
assertSame(pdbe5, seq.getAllPDBEntries().get(3));
}
+
+ @Test(
+ groups = { "Functional" },
+ expectedExceptions = { IllegalArgumentException.class })
+ public void testSetDatasetSequence_toSelf()
+ {
+ seq.setDatasetSequence(seq);
+ }
+
+ @Test(
+ groups = { "Functional" },
+ expectedExceptions = { IllegalArgumentException.class })
+ public void testSetDatasetSequence_cascading()
+ {
+ SequenceI seq2 = new Sequence("Seq2", "xyz");
+ seq2.createDatasetSequence();
+ seq.setDatasetSequence(seq2);
+ }
}
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.datamodel.xdb.embl;
import static org.testng.AssertJUnit.assertEquals;
// truncate last exon by 6bp
int[] truncated = EmblEntry.adjustForProteinLength(4, exons);
- assertEquals("[11, 15, 21, 25, 31, 32]",
- Arrays.toString(truncated));
+ assertEquals("[11, 15, 21, 25, 31, 32]", Arrays.toString(truncated));
// remove last exon and truncate preceding by 1bp
truncated = EmblEntry.adjustForProteinLength(3, exons);
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.datamodel.xdb.embl;
import java.io.StringReader;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import static org.testng.AssertJUnit.assertEquals;
{
SequenceOntologyFactory.setInstance(null);
}
+
/**
* Test that the cdna part of genomic sequence is correctly identified by
* 'exon' features (or subtypes) - reverse strand case.
genomic.setStart(10000);
genomic.setEnd(50000);
String transcriptId = "ABC123";
-
+
// exon at (start+10000) length 501
SequenceFeature sf = new SequenceFeature("exon", "", 20000, 20500, 0f,
null);
sf.setValue("Parent", "transcript:" + transcriptId);
sf.setStrand("+");
genomic.addSequenceFeature(sf);
-
+
// exon (sub-type) at (start + exon_variant) length 101
sf = new SequenceFeature("coding_exon", "", 10500, 10600, 0f, null);
sf.setValue("Parent", "transcript:" + transcriptId);
sf.setStrand("+");
genomic.addSequenceFeature(sf);
-
+
// exon belonging to a different transcript doesn't count
sf = new SequenceFeature("exon", "", 11500, 12600, 0f, null);
sf.setValue("Parent", "transcript:anotherOne");
genomic.addSequenceFeature(sf);
-
+
// transcript feature doesn't count
sf = new SequenceFeature("transcript", "", 10000, 50000, 0f, null);
sf.setStrand("-"); // weird but ignored
genomic.addSequenceFeature(sf);
-
+
MapList ranges = testee.getGenomicRangesFromFeatures(genomic,
transcriptId, 23);
List<int[]> fromRanges = ranges.getFromRanges();
genomic.setStart(10000);
genomic.setEnd(50000);
String transcriptId = "ABC123";
-
+
SequenceFeature sf = new SequenceFeature("exon", "", 20000, 20500, 0f,
null);
sf.setValue("Parent", "transcript:" + transcriptId);
sf.setStrand("-");
genomic.addSequenceFeature(sf);
-
+
sf = new SequenceFeature("coding_exon", "", 10500, 10600, 0f, null);
sf.setValue("Parent", "transcript:" + transcriptId);
sf.setStrand("+");
genomic.addSequenceFeature(sf);
-
+
MapList ranges = testee.getGenomicRangesFromFeatures(genomic,
transcriptId, 23);
assertNull(ranges);
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import static org.testng.AssertJUnit.assertEquals;
genomic.setStart(10000);
genomic.setEnd(50000);
String transcriptId = "ABC123";
-
+
// CDS at (start+10000) length 501
SequenceFeature sf = new SequenceFeature("CDS", "", 20000, 20500, 0f,
null);
sf.setValue("Parent", "transcript:" + transcriptId);
sf.setStrand("+");
genomic.addSequenceFeature(sf);
-
+
// CDS (sub-type) at (start + 10500) length 101
sf = new SequenceFeature("CDS_predicted", "", 10500, 10600, 0f, null);
sf.setValue("Parent", "transcript:" + transcriptId);
sf.setStrand("+");
genomic.addSequenceFeature(sf);
-
+
// CDS belonging to a different transcript doesn't count
sf = new SequenceFeature("CDS", "", 11500, 12600, 0f, null);
sf.setValue("Parent", "transcript:anotherOne");
genomic.addSequenceFeature(sf);
-
+
// exon feature doesn't count
sf = new SequenceFeature("exon", "", 10000, 50000, 0f, null);
genomic.addSequenceFeature(sf);
// mRNA_region feature doesn't count (parent of CDS)
sf = new SequenceFeature("mRNA_region", "", 10000, 50000, 0f, null);
genomic.addSequenceFeature(sf);
-
+
MapList ranges = testee.getGenomicRangesFromFeatures(genomic,
transcriptId, 23);
List<int[]> fromRanges = ranges.getFromRanges();
{
String accId = "ABC123";
EnsemblCds testee = new EnsemblCds();
-
- SequenceFeature sf = new SequenceFeature("CDS", "", 20000,
- 20500, 0f, null);
+
+ SequenceFeature sf = new SequenceFeature("CDS", "", 20000, 20500, 0f,
+ null);
assertFalse(testee.retainFeature(sf, accId));
-
+
sf.setType("CDS_predicted");
assertFalse(testee.retainFeature(sf, accId));
-
+
// other feature with no parent is retained
sf.setType("sequence_variant");
assertTrue(testee.retainFeature(sf, accId));
-
+
// other feature with desired parent is retained
sf.setValue("Parent", "transcript:" + accId);
assertTrue(testee.retainFeature(sf, accId));
-
+
// feature with wrong parent is not retained
sf.setValue("Parent", "transcript:XYZ");
assertFalse(testee.retainFeature(sf, accId));
{
String accId = "ABC123";
EnsemblCds testee = new EnsemblCds();
-
+
// cds with no parent not valid
SequenceFeature sf = new SequenceFeature("CDS", "", 1, 2, 0f, null);
assertFalse(testee.identifiesSequence(sf, accId));
-
+
// cds with wrong parent not valid
sf.setValue("Parent", "transcript:XYZ");
assertFalse(testee.identifiesSequence(sf, accId));
-
+
// cds with right parent is valid
sf.setValue("Parent", "transcript:" + accId);
assertTrue(testee.identifiesSequence(sf, accId));
-
+
// cds sub-type with right parent is valid
sf.setType("CDS_predicted");
assertTrue(testee.identifiesSequence(sf, accId));
-
+
// transcript not valid:
sf.setType("transcript");
assertFalse(testee.identifiesSequence(sf, accId));
-
+
// exon not valid:
sf.setType("exon");
assertFalse(testee.identifiesSequence(sf, accId));
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import static org.testng.AssertJUnit.assertEquals;
genomic.addSequenceFeature(sf1);
// transcript sub-type feature
- SequenceFeature sf2 = new SequenceFeature("snRNA", "", 20000,
- 20500, 0f, null);
+ SequenceFeature sf2 = new SequenceFeature("snRNA", "", 20000, 20500,
+ 0f, null);
sf2.setValue("Parent", "gene:" + geneId);
sf2.setValue("transcript_id", "transcript2");
genomic.addSequenceFeature(sf2);
{
String geneId = "ABC123";
EnsemblGene testee = new EnsemblGene();
- SequenceFeature sf = new SequenceFeature("gene", "", 20000,
- 20500, 0f, null);
+ SequenceFeature sf = new SequenceFeature("gene", "", 20000, 20500, 0f,
+ null);
sf.setValue("ID", "gene:" + geneId);
assertFalse(testee.retainFeature(sf, geneId));
{
String accId = "ABC123";
EnsemblGene testee = new EnsemblGene();
-
+
// gene with no ID not valid
SequenceFeature sf = new SequenceFeature("gene", "", 1, 2, 0f, null);
assertFalse(testee.identifiesSequence(sf, accId));
-
+
// gene with wrong ID not valid
sf.setValue("ID", "gene:XYZ");
assertFalse(testee.identifiesSequence(sf, accId));
-
+
// gene with right ID is valid
sf.setValue("ID", "gene:" + accId);
assertTrue(testee.identifiesSequence(sf, accId));
-
+
// gene sub-type with right ID is valid
sf.setType("snRNA_gene");
assertTrue(testee.identifiesSequence(sf, accId));
-
+
// transcript not valid:
sf.setType("transcript");
assertFalse(testee.identifiesSequence(sf, accId));
-
+
// exon not valid:
sf.setType("exon");
assertFalse(testee.identifiesSequence(sf, accId));
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import static org.testng.AssertJUnit.assertEquals;
genomic.setStart(10000);
genomic.setEnd(50000);
String transcriptId = "ABC123";
-
+
// transcript at (start+10000) length 501
SequenceFeature sf = new SequenceFeature("transcript", "", 20000,
- 20500, 0f,
- null);
+ 20500, 0f, null);
sf.setValue("ID", "transcript:" + transcriptId);
sf.setStrand("+");
genomic.addSequenceFeature(sf);
-
+
// transcript (sub-type) at (start + 10500) length 101
sf = new SequenceFeature("ncRNA", "", 10500, 10600, 0f, null);
sf.setValue("ID", "transcript:" + transcriptId);
sf.setValue("ID", "transcript:" + transcriptId);
sf.setStrand("+");
genomic.addSequenceFeature(sf);
-
+
// transcript with a different ID doesn't count
sf = new SequenceFeature("transcript", "", 11500, 12600, 0f, null);
sf.setValue("ID", "transcript:anotherOne");
genomic.addSequenceFeature(sf);
-
+
// parent of transcript feature doesn't count
sf = new SequenceFeature("gene_member_region", "", 10000, 50000, 0f,
null);
SequenceFeature sf = new SequenceFeature("transcript", "", 20000,
20500, 0f, null);
assertFalse(testee.retainFeature(sf, accId));
-
+
sf.setType("mature_transcript");
assertFalse(testee.retainFeature(sf, accId));
-
+
sf.setType("NMD_transcript_variant");
assertFalse(testee.retainFeature(sf, accId));
-
+
// other feature with no parent is kept
sf.setType("anything");
assertTrue(testee.retainFeature(sf, accId));
{
String accId = "ABC123";
EnsemblGenome testee = new EnsemblGenome();
-
+
// transcript with no ID not valid
SequenceFeature sf = new SequenceFeature("transcript", "", 1, 2, 0f,
null);
assertFalse(testee.identifiesSequence(sf, accId));
-
+
// transcript with wrong ID not valid
sf.setValue("ID", "transcript");
assertFalse(testee.identifiesSequence(sf, accId));
-
+
// transcript with right ID is valid
sf.setValue("ID", "transcript:" + accId);
assertTrue(testee.identifiesSequence(sf, accId));
-
+
// transcript sub-type with right ID is valid
sf.setType("ncRNA");
assertTrue(testee.identifiesSequence(sf, accId));
// Ensembl treats NMD_transcript_variant as if a transcript
sf.setType("NMD_transcript_variant");
assertTrue(testee.identifiesSequence(sf, accId));
-
+
// gene not valid:
sf.setType("gene");
assertFalse(testee.identifiesSequence(sf, accId));
-
+
// exon not valid:
sf.setType("exon");
assertFalse(testee.identifiesSequence(sf, accId));
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import static org.testng.AssertJUnit.assertEquals;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.datamodel.AlignmentI;
{
EnsemblRestClient sf = new EnsemblRestClient()
{
-
+
@Override
public String getDbName()
{
return null;
}
-
+
@Override
public AlignmentI getSequenceRecords(String queries) throws Exception
{
return null;
}
-
+
@Override
protected URL getUrl(List<String> ids) throws MalformedURLException
{
return null;
}
-
+
@Override
protected boolean useGetRequest()
{
return false;
}
-
+
@Override
protected String getRequestMimeType(boolean b)
{
return null;
}
-
+
@Override
protected String getResponseMimeType()
{
return null;
}
-
+
};
boolean isAvailable = sf.isEnsemblAvailable();
if (isAvailable)
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import jalview.datamodel.SequenceFeature;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import static org.testng.AssertJUnit.assertEquals;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
-
public class EnsemblSeqProxyTest
{
private static final Object[][] allSeqs = new Object[][] {
}
@Test(dataProvider = "ens_seqs", suiteName = "live")
- public void testGetOneSeqs(EnsemblRestClient proxy, String sq, String fastasq)
- throws Exception
+ public void testGetOneSeqs(EnsemblRestClient proxy, String sq,
+ String fastasq) throws Exception
{
FileParse fp = proxy.getSequenceReader(Arrays
- .asList(new String[]
- { sq }));
+ .asList(new String[] { sq }));
SequenceI[] sqs = new FastaFile(fp).getSeqsAsArray();
FastaFile trueRes = new FastaFile(fastasq, AppletFormatAdapter.PASTE);
SequenceI[] trueSqs = trueRes.getSeqsAsArray();
"Sequences differ for " + tr.getName() + "\n" + "Exp:"
+ tr.getSequenceAsString() + "\n" + "Got:"
+ rseq[0].getSequenceAsString());
-
+
}
}
EnsemblSeqProxy.sortFeatures(sfs, false);
assertArrayEquals(new SequenceFeature[] { sf1, sf3, sf2, sf4 }, sfs);
}
-}
\ No newline at end of file
+}
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.ensembl;
import static org.testng.AssertJUnit.assertEquals;
-/**
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
*
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.ext.htsjdk;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.jmol;
import jalview.datamodel.Alignment;
public void testParse_missingResidues() throws Exception
{
PDBfile mctest = new PDBfile(false, false, false,
- pastePDBDataWithChainBreak,
- AppletFormatAdapter.PASTE);
+ pastePDBDataWithChainBreak, AppletFormatAdapter.PASTE);
JmolParser jtest = new JmolParser(pastePDBDataWithChainBreak,
AppletFormatAdapter.PASTE);
Vector<SequenceI> seqs = jtest.getSeqs();
AppletFormatAdapter.PASTE);
Vector<SequenceI> seqs = jtest.getSeqs();
Vector<SequenceI> mcseqs = mctest.getSeqs();
-
+
assertEquals("Failed to find 1 sequence\n", 1, seqs.size());
assertEquals("Failed to find 1 sequence\n", 1, mcseqs.size());
assertEquals("ALC", seqs.get(0).getSequenceAsString());
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.jmol;
import jalview.datamodel.SequenceI;
{
try
{
- String testSeq = mcseqs.remove(0).getSequenceAsString();
+ String testSeq = mcseqs.remove(0).getSequenceAsString();
if (!sq.getSequenceAsString().equals(testSeq))
- {
- ++totalFail;
+ {
+ ++totalFail;
System.err.println("Test Failed for " + pdbStr + ". Diff:");
- System.err.println(sq.getSequenceAsString());
- System.err.println(testSeq);
- failedFiles.add(pdbStr);
- }
+ System.err.println(sq.getSequenceAsString());
+ System.err.println(testSeq);
+ failedFiles.add(pdbStr);
+ }
++totalSeqScanned;
} catch (Exception e)
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ext.so;
import static org.testng.AssertJUnit.assertFalse;
private SequenceOntologyI so;
@BeforeClass(alwaysRun = true)
- public void setUp() {
+ public void setUp()
+ {
long now = System.currentTimeMillis();
try
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.fts.core;
import jalview.fts.api.FTSDataColumnI;
@Test(groups = { "Functional" })
public void getAllDefaulDisplayedDataColumns()
{
- Assert.assertNotNull(ftsRestClient.getAllDefaultDisplayedFTSDataColumns());
+ Assert.assertNotNull(ftsRestClient
+ .getAllDefaultDisplayedFTSDataColumns());
Assert.assertTrue(!ftsRestClient.getAllDefaultDisplayedFTSDataColumns()
.isEmpty());
- Assert.assertEquals(ftsRestClient.getAllDefaultDisplayedFTSDataColumns()
- .size(), 7);
+ Assert.assertEquals(ftsRestClient
+ .getAllDefaultDisplayedFTSDataColumns().size(), 7);
}
@Test(groups = { "Functional" })
"id,entry name,protein names,genes,organism,reviewed,length");
}
-
@Test(groups = { "Functional" })
public void getAllFTSDataColumns()
{
{
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("molecule_type"));
- wantedFields
-.add(PDBFTSRestClient.getInstance()
+ wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("pdb_id"));
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("genus"));
- wantedFields
-.add(PDBFTSRestClient.getInstance()
+ wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("gene_name"));
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("title"));
{
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("molecule_type"));
- wantedFields
-.add(PDBFTSRestClient.getInstance()
+ wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("pdb_id"));
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("genus"));
- wantedFields
-.add(PDBFTSRestClient.getInstance()
+ wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("gene_name"));
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("title"));
{
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("molecule_type"));
- wantedFields
-.add(PDBFTSRestClient.getInstance()
+ wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("pdb_id"));
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("genus"));
- wantedFields
-.add(PDBFTSRestClient.getInstance()
+ wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("gene_name"));
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("title"));
assertEquals(expectedErrorMsg, parsedErrorResponse);
}
- @Test(
- groups = { "External" },
- expectedExceptions = Exception.class)
+ @Test(groups = { "External" }, expectedExceptions = Exception.class)
public void testForExpectedRuntimeException() throws Exception
{
List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
PDBFTSRestClient.getInstance().executeRequest(request);
}
- // JBP: Is this actually external ? Looks like it is mocked
+ // JBP: Is this actually external ? Looks like it is mocked
@Test(groups = { "External" })
public void parsePDBJsonResponseTest()
{
{
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("molecule_type"));
- wantedFields
-.add(PDBFTSRestClient.getInstance()
+ wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("pdb_id"));
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("genus"));
- wantedFields
-.add(PDBFTSRestClient.getInstance()
+ wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("gene_name"));
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("title"));
.getDataColumnByNameOrCode("molecule_type"));
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("genus"));
- wantedFields
-.add(PDBFTSRestClient.getInstance()
+ wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("gene_name"));
wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("title"));
- wantedFields
-.add(PDBFTSRestClient.getInstance()
+ wantedFields.add(PDBFTSRestClient.getInstance()
.getDataColumnByNameOrCode("pdb_id"));
} catch (Exception e)
{
}
try
{
- assertEquals(5,
- PDBFTSRestClient.getInstance()
+ assertEquals(5, PDBFTSRestClient.getInstance()
.getPrimaryKeyColumIndex(wantedFields, true));
- assertEquals(4,
- PDBFTSRestClient.getInstance()
+ assertEquals(4, PDBFTSRestClient.getInstance()
.getPrimaryKeyColumIndex(wantedFields, false));
} catch (Exception e)
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.gui;
import static org.testng.AssertJUnit.assertEquals;
* [1-3], [6-8] base zero
*/
assertTrue(af.hideFeatureColumns("Turn", true));
- hidden = af.getViewport().getColumnSelection()
- .getHiddenColumns();
+ hidden = af.getViewport().getColumnSelection().getHiddenColumns();
assertEquals(2, hidden.size());
assertEquals(1, hidden.get(0)[0]);
assertEquals(3, hidden.get(0)[1]);
assertTrue(ssmMappings.contains(acf2));
assertFalse(ssmMappings.contains(acf3));
}
-
+
/**
* Test for JAL-1306 - conservation thread should run even when only Quality
* (and not Conservation) is enabled in Preferences
Boolean.FALSE.toString());
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
"examples/uniref50.fa", FormatAdapter.FILE);
- AlignmentAnnotation[] anns = af.viewport.getAlignment().getAlignmentAnnotation();
+ AlignmentAnnotation[] anns = af.viewport.getAlignment()
+ .getAlignmentAnnotation();
assertNotNull("No annotations found", anns);
assertEquals("More than one annotation found", 1, anns.length);
assertTrue("Annotation is not Quality",
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.gui;
/*
{
logEvent("Mouse clicked", e);
}
-}
\ No newline at end of file
+}
{
seq = new Sequence("PDB|4kqy|4KQY|A", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 1,
26);
- seq.setDatasetSequence(seq);
+ seq.createDatasetSequence();
for (int x = 1; x < 5; x++)
{
DBRefEntry dbRef = new DBRefEntry();
{
for (int q = p + 1; q < avec.length; q++)
{
- assertTrue("Found a duplicate annotation row "
- + avec[p].label, avec[p] != avec[q]);
+ assertTrue("Found a duplicate annotation row " + avec[p].label,
+ avec[p] != avec[q]);
}
}
}
if (StructureImportSettings.getDefaultPDBFileParser().equals(
StructureParser.JALVIEW_PARSER))
{
- assertTrue(MCview.PDBfile.isCalcIdForFile(aa, pdbId));
+ assertTrue(MCview.PDBfile.isCalcIdForFile(aa, pdbId));
}
}
}
// make sure dataset is initialised ? not sure about this
for (int i = 0; i < al.getSequencesArray().length; ++i)
{
- al.getSequenceAt(i).setDatasetSequence(
- al.getSequenceAt(i).createDatasetSequence());
+ al.getSequenceAt(i).createDatasetSequence();
}
assertNotNull("Couldn't read supplied alignment data.", al);
return al;
// perform crossref action, or retrieve stored project
List<AlignmentViewPanel> cra_views = new ArrayList<AlignmentViewPanel>();
CrossRefAction cra = null;
-
+
if (pass2 == 0)
{ // retrieve and show cross-refs in this thread
cra = new CrossRefAction(af, seqs, dna, db);
: new CrossRef(xrseqs, dataset)
.findXrefSourcesForSequences(avp
.getAlignViewport().isNucleotide());
-
+
stringify(dbtoviewBit, savedProjects, nextxref, avp);
xrptypes.put(nextxref, _xrptypes);
{
List<AlignmentViewPanel> cra_views2 = new ArrayList<AlignmentViewPanel>();
int q = 0;
- String nextnextxref = nextxref
- + " -> " + xrefdb + "{" + q + "}";
+ String nextnextxref = nextxref + " -> " + xrefdb + "{"
+ + q + "}";
if (pass3 == 0)
{
{
failedXrefMenuItems
.add("No crossrefs retrieved for '"
- + nextxref + "' to " + xrefdb + " via '"
- + nextaf.getTitle() + "'");
+ + nextxref + "' to " + xrefdb
+ + " via '" + nextaf.getTitle() + "'");
continue;
}
cra_views2 = cra.getXrefViews();
for (AlignmentViewPanel nextavp : cra_views2)
{
- nextnextxref = nextxref
- + " -> " + xrefdb + "{" + q++ + "}";
+ nextnextxref = nextxref + " -> " + xrefdb + "{" + q++
+ + "}";
// verify references for this panel
AlignmentTest.assertAlignmentDatasetRefs(
{
List<SequenceI> nonType = new ArrayList<SequenceI>();
for (SequenceI sq : alignmentViewPanel.getAlignViewport()
- .getAlignment()
- .getSequences())
+ .getAlignment().getSequences())
{
if (sq.isProtein() != expectProtein)
{
{
Assert.fail(message + " [ "
+ (expectProtein ? "nucleotides were " : "proteins were ")
- + nonType.toString()
- + " ]");
+ + nonType.toString() + " ]");
}
}
Map<String, FeatureColourI> colours = af.getFeatureRenderer()
.getFeatureColours();
// GFF2 uses space as name/value separator in column 9
- String gffData = "METAL\tcc9900\n" + "GFF\n"
+ String gffData = "METAL\tcc9900\n"
+ + "GFF\n"
+ "FER_CAPAA\tuniprot\tMETAL\t44\t45\t4.0\t.\t.\tNote Iron-sulfur; Note 2Fe-2S\n"
+ "FER1_SOLLC\tuniprot\tPfam\t55\t130\t2.0\t.\t.";
FeaturesFile featuresFile = new FeaturesFile(gffData,
{
assertEquals("no sequences extracted from GFF3 file", 2,
dataset.getHeight());
-
+
SequenceI seq1 = dataset.findName("seq1");
SequenceI seq2 = dataset.findName("seq2");
assertNotNull(seq1);
"Expected at least one CDNA/Protein mapping for seq1",
dataset.getCodonFrame(seq1) != null
&& dataset.getCodonFrame(seq1).size() > 0);
-
+
}
@Test(groups = { "Functional" })
public void simpleGff3FileClass() throws IOException
{
AlignmentI dataset = new Alignment(new SequenceI[] {});
- FeaturesFile ffile = new FeaturesFile(simpleGffFile,
- FormatAdapter.FILE);
-
+ FeaturesFile ffile = new FeaturesFile(simpleGffFile, FormatAdapter.FILE);
+
boolean parseResult = ffile.parse(dataset, null, false, false);
assertTrue("return result should be true", parseResult);
checkDatasetfromSimpleGff3(dataset);
public void simpleGff3RelaxedIdMatching() throws IOException
{
AlignmentI dataset = new Alignment(new SequenceI[] {});
- FeaturesFile ffile = new FeaturesFile(simpleGffFile,
- FormatAdapter.FILE);
-
+ FeaturesFile ffile = new FeaturesFile(simpleGffFile, FormatAdapter.FILE);
+
boolean parseResult = ffile.parse(dataset, null, false, true);
assertTrue("return result (relaxedID matching) should be true",
parseResult);
* first with no features displayed
*/
FeatureRenderer fr = af.alignPanel.getFeatureRenderer();
- Map<String, FeatureColourI> visible = fr
- .getDisplayedFeatureCols();
+ Map<String, FeatureColourI> visible = fr.getDisplayedFeatureCols();
String exported = featuresFile.printJalviewFormat(
al.getSequencesArray(), visible);
String expected = "No Features Visible";
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io;
import static org.testng.AssertJUnit.assertEquals;
*/
sequenceString = adjustForGapTreatment(sequenceString, gap, format);
assertEquals(
- String.format("Sequence %d: %s", i,
- seqs[i].getName()), seqs[i].getSequenceAsString(),
- sequenceString);
+ String.format("Sequence %d: %s", i, seqs[i].getName()),
+ seqs[i].getSequenceAsString(), sequenceString);
i++;
}
} catch (IOException e)
for (Sequence seq : seqs)
{
- seq.setDatasetSequence(seq);
+ seq.createDatasetSequence();
expectedSeqs.put(seq.getName(), seq);
}
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io;
import jalview.bin.Cache;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io;
import jalview.datamodel.AlignmentI;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io;
import static org.testng.AssertJUnit.assertEquals;
SequenceFeature sf = new SequenceFeature("METAL", "Fe2-S", 1, 3,
Float.NaN, "group");
sf.setStatus("Confirmed");
-
+
sar.appendFeature(sb, 1, null, sf);
assertEquals("METAL 1 3; Fe2-S; (Confirmed)", sb.toString());
}
StringBuffer sb = new StringBuffer();
SequenceFeature sf = new SequenceFeature("METAL", "Fe2-S", 1, 3,
Float.NaN, "group");
-
+
sar.appendFeature(sb, 1, null, sf);
assertEquals("METAL 1 3; Fe2-S", sb.toString());
}
SequenceFeature sf = new SequenceFeature("METAL", "Fe2-S", 1, 3,
Float.NaN, "group");
sf.setValue("clinical_significance", "Benign");
-
+
sar.appendFeature(sb, 1, null, sf);
assertEquals("METAL 1 3; Fe2-S; Benign", sb.toString());
}
StringBuffer sb = new StringBuffer();
SequenceFeature sf = new SequenceFeature("METAL", "METAL", 1, 3,
Float.NaN, "group");
-
+
// description is not included if it duplicates type:
sar.appendFeature(sb, 1, null, sf);
assertEquals("METAL 1 3", sb.toString());
SequenceFeature sf = new SequenceFeature("METAL",
"<html><body>hello<em>world</em></body></html>", 1, 3,
Float.NaN, "group");
-
+
sar.appendFeature(sb, 1, null, sf);
// !! strips off </body> but not <body> ??
- assertEquals("METAL 1 3; <body>hello<em>world</em>",
- sb.toString());
+ assertEquals("METAL 1 3; <body>hello<em>world</em>", sb.toString());
sb.setLength(0);
sf.setDescription("<br>&kHD>6");
// make sure dataset is initialised ? not sure about this
for (int i = 0; i < al.getSequencesArray().length; ++i)
{
- al.getSequenceAt(i).setDatasetSequence(al.getSequenceAt(i));
+ al.getSequenceAt(i).createDatasetSequence();
}
String outputfile = rf.formatSequences(ioformat, al, true);
System.out.println("Output file in '" + ioformat + "':\n"
assertEquals("different number of features",
seq_original[i].getSequenceFeatures().length,
- seq_new[in]
- .getSequenceFeatures().length);
+ seq_new[in].getSequenceFeatures().length);
for (int feat = 0; feat < seq_original[i].getSequenceFeatures().length; feat++)
{
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import static org.testng.AssertJUnit.assertEquals;
{
FileLoader loader = new FileLoader(false);
AlignFrame af = loader.LoadFileWaitTillLoaded(
- "examples/testdata/exonerateseqs.fa",
- FormatAdapter.FILE);
-
+ "examples/testdata/exonerateseqs.fa", FormatAdapter.FILE);
+
af.loadJalviewDataFile("examples/testdata/exonerateoutput.gff",
FormatAdapter.FILE, null, null);
-
+
/*
* verify one mapping to a dummy sequence, one to a real one
*/
- List<AlignedCodonFrame> mappings = af
- .getViewport().getAlignment().getDataset().getCodonFrames();
+ List<AlignedCodonFrame> mappings = af.getViewport().getAlignment()
+ .getDataset().getCodonFrames();
assertEquals(2, mappings.size());
Iterator<AlignedCodonFrame> iter = mappings.iterator();
-
+
// first mapping is to dummy sequence
AlignedCodonFrame mapping = iter.next();
Mapping[] mapList = mapping.getProtMappings();
// 143 in protein should map to codon [11270, 11269, 11268] in dna
int[] mappedRegion = mapList[0].getMap().locateInFrom(143, 143);
assertArrayEquals(new int[] { 11270, 11268 }, mappedRegion);
-
+
// second mapping is to a sequence in the alignment
mapping = iter.next();
mapList = mapping.getProtMappings();
.findName("DDB_G0280897");
assertSame(proteinSeq.getDatasetSequence(), mapList[0].getTo());
assertEquals(1, mapping.getdnaToProt().length);
-
+
// 143 in protein should map to codon [11270, 11269, 11268] in dna
mappedRegion = mapList[0].getMap().locateInFrom(143, 143);
assertArrayEquals(new int[] { 11270, 11268 }, mappedRegion);
-
+
// 182 in protein should map to codon [11153, 11152, 11151] in dna
mappedRegion = mapList[0].getMap().locateInFrom(182, 182);
assertArrayEquals(new int[] { 11153, 11151 }, mappedRegion);
-
+
// and the reverse mapping:
mappedRegion = mapList[0].getMap().locateInTo(11151, 11153);
assertArrayEquals(new int[] { 182, 182 }, mappedRegion);
-
+
// 11150 in dna should _not_ map to protein
mappedRegion = mapList[0].getMap().locateInTo(11150, 11150);
assertNull(mappedRegion);
-
+
// similarly 183 in protein should _not_ map to dna
mappedRegion = mapList[0].getMap().locateInFrom(183, 183);
assertNull(mappedRegion);
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import static org.testng.AssertJUnit.assertEquals;
"GAATTCGTTCATGTAGGTTGATTTTTATT");
seq.createDatasetSequence();
AlignmentI align = new Alignment(new SequenceI[] {});
-
+
// mapping from gi|68711 12923-13060 to gi|N37351 1-138
String[] gff = "gi|68711\tblat-pasa\tcDNA_match\t12923\t13060\t98.55\t+\t.\tID=align_68;Target=gi|N37351 1 138 +"
.split("\\t");
// (this is important for 'align cdna to genome' to work correctly)
assertEquals(1, align.getCodonFrames().size());
AlignedCodonFrame mapping = align.getCodonFrames().get(0);
-
+
/*
* 'dnaseqs' (map from) is here [gi|68711]
* 'aaseqs' (map to) is here [gi|N37351]
assertEquals(1, mapping.getdnaToProt().length);
assertEquals(2, mapping.getdnaToProt()[0].getFromRanges().size());
// the two spliced dna ranges are combined in one MapList
- assertArrayEquals(new int[] { 12923, 13060 },
- mapping.getdnaToProt()[0]
+ assertArrayEquals(new int[] { 12923, 13060 }, mapping.getdnaToProt()[0]
.getFromRanges().get(0));
assertArrayEquals(new int[] { 13411, 13550 }, mapping.getdnaToProt()[0]
.getFromRanges().get(1));
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import static org.testng.AssertJUnit.assertEquals;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import static org.testng.AssertJUnit.assertNull;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import static org.testng.AssertJUnit.assertEquals;
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.io.gff;
import static org.testng.AssertJUnit.assertEquals;
seq.createDatasetSequence();
AlignmentI align = new Alignment(new SequenceI[] {});
Map<String, List<String>> set = Gff3Helper.parseNameValuePairs(gff[8]);
-
+
/*
* this should create a mapping from Prot1/5-30 to virtual sequence
* match$17_5_30 (added to newseqs) positions 1-26
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.schemes;
import static org.testng.AssertJUnit.assertEquals;
@Test(groups = { "Functional" })
public void testGetColor_Graduated()
{
- // graduated colour from score 0 to 100, gray(128, 128, 128) to red(255, 0, 0)
+ // graduated colour from score 0 to 100, gray(128, 128, 128) to red(255, 0,
+ // 0)
FeatureColour fc = new FeatureColour(Color.GRAY, Color.RED, 0f, 100f);
// feature score is 75 which is 3/4 of the way from GRAY to RED
SequenceFeature sf = new SequenceFeature("type", "desc", 0, 20, 75f,
String redHex = Format.getHexString(Color.RED);
String hexColour = redHex;
assertEquals("domain\t" + hexColour, fc.toJalviewFormat("domain"));
-
+
/*
* colour by label (no threshold)
*/
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.schemes;
import static org.testng.AssertJUnit.assertEquals;
import java.awt.Color;
import org.testng.annotations.Test;
+
public class UserColourSchemeTest
{
// Associate the 1GAQ pdb file with the subsequence 'imported' from another
// source
StructureFile pde = ssm.setMapping(true, new SequenceI[] { sq },
- new String[]
- { "A" }, inFile = "examples/1gaq.txt", jalview.io.FormatAdapter.FILE);
+ new String[] { "A" }, inFile = "examples/1gaq.txt",
+ jalview.io.FormatAdapter.FILE);
assertTrue("PDB File couldn't be found", pde != null);
StructureMapping[] mp = ssm.getMapping(inFile);
assertTrue("No mappings made.", mp != null && mp.length > 0);
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.util;
import static org.testng.AssertJUnit.assertEquals;
public class ArrayUtilsTest
{
- @Test(groups="Functional")
- public void testReverseIntArray() {
+ @Test(groups = "Functional")
+ public void testReverseIntArray()
+ {
// null value: should be no exception
ArrayUtils.reverseIntArray((int[]) null);
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.util;
import static org.testng.Assert.assertEquals;
* value > max
*/
col = ColorUtils
- .getGraduatedColour(40f, 10f, minColour, 30f,
- maxColour);
+ .getGraduatedColour(40f, 10f, minColour, 30f, maxColour);
assertEquals(maxColour, col);
/*
1 }, 1, 1)));
List<DBRefEntry> matches = DBRefUtils.searchRefs(new DBRefEntry[] {
- ref1,
- ref2, ref3, ref4, ref5 }, target);
+ ref1, ref2, ref3, ref4, ref5 }, target);
assertEquals(3, matches.size());
assertSame(ref1, matches.get(0));
assertSame(ref2, matches.get(1));
ref3.setMap(map3);
List<DBRefEntry> matches = DBRefUtils.searchRefs(new DBRefEntry[] {
- ref1,
- ref2, ref3 }, target);
+ ref1, ref2, ref3 }, target);
assertEquals(2, matches.size());
assertSame(ref1, matches.get(0));
assertSame(ref2, matches.get(1));
@Test(groups = { "Functional" })
public void testSearchRefs_accessionid()
{
-
+
DBRefEntry ref1 = new DBRefEntry("Uniprot", "1", "A1234"); // matches
DBRefEntry ref2 = new DBRefEntry("embl", "1", "A1234"); // matches
// constructor does not upper-case accession id
DBRefEntry ref5 = new DBRefEntry("EMBL", "1", "A1234");
ref5.setMap(new Mapping(new MapList(new int[] { 1, 1 }, new int[] { 1,
1 }, 1, 1)));
-
- DBRefEntry[] dbrefs = new DBRefEntry[] { ref1,
- ref2, ref3, ref4, ref5 };
+
+ DBRefEntry[] dbrefs = new DBRefEntry[] { ref1, ref2, ref3, ref4, ref5 };
List<DBRefEntry> matches = DBRefUtils.searchRefs(dbrefs, "A1234");
assertEquals(3, matches.size());
assertSame(ref1, matches.get(0));
public void testSearchRefs_wildcardAccessionid()
{
DBRefEntry target = new DBRefEntry("EMBL", "2", null);
-
+
DBRefEntry ref1 = new DBRefEntry("EMBL", "1", "A1234"); // matches
// constructor changes embl to EMBL
DBRefEntry ref2 = new DBRefEntry("embl", "1", "A1235"); // matches
DBRefEntry ref5 = new DBRefEntry("EMBL", "1", "A1237");
ref5.setMap(new Mapping(new MapList(new int[] { 1, 1 }, new int[] { 1,
1 }, 1, 1)));
-
+
List<DBRefEntry> matches = DBRefUtils.searchRefs(new DBRefEntry[] {
- ref1,
- ref2, ref3, ref4, ref5 }, target);
+ ref1, ref2, ref3, ref4, ref5 }, target);
assertEquals(4, matches.size());
assertSame(ref1, matches.get(0));
assertSame(ref2, matches.get(1));
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.util;
import static org.testng.AssertJUnit.assertEquals;
MapList ml = new MapList(new int[] { 1, 5, 10, 15, 25, 20 }, new int[] {
51, 1 }, 1, 3);
String s = ml.toString();
- assertEquals("[ [1, 5] [10, 15] [25, 20] ] 1:3 to [ [51, 1] ]",
- s);
+ assertEquals("[ [1, 5] [10, 15] [25, 20] ] 1:3 to [ [51, 1] ]", s);
}
@Test(groups = { "Functional" })
public void testIsFromForwardStrand()
{
// [3-9] declares forward strand
- MapList ml = new MapList(new int[] { 2, 2, 3, 9, 12, 11 },
- new int[] { 20, 11 }, 1, 1);
+ MapList ml = new MapList(new int[] { 2, 2, 3, 9, 12, 11 }, new int[] {
+ 20, 11 }, 1, 1);
assertTrue(ml.isFromForwardStrand());
// [11-5] declares reverse strand ([13-14] is ignored)
public void testMapColumnSelection_hiddenColumns() throws IOException
{
setupMappedAlignments();
-
+
ColumnSelection proteinSelection = new ColumnSelection();
/*
* in dna respectively, overall 0-4
*/
proteinSelection.hideColumns(0);
- ColumnSelection dnaSelection = MappingUtils.mapColumnSelection(proteinSelection,
- proteinView, dnaView);
+ ColumnSelection dnaSelection = MappingUtils.mapColumnSelection(
+ proteinSelection, proteinView, dnaView);
assertEquals("[]", dnaSelection.getSelected().toString());
List<int[]> hidden = dnaSelection.getHiddenColumns();
assertEquals(1, hidden.size());
// deselect these or hideColumns will be expanded to include 0
proteinSelection.clear();
proteinSelection.hideColumns(1);
- dnaSelection = MappingUtils.mapColumnSelection(proteinSelection, proteinView, dnaView);
+ dnaSelection = MappingUtils.mapColumnSelection(proteinSelection,
+ proteinView, dnaView);
hidden = dnaSelection.getHiddenColumns();
assertEquals(1, hidden.size());
assertEquals("[0, 3]", Arrays.toString(hidden.get(0)));
proteinSelection.revealAllHiddenColumns();
proteinSelection.clear();
proteinSelection.hideColumns(2);
- dnaSelection = MappingUtils.mapColumnSelection(proteinSelection, proteinView, dnaView);
+ dnaSelection = MappingUtils.mapColumnSelection(proteinSelection,
+ proteinView, dnaView);
assertTrue(dnaSelection.getHiddenColumns().isEmpty());
/*
proteinSelection.clear();
proteinSelection.hideColumns(3); // 5-10 hidden in dna
proteinSelection.addElement(1); // 0-3 selected in dna
- dnaSelection = MappingUtils.mapColumnSelection(proteinSelection, proteinView, dnaView);
+ dnaSelection = MappingUtils.mapColumnSelection(proteinSelection,
+ proteinView, dnaView);
assertEquals("[0, 1, 2, 3]", dnaSelection.getSelected().toString());
hidden = dnaSelection.getHiddenColumns();
assertEquals(1, hidden.size());
proteinSelection.clear();
proteinSelection.hideColumns(1);
proteinSelection.hideColumns(3);
- dnaSelection = MappingUtils.mapColumnSelection(proteinSelection, proteinView, dnaView);
+ dnaSelection = MappingUtils.mapColumnSelection(proteinSelection,
+ proteinView, dnaView);
hidden = dnaSelection.getHiddenColumns();
assertEquals(2, hidden.size());
assertEquals("[0, 3]", Arrays.toString(hidden.get(0)));
int[] adjusted = MappingUtils.removeStartPositions(0, ranges);
assertEquals("[10, 1]", Arrays.toString(adjusted));
assertEquals("[10, 1]", Arrays.toString(ranges));
-
+
ranges = adjusted;
adjusted = MappingUtils.removeStartPositions(1, ranges);
assertEquals("[9, 1]", Arrays.toString(adjusted));
assertEquals("[10, 1]", Arrays.toString(ranges));
-
+
ranges = adjusted;
adjusted = MappingUtils.removeStartPositions(1, ranges);
assertEquals("[8, 1]", Arrays.toString(adjusted));
assertEquals("[9, 1]", Arrays.toString(ranges));
-
+
ranges = new int[] { 12, 11, 9, 6 };
adjusted = MappingUtils.removeStartPositions(1, ranges);
assertEquals("[11, 11, 9, 6]", Arrays.toString(adjusted));
assertEquals("[12, 11, 9, 6]", Arrays.toString(ranges));
-
+
ranges = new int[] { 12, 12, 8, 4 };
adjusted = MappingUtils.removeStartPositions(1, ranges);
assertEquals("[8, 4]", Arrays.toString(adjusted));
assertEquals("[12, 12, 8, 4]", Arrays.toString(ranges));
-
+
ranges = new int[] { 12, 12, 8, 4 };
adjusted = MappingUtils.removeStartPositions(2, ranges);
assertEquals("[7, 4]", Arrays.toString(adjusted));
assertEquals("[12, 12, 8, 4]", Arrays.toString(ranges));
-
+
ranges = new int[] { 12, 12, 10, 10, 8, 4 };
adjusted = MappingUtils.removeStartPositions(1, ranges);
assertEquals("[10, 10, 8, 4]", Arrays.toString(adjusted));
assertEquals("[12, 12, 10, 10, 8, 4]", Arrays.toString(ranges));
-
+
ranges = new int[] { 12, 12, 10, 10, 8, 4 };
adjusted = MappingUtils.removeStartPositions(2, ranges);
assertEquals("[8, 4]", Arrays.toString(adjusted));
assertEquals("[12, 12, 10, 10, 8, 4]", Arrays.toString(ranges));
-
+
ranges = new int[] { 12, 11, 8, 4 };
adjusted = MappingUtils.removeStartPositions(3, ranges);
assertEquals("[7, 4]", Arrays.toString(adjusted));
"ALISON" };
QuickSort.sort(values, things);
assertTrue(Arrays.equals(new String[] { "lucy", "henry", "henry",
- "JOHN",
- "ALISON" }, values));
+ "JOHN", "ALISON" }, values));
assertTrue(Arrays.equals(new Object[] { c3, c2, c4, c1, c5 }, things));
}
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.workers;
import static org.testng.AssertJUnit.assertEquals;
{
AlignCalcManagerI acm = alignFrame.getViewport().getCalcManager();
final AlignmentAnnotation ann1 = new AlignmentAnnotation("Ann1",
- "desc",
- new Annotation[] {});
+ "desc", new Annotation[] {});
final AlignmentAnnotation ann2 = new AlignmentAnnotation("Ann2",
- "desc",
- new Annotation[] {});
+ "desc", new Annotation[] {});
/*
* make two workers for ann1, one deletable, one not
}
}
- List<AlignCalcWorkerI> workers = acm.getRegisteredWorkersOfClass(worker1.getClass());
+ List<AlignCalcWorkerI> workers = acm
+ .getRegisteredWorkersOfClass(worker1.getClass());
assertEquals(2, workers.size());
assertTrue(workers.contains(worker1));
assertTrue(workers.contains(worker2));
}
};
return new AnnotationWorker(alignFrame.getViewport(),
- alignFrame.alignPanel,
- annotationProvider)
+ alignFrame.alignPanel, annotationProvider)
{
@Override
public boolean isDeletable()
@Test(groups = { "Network" }, enabled = true)
public void testRnaSeqRetrieve() throws Exception
{
- Cache.applicationProperties.setProperty("PDB_DOWNLOAD_FORMAT",
- "PDB");
+ Cache.applicationProperties.setProperty("PDB_DOWNLOAD_FORMAT", "PDB");
List<DbSourceProxy> sps = sf.getSourceProxy("PDB");
AlignmentI response = sps.get(0).getSequenceRecords("2GIS");
assertTrue(response != null);
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ws;
import jalview.analysis.CrossRef;
try
{
testRetrieval(argv[0], sp,
- argv.length > 1 ? argv[1] : sp
- .getTestQuery());
+ argv.length > 1 ? argv[1] : sp.getTestQuery());
} catch (Exception e)
{
e.printStackTrace();
package jalview.ws.dbsources;
import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertNull;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceI;
import jalview.datamodel.UniprotEntry;
import java.io.Reader;
+ "<protein><recommendedName><fullName>Mitogen-activated protein kinase 13</fullName><fullName>Henry</fullName></recommendedName></protein>"
+ "<dbReference type=\"PDB\" id=\"2FSQ\"><property type=\"method\" value=\"X-ray\"/><property type=\"resolution\" value=\"1.40\"/></dbReference>"
+ "<dbReference type=\"PDBsum\" id=\"2FSR\"/>"
+ + "<dbReference type=\"EMBL\" id=\"AE007869\"><property type=\"protein sequence ID\" value=\"AAK85932.1\"/><property type=\"molecule type\" value=\"Genomic_DNA\"/></dbReference>"
+ "<feature type=\"signal peptide\" evidence=\"7\"><location><begin position=\"1\"/><end position=\"18\"/></location></feature>"
+ "<feature type=\"propeptide\" description=\"Activation peptide\" id=\"PRO_0000027399\" evidence=\"9 16 17 18\"><location><begin position=\"19\"/><end position=\"20\"/></location></feature>"
+ "<feature type=\"chain\" description=\"Granzyme B\" id=\"PRO_0000027400\"><location><begin position=\"21\"/><end position=\"247\"/></location></feature>"
* Check cross-references
*/
Vector<PDBEntry> xrefs = entry.getDbReference();
- assertEquals(2, xrefs.size());
+ assertEquals(3, xrefs.size());
PDBEntry xref = xrefs.get(0);
assertEquals("2FSQ", xref.getId());
assertEquals("2FSR", xref.getId());
assertEquals("PDBsum", xref.getType());
assertNull(xref.getProperty());
+
+ xref = xrefs.get(2);
+ assertEquals("AE007869", xref.getId());
+ assertEquals("EMBL", xref.getType());
+ assertNotNull(xref.getProperty());
+ assertEquals("AAK85932.1",
+ (String) xref.getProperty().get("protein sequence ID"));
+ assertEquals("Genomic_DNA",
+ (String) xref.getProperty().get("molecule type"));
+ assertEquals(2, xref.getProperty().size());
+
+ }
+
+ @Test(groups = { "Functional" })
+ public void testGetUniprotSequence()
+ {
+ UniprotEntry entry = new Uniprot().getUniprotEntries(
+ new StringReader(UNIPROT_XML)).get(0);
+ SequenceI seq = new Uniprot().uniprotEntryToSequenceI(entry);
+ assertNotNull(seq);
+ assertEquals(6, seq.getDBRefs().length); // 2*Uniprot, PDB, PDBsum, 2*EMBL
+
}
/**
{
UniprotEntry entry = new Uniprot().getUniprotEntries(
new StringReader(UNIPROT_XML)).get(0);
-
+
/*
* recommended names concatenated with space separator
*/
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.ws.ebi;
import static org.testng.AssertJUnit.assertEquals;
public void testRnaalifoldSettingsRecovery()
{
List<Argument> opts = new ArrayList<Argument>();
- for (Argument rg : (List<Argument>) rnaalifoldws
- .getRunnerConfig().getArguments())
+ for (Argument rg : (List<Argument>) rnaalifoldws.getRunnerConfig()
+ .getArguments())
{
if (rg.getDescription().contains("emperature"))
{
sfs[0].getType()));
assertEquals(embl.getDbSource(), sfs[0].getFeatureGroup());
DBRefEntry[] dr = DBRefUtils.selectRefs(seq.getDBRefs(),
- new String[] { DBRefSource.UNIPROT, DBRefSource.UNIPROTKB,
- DBRefSource.EMBLCDSProduct, DBRefSource.ENSEMBL });
+ new String[] { DBRefSource.UNIPROT });
assertNotNull(dr);
assertEquals("Expected a single Uniprot cross reference", 1, dr.length);
assertEquals("Expected cross reference map to be one amino acid", dr[0]
package jalview.ws.sifts;
import jalview.api.DBRefEntryI;
+import jalview.bin.Cache;
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.DBRefSource;
import jalview.datamodel.Sequence;
@BeforeTest(alwaysRun = true)
public void populateExpectedMapping() throws SiftsException
- {
+ {
expectedMapping.put(51, new int[] { 1, 2 });
expectedMapping.put(52, new int[] { 2, 7 });
expectedMapping.put(53, new int[] { 3, 12 });
expectedMapping.put(145, new int[] { 95, 714 });
expectedMapping.put(146, new int[] { 96, 722 });
expectedMapping.put(147, new int[] { 97, 729 });
- }
-
+ }
+
@BeforeTest(alwaysRun = true)
public void setUpSiftsClient() throws SiftsException
{
+ // read test props before manipulating config
+ Cache.loadProperties("test/jalview/io/testProps.jvprops");
// SIFTs entries are updated weekly - so use saved SIFTs file to enforce
// test reproducibility
new SiftsSettings();
}
}
-
@Test(groups = { "Functional" })
public void getAllMappingAccessionTest()
{
try
{
HashMap<Integer, int[]> actualMapping = siftsClient.getGreedyMapping(
- "A", testSeq,
- null);
+ "A", testSeq, null);
Assert.assertEquals(testSeq.getStart(), 1);
Assert.assertEquals(testSeq.getEnd(), 147);
Assert.assertEquals(actualMapping, expectedMapping);
private void populateAtomPositionsNullTest1()
throws IllegalArgumentException, SiftsException
{
- siftsClient.populateAtomPositions(null, null);
+ siftsClient.populateAtomPositions(null, null);
}
@Test(
expectedExceptions = SiftsException.class)
public void getValidSourceDBRefExceptionTest() throws SiftsException
{
- SequenceI invalidTestSeq = new Sequence("testSeq", "ABCDEFGH");
+ SequenceI invalidTestSeq = new Sequence("testSeq", "ABCDEFGH");
try
{
siftsClient.getValidSourceDBRef(invalidTestSeq);
--- /dev/null
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.StringReader;
+
+/**
+ * A file reader that concatenates lines
+ *
+ * @author gmcarstairs
+ *
+ */
+public class BufferedLineReader
+{
+ interface LineCleaner
+ {
+ String cleanLine(String l);
+ }
+
+ /*
+ * a reader for the file being read
+ */
+ private BufferedReader br;
+
+ /*
+ * optional handler to post-process each line as it is read
+ */
+ private LineCleaner cleaner;
+
+ /*
+ * current buffer of <bufferSize> post-processed input lines
+ */
+ private String[] buffer;
+
+ private boolean atEof;
+
+ /**
+ * Constructor
+ *
+ * @param reader
+ * @param bufferSize
+ * the number of lines to concatenate at a time while reading
+ * @param tidier
+ * an optional callback handler to post-process each line after
+ * reading
+ * @throws FileNotFoundException
+ */
+ public BufferedLineReader(BufferedReader reader, int bufferSize,
+ LineCleaner tidier)
+ throws IOException
+ {
+ br = reader;
+ buffer = new String[bufferSize];
+ cleaner = tidier;
+
+ /*
+ * load up the buffer with N-1 lines, ready for the first read
+ */
+ for (int i = 1; i < bufferSize; i++)
+ {
+ readLine();
+ }
+
+ }
+
+ /**
+ * Reads the next line from file, invokes the post-processor if one was
+ * provided, and returns the 'cleaned' line, or null at end of file.
+ *
+ * @return
+ */
+ private String readLine() // throws IOException
+ {
+ if (atEof)
+ {
+ return null;
+ }
+
+ String line = null;
+ try
+ {
+ line = br.readLine();
+ } catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ if (line == null)
+ {
+ atEof = true;
+ return null;
+ }
+ if (cleaner != null)
+ {
+ line = cleaner.cleanLine(line);
+ }
+
+ /*
+ * shuffle down the lines buffer and add the new line
+ * in the last position
+ */
+ for (int i = 1; i < buffer.length; i++)
+ {
+ buffer[i - 1] = buffer[i];
+ }
+ buffer[buffer.length - 1] = line;
+ return line;
+ }
+
+ /**
+ * Returns a number of concatenated lines from the file, or null at end of
+ * file.
+ *
+ * @return
+ */
+ public String read()
+ {
+ if (readLine() == null)
+ {
+ return null;
+ }
+ StringBuilder result = new StringBuilder(100 * buffer.length);
+ for (String line : buffer)
+ {
+ if (line != null)
+ {
+ result.append(line);
+ }
+ }
+ return result.toString();
+ }
+
+ /**
+ * A main 'test' method!
+ *
+ * @throws IOException
+ */
+ public static void main(String[] args) throws IOException
+ {
+ String data = "Now is the winter\n" + "Of our discontent\n"
+ + "Made glorious summer\n" + "By this sun of York\n";
+ BufferedReader br = new BufferedReader(new StringReader(data));
+ BufferedLineReader reader = new BufferedLineReader(br, 3,
+ new LineCleaner()
+ {
+ @Override
+ public String cleanLine(String l)
+ {
+ return l.toUpperCase();
+ }
+ });
+ String line = reader.read();
+ String expect = "NOW IS THE WINTEROF OUR DISCONTENTMADE GLORIOUS SUMMER";
+ if (!line.equals(expect))
+ {
+ System.err.println("Fail: expected '" + expect + "', found '" + line
+ + ";");
+ }
+ else
+ {
+ System.out.println("Line one ok!");
+ }
+ line = reader.read();
+ expect = "OF OUR DISCONTENTMADE GLORIOUS SUMMERBY THIS SUN OF YORK";
+ if (!line.equals(expect))
+ {
+ System.err.println("Fail: expected '" + expect + "', found '" + line
+ + "'");
+ }
+ else
+ {
+ System.out.println("Line two ok!!");
+ }
+ line = reader.read();
+ if (line != null)
+ {
+ System.err.println("Fail: expected null at eof, got '" + line + "'");
+ }
+ else
+ {
+ System.out.println("EOF ok!!!");
+ }
+ }
+}
-
-
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
* @author gmcarstairs
*
*/
-public class HelpLinksChecker
+public class HelpLinksChecker implements BufferedLineReader.LineCleaner
{
private static final String HELP_HS = "help.hs";
unusedTargets.remove(image);
if (!tocTargets.containsKey(image))
{
- log(String.format(
- "Invalid image '%s' at line %d of %s", image, lineNo,
- HELP_HS));
+ log(String.format("Invalid image '%s' at line %d of %s", image,
+ lineNo, HELP_HS));
invalidImageCount++;
}
}
log(unusedTargets.size() + " unused targets");
for (String target : unusedTargets.keySet())
{
- log(String.format(" %s: %s", target,
- unusedTargets.get(target)));
+ log(String.format(" %s: %s", target, unusedTargets.get(target)));
}
log(invalidMapUrlCount + " invalid map urls");
log(invalidImageCount + " invalid image attributes");
- log(String.format(
- "%d internal href links (%d with anchors)", internalHrefCount,
- anchorRefCount));
- log(invalidInternalHrefCount
- + " invalid internal href links");
- log(invalidAnchorRefCount
- + " invalid internal anchor links");
+ log(String.format("%d internal href links (%d with anchors)",
+ internalHrefCount, anchorRefCount));
+ log(invalidInternalHrefCount + " invalid internal href links");
+ log(invalidAnchorRefCount + " invalid internal anchor links");
log(externalHrefCount + " external href links");
if (internetAvailable)
{
- log(invalidExternalHrefCount
- + " invalid external href links");
+ log(invalidExternalHrefCount + " invalid external href links");
}
else
{
{
if (!checkAnchorExists(hrefFile, anchor))
{
- log(String.format(
- "Invalid anchor: %s at line %d of %s", anchor,
- lineNo, getPath(htmlFile)));
+ log(String.format("Invalid anchor: %s at line %d of %s",
+ anchor, lineNo, getPath(htmlFile)));
invalidAnchorRefCount++;
}
}
}
if (badLink)
{
- log(String.format(
- "Invalid href %s at line %d of %s", href, lineNo,
- getPath(htmlFile)));
+ log(String.format("Invalid href %s at line %d of %s", href,
+ lineNo, getPath(htmlFile)));
}
}
data = br.readLine();
try
{
BufferedReader br = new BufferedReader(new FileReader(hrefFile));
- String data = br.readLine();
+ BufferedLineReader blr = new BufferedLineReader(br, 3, this);
+ String data = blr.read();
while (data != null)
{
if (data.contains(nameAnchor) || data.contains(idAnchor))
found = true;
break;
}
- data = br.readLine();
+ data = blr.read();
}
br.close();
} catch (IOException e)
}
if (!new File(helpFolder, url).exists())
{
- log(String.format(
- "Invalid url path '%s' at line %d of %s", url, lineNo,
- HELP_JHM));
+ log(String.format("Invalid url path '%s' at line %d of %s", url,
+ lineNo, HELP_JHM));
invalidMapUrlCount++;
}
}
unusedTargets.remove(target);
if (!tocTargets.containsKey(target))
{
- log(String.format(
- "Invalid target '%s' at line %d of %s", target, lineNo,
- HELP_TOC_XML));
+ log(String.format("Invalid target '%s' at line %d of %s", target,
+ lineNo, HELP_TOC_XML));
invalidTargetCount++;
}
}
}
return value;
}
+
+ /**
+ * Trim whitespace from concatenated lines but preserve one space for valid
+ * parsing
+ */
+ @Override
+ public String cleanLine(String l)
+ {
+ return l.trim() + " ";
+ }
}
//========================================================================
//
-
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.DefaultHandler;
// In this example it is the current directory but it can be configured to
// anything that the jvm has access to.
resource_handler.setDirectoriesListed(true);
- resource_handler.setWelcomeFiles(new String[]
- { "applets.html" });
+ resource_handler.setWelcomeFiles(new String[] { "applets.html" });
resource_handler.setResourceBase(".");
// Add the ResourceHandler to the server.
// GzipHandler gzip = new GzipHandler();
// server.setHandler(gzip);
HandlerList handlers = new HandlerList();
- handlers.setHandlers(new Handler[]
- { resource_handler, new DefaultHandler() });
+ handlers.setHandlers(new Handler[] { resource_handler,
+ new DefaultHandler() });
server.setHandler(handlers);
// Start things up! By using the server.join() the server thread will join
// for more details.
server.start();
server.join();
-}
+ }
}
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
* @author gmcarstairs
*
*/
-public class MessageBundleChecker
+public class MessageBundleChecker implements BufferedLineReader.LineCleaner
{
/*
* regex ^"[^"]*"$
return;
}
- String[] lines = new String[bufferSize];
BufferedReader br = new BufferedReader(new FileReader(f));
- for (int i = 0; i < bufferSize; i++)
- {
- String readLine = br.readLine();
- lines[i] = stripCommentsAndTrim(readLine);
- }
+ BufferedLineReader blr = new BufferedLineReader(br, bufferSize, this);
int lineNo = 0;
-
- while (lines[bufferSize - 1] != null)
+ String line = blr.read();
+ while (line != null)
{
lineNo++;
- inspectSourceLines(path, lineNo, lines);
-
- for (int i = 0; i < bufferSize - 1; i++)
- {
- lines[i] = lines[i + 1];
- }
- lines[bufferSize - 1] = stripCommentsAndTrim(br.readLine());
+ inspectSourceLines(path, lineNo, line);
+ line = blr.read();
}
br.close();
}
- /*
- * removes anything after (and including) '//'
- */
- private String stripCommentsAndTrim(String line)
- {
- if (line != null)
- {
- int pos = line.indexOf("//");
- if (pos != -1)
- {
- line = line.substring(0, pos);
- }
- line = line.replace("\t", " ").trim();
- }
- return line;
- }
-
/**
* Look for calls to MessageManager methods, possibly split over two or more
- * lines
+ * lines that have been concatenated while parsing the file
*
* @param path
* @param lineNo
- * @param lines
+ * @param line
*/
- private void inspectSourceLines(String path, int lineNo, String[] lines)
+ private void inspectSourceLines(String path, int lineNo, String line)
{
- String lineNos = String.format("%d-%d", lineNo, lineNo + lines.length
+ String lineNos = String
+ .format("%d-%d", lineNo, lineNo + bufferSize
- 1);
- String combined = combineLines(lines);
for (String method : METHODS)
{
- int pos = combined.indexOf(method);
+ int pos = line.indexOf(method);
if (pos == -1)
{
continue;
/*
* extract what follows the opening bracket of the method call
*/
- String methodArgs = combined.substring(pos + method.length()).trim();
+ String methodArgs = line.substring(pos + method.length()).trim();
if ("".equals(methodArgs))
{
/*
if (METHOD3 == method)
{
System.out.println(String.format("Dynamic key at %s line %s %s",
- path.substring(sourcePath.length()), lineNos, combined));
+ path.substring(sourcePath.length()), lineNos, line));
continue;
}
if (messageKey == null)
{
System.out.println(String.format("Trouble parsing %s line %s %s",
- path.substring(sourcePath.length()), lineNos, combined));
+ path.substring(sourcePath.length()), lineNos, line));
continue;
}
if (!(STRING_PATTERN.matcher(messageKey).matches()))
{
System.out.println(String.format("Dynamic key at %s line %s %s",
- path.substring(sourcePath.length()), lineNos, combined));
+ path.substring(sourcePath.length()), lineNos, line));
continue;
}
return endPos == -1 ? null : key.substring(0, endPos);
}
- private String combineLines(String[] lines)
- {
- String combined = "";
- if (lines != null)
- {
- for (String line : lines)
- {
- if (line != null)
- {
- combined += line;
- }
- }
- }
- return combined;
- }
-
/**
* Loads properties from Message.properties
*
}
+ /**
+ * Remove any trailing comments, change tabs to space, and trim
+ */
+ @Override
+ public String cleanLine(String l)
+ {
+ if (l != null)
+ {
+ int pos = l.indexOf("//");
+ if (pos != -1)
+ {
+ l = l.substring(0, pos);
+ }
+ l = l.replace("\t", " ").trim();
+ }
+ return l;
+ }
+
}
public class getJavaVersion
{
-/**
- * Takes a set of Jars and/or class files as arguments. Reports the java version for the classes
- */
+ /**
+ * Takes a set of Jars and/or class files as arguments. Reports the java
+ * version for the classes
+ */
public static void main(String[] args) throws IOException
{
- Hashtable observed=new Hashtable();
+ Hashtable observed = new Hashtable();
for (int i = 0; i < args.length; i++)
- {
- checkClassVersion(args[i], observed);
- }
+ {
+ checkClassVersion(args[i], observed);
+ }
printVersions(observed, System.out);
}
- public static void printVersions(Hashtable observed, java.io.PrintStream outs)
+
+ public static void printVersions(Hashtable observed,
+ java.io.PrintStream outs)
{
- if (observed.size()>0)
+ if (observed.size() > 0)
{
- int space=0;
- String key=null;
- for (Enumeration keys = observed.keys(); keys.hasMoreElements(); ) {
+ int space = 0;
+ String key = null;
+ for (Enumeration keys = observed.keys(); keys.hasMoreElements();)
+ {
key = (String) keys.nextElement();
- if (space++>0)
+ if (space++ > 0)
{
outs.print(" ");
}
String version = checkClassVersion(filename);
if (version == null)
{
-// System.err.println("Reading "+filename+" as jar:");
+ // System.err.println("Reading "+filename+" as jar:");
try
{
JarInputStream jis = new JarInputStream(new FileInputStream(
filename));
JarEntry entry;
- Hashtable perjar=new Hashtable();
+ Hashtable perjar = new Hashtable();
while ((entry = jis.getNextJarEntry()) != null)
{
if (entry != null)
}
}
}
- System.err.println("Jar : "+filename);
- printVersions(perjar,System.err);
+ System.err.println("Jar : " + filename);
+ printVersions(perjar, System.err);
} catch (Exception e)
{
{
if (version != null)
{
-// System.err.println("Version is '"+version+"'");
+ // System.err.println("Version is '"+version+"'");
int[] vrs = (int[]) observed.get(version);
if (vrs == null)
{
- vrs = new int[]
- { 0 };
+ vrs = new int[] { 0 };
}
vrs[0]++;
observed.put(version, vrs);
versions.put("52.0", "1.8");
}
- String version = (String) versions.get(major + "."
- + minor);
+ String version = (String) versions.get(major + "." + minor);
if (version == null)
{
// get nearest known version
version = (String) versions.get(major + ".0");
}
-// System.err.println("Version "+version);
+ // System.err.println("Version "+version);
if (version == null)
{
versions.put(major + "." + minor, "Class v" + major + ".0");
}
int minor = in.readUnsignedShort();
int major = in.readUnsignedShort();
-// System.err.println("Version "+major+"."+minor);
+ // System.err.println("Version "+major+"."+minor);
return parseVersions(minor, major);
}
public class help2Website
{
- public static void main(String [] args)
- {
- String line = "";
- try{
- Hashtable targets = new Hashtable();
+ public static void main(String[] args)
+ {
+ String line = "";
+ try
+ {
+ Hashtable targets = new Hashtable();
- File toc = new File("helpTOC.xml");
- File jhm = new File("help.jhm");
+ File toc = new File("helpTOC.xml");
+ File jhm = new File("help.jhm");
- BufferedReader in = new BufferedReader(new FileReader(jhm));
+ BufferedReader in = new BufferedReader(new FileReader(jhm));
- PrintWriter out = new PrintWriter(new FileWriter("helpTOC.html"));
- out.println("<html><head><title>Jalview - Help </title></head>\n"
- +"<body bgcolor=#F1F1F1>\n"
- +"<p><center><strong>Contents</strong></center></p>\n");
+ PrintWriter out = new PrintWriter(new FileWriter("helpTOC.html"));
+ out.println("<html><head><title>Jalview - Help </title></head>\n"
+ + "<body bgcolor=#F1F1F1>\n"
+ + "<p><center><strong>Contents</strong></center></p>\n");
+ StringTokenizer st;
+ StringBuffer indent = new StringBuffer();
+ String target, url, text;
+ while ((line = in.readLine()) != null)
+ {
+ if (line.indexOf("target") == -1)
+ continue;
- StringTokenizer st;
- StringBuffer indent = new StringBuffer();
- String target, url, text;
- while( (line = in.readLine()) != null)
- {
- if(line.indexOf("target")==-1)
- continue;
+ st = new StringTokenizer(line, "\"");
+ st.nextToken(); // <mapID target="
+ target = st.nextToken();
+ st.nextToken(); // " url="
- st = new StringTokenizer(line, "\"");
- st.nextToken(); //<mapID target="
+ url = st.nextToken();
+ targets.put(target, url);
+ }
- target = st.nextToken();
- st.nextToken(); //" url="
+ in = new BufferedReader(new FileReader(toc));
+ while ((line = in.readLine()) != null)
+ {
+ if (line.indexOf("</tocitem>") != -1)
+ indent.setLength(indent.length() - 18);
- url = st.nextToken();
- targets.put(target, url);
- }
+ if (line.indexOf("<tocitem") == -1)
+ continue;
- in = new BufferedReader(new FileReader(toc));
- while( (line = in.readLine()) != null)
- {
- if(line.indexOf("</tocitem>")!=-1)
- indent.setLength(indent.length()-18);
+ st = new StringTokenizer(line, "\"");
+ st.nextToken();
- if(line.indexOf("<tocitem")==-1)
- continue;
+ text = st.nextToken();
+ st.nextToken();
- st = new StringTokenizer(line, "\"");
- st.nextToken();
+ target = st.nextToken();
- text = st.nextToken();
- st.nextToken();
+ if (targets.get(target) != null)
+ {
+ out.println("<br>" + indent + "<a href=\"" + targets.get(target)
+ + "\" target=bodyframe>" + text + "</a>");
+ }
+ else
+ out.println("<br>" + indent + text);
- target = st.nextToken();
+ if (line.indexOf("/>") == -1)
+ indent.append(" ");
- if(targets.get(target)!=null)
- {
- out.println("<br>"+indent+"<a href=\""
- + targets.get(target)
- +"\" target=bodyframe>"
- +text
- +"</a>");
- }
- else
- out.println("<br>"+indent+text);
+ }
+ // Add Googletracker.
+ out.close();
- if(line.indexOf("/>")==-1)
- indent.append(" ");
+ }
- }
- // Add Googletracker.
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
- out.close();
-
- }
-
- catch(Exception ex)
- {
-
- ex.printStackTrace();
-
- System.out.println("\n"+line+"\n");
-
- System.out.println("Usage: move to Help directory. help2Website will read"
- +"\nhelpTOC.xml and help.jhm producing output helpTOC.html");
- }
- }
+ System.out.println("\n" + line + "\n");
+ System.out
+ .println("Usage: move to Help directory. help2Website will read"
+ + "\nhelpTOC.xml and help.jhm producing output helpTOC.html");
+ }
+ }
}