jalview.release=releases/Release_2_11_2_Branch
-jalview.version=2.11.2.1
+jalview.version=2.11.2.2
<p>
<b>Navigation</b>
<ul>
- <li>Cursor keys - Move cursor around the alignment.</li>
+ <li><em>Cursor (Arrow) keys</em> - Move cursor around the alignment.<br/>
+ <em>Shift+Cursor key</em> - move to next gap or aligned residue</li>
</ul>
<ul>
- <li>S - Type a number x then press 'S' to jump to sequence x.</li>
+ <li><em>S</em> - Type a number x then press 'S' to jump to sequence x.</li>
</ul>
<ul>
- <li>C - Type a number x then press 'C' to jump to column x.</li>
+ <li><em>C</em> - Type a number x then press 'C' to jump to column x.</li>
</ul>
<ul>
- <li>P - Type a number x then press 'P' to jump to position x in
+ <li><em>P</em> - Type a number x then press 'P' to jump to position x in
current sequence.</li>
</ul>
<ul>
<p>
<b>Defining Regions</b>
<ul>
- <li>Q - Define the top left corner of the selection area</li>
+ <li><em>Q</em> - Define the top left corner of the selection area</li>
</ul>
<ul>
- <li>M - Define the bottom right corner of the selection area<br>
+ <li><em>M</em> - Define the bottom right corner of the selection area<br>
</li>
</ul>
<p>
<b>Editing The Alignment</b>
<ul>
- <li>Space - Insert a gap at the cursor position. <br> To
+ <li><em>Space</em> - Insert a gap at the cursor position. <br> To
insert 12 spaces at the current cursor, type 12 before pressing
Space.<br> To group insert, hold control or shift together
with space.
</li>
</ul>
<ul>
- <li>Delete (or backspace) - Delete a gap at the cursor
+ <li><em>Delete (or backspace)</em> - Delete a gap at the cursor
position.<br> To delete 12 spaces at the current cursor, type
12 before pressing Delete (or backspace).<br> To group
delete, hold down control or shift together with Delete (or
backspace).
</li>
</ul>
+ <p>
+ Some keyboard operations are not available in keyboard mode. See <a
+ href="../keys.html">the full list of keystrokes</a>.
</p>
</body>
</html>
</tr>
<tr>
<td width="60" align="center" nowrap><strong><a
+ id="Jalview.2.11.2">2.11.2</a><a id="Jalview.2.11.2.1">.2</a><br />
+ <em>19/04/2022</em></strong></td>
+ <td align="left" valign="top">
+ <ul>
+ <li>
+ <!-- JAL-3992 -->Minor documentation fixes
+ </li>
+ </ul>
+ </td>
+ <td align="left" valign="top">
+ <ul>
+ <li>
+ <!-- JAL-3365 -->Secondary structure annotation from Pfam
+ not displayed correctly
+ </li>
+ <li>
+ <!-- JAL-3997 -->Null pointer exceptions when displaying
+ annotation tooltips whilst in wrapped mode
+ </li>
+ </ul> <!-- <em>New Known Issues</em>-->
+ </td>
+ </tr>
+ <tr>
+ <td width="60" align="center" nowrap><strong><a
id="Jalview.2.11.2">2.11.2</a><a id="Jalview.2.11.2.1">.1</a><br />
<em>05/04/2022</em></strong></td>
<td align="left" valign="top">
2.11.2.0)
</li>
<li>
- <!-- JAL-3981 --> Sequence Details report can take a long
- time to be displayed for heavily annotated sequences (such
- as single genome contigs for highly studied organisms)
- </li>
- <li>
<!-- JAL-3886 -->Pfam and Rfam alignment retrieval as
gzipped stockholm doesn't work on JalviewJS build of 2.11.2
</li>
<p>
<strong>Welcome to Jalview Version $$Version-Rel$$ !!</strong><br/>
</p>
- <p>
- This Jalview release provides support for two popular 3D structure
- visualisation tools, new features for discovery of 3D structures,
- improved platform integration and a new command line tool allowing
- Jalview to be more easily called from scripts.
- </p>
+ <p>This is a patch release for the Jalview 2.11.2 series.</p>
+ <p>This release series provides support for two popular 3D
+ structure visualisation tools, new features for discovery of 3D
+ structures, improved platform integration and a new command line
+ tool allowing Jalview to be more easily called from scripts.</p>
<p>
<strong>View predicted protein structures via 3D-Beacons</strong> <br>
<p>
- For the full release notes, see <a
- href="releases.html#Jalview.2.11.2.0">the Jalview 2.11.2.0
+ For the full details, see <a
+ href="releases.html#Jalview.2.11.2.1">the Jalview 2.11.2.1
release notes</a>.
</p>
<p>
*/
package jalview.datamodel;
-import java.util.Locale;
-
-import jalview.analysis.Rna;
-import jalview.analysis.SecStrConsensus.SimpleBP;
-import jalview.analysis.WUSSParseException;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
+import jalview.analysis.Rna;
+import jalview.analysis.SecStrConsensus.SimpleBP;
+import jalview.analysis.WUSSParseException;
+
/**
* DOCUMENT ME!
*
// annotations[i].secondaryStructure + "'");
// TODO: 2.8.2 should this ss symbol validation check be a function in
// RNA/ResidueProperties ?
+ // allow for DSSP extended code:
+ // https://www.wikidoc.org/index.php/Secondary_structure#The_DSSP_code
+ // GHITEBS as well as C and X (for missing?)
if (annotations[i].secondaryStructure == '('
|| annotations[i].secondaryStructure == '['
|| annotations[i].secondaryStructure == '<'
|| annotations[i].secondaryStructure == '{'
|| annotations[i].secondaryStructure == 'A'
- || annotations[i].secondaryStructure == 'B'
- || annotations[i].secondaryStructure == 'C'
+ // || annotations[i].secondaryStructure == 'B'
+ // || annotations[i].secondaryStructure == 'C'
|| annotations[i].secondaryStructure == 'D'
// || annotations[i].secondaryStructure == 'E' // ambiguous on
// its own -- already checked above
|| annotations[i].secondaryStructure == 'F'
- || annotations[i].secondaryStructure == 'G'
+ // || annotations[i].secondaryStructure == 'G'
// || annotations[i].secondaryStructure == 'H' // ambiguous on
// its own -- already checked above
- || annotations[i].secondaryStructure == 'I'
+ // || annotations[i].secondaryStructure == 'I'
|| annotations[i].secondaryStructure == 'J'
|| annotations[i].secondaryStructure == 'K'
|| annotations[i].secondaryStructure == 'L'
|| annotations[i].secondaryStructure == 'P'
|| annotations[i].secondaryStructure == 'Q'
|| annotations[i].secondaryStructure == 'R'
- || annotations[i].secondaryStructure == 'S'
- || annotations[i].secondaryStructure == 'T'
+ // || annotations[i].secondaryStructure == 'S'
+ // || annotations[i].secondaryStructure == 'T'
|| annotations[i].secondaryStructure == 'U'
|| annotations[i].secondaryStructure == 'V'
|| annotations[i].secondaryStructure == 'W'
- || annotations[i].secondaryStructure == 'X'
+ // || annotations[i].secondaryStructure == 'X'
|| annotations[i].secondaryStructure == 'Y'
|| annotations[i].secondaryStructure == 'Z')
{
: annotations[index + offset].displayCharacter == null
|| annotations[index
+ offset].displayCharacter
- .length() == 0
- ? annotations[index
- + offset].secondaryStructure
- : annotations[index
- + offset].displayCharacter
- .charAt(0));
+ .length() == 0
+ ? annotations[index
+ + offset].secondaryStructure
+ : annotations[index
+ + offset].displayCharacter
+ .charAt(0));
}
@Override
String tooltip = AnnotationPanel.buildToolTip(anns[rowIndex], column,
anns);
- if (!tooltip.equals(lastTooltip))
+ if (tooltip == null ? tooltip != lastTooltip
+ : !tooltip.equals(lastTooltip))
{
lastTooltip = tooltip;
lastFormattedTooltip = tooltip == null ? null
// use the following regex to decide an annotations (whole) line is NOT an RNA
// SS (it contains only E,H,e,h and other non-brace/non-alpha chars)
private static final Regex NOT_RNASS = new Regex(
- "^[^<>[\\](){}A-DF-Za-df-z]*$");
+ "^[^<>[\\](){}ADFJ-RUVWYZadfj-ruvwyz]*$");
StringBuffer out; // output buffer
// check Alignment annotation
AlignmentAnnotation[] aa_new = al_input.getAlignmentAnnotation();
AlignmentAnnotation[] aa_original = al.getAlignmentAnnotation();
+ boolean expectProteinSS = !al.isNucleotide();
+ assertTrue(
+ "Alignments not both "
+ + (al.isNucleotide() ? "nucleotide" : "protein"),
+ al_input.isNucleotide() == al.isNucleotide());
// note - at moment we do not distinguish between alignment without any
// annotation rows and alignment with no annotation row vector
assertEqualSecondaryStructure(
"Different alignment annotation at position " + i,
aa_original[i], aa_new[i], allowNullAnnotation);
+ if (aa_original[i].hasIcons)
+ {
+ assertTrue(
+ "Secondary structure expected to be "
+ + (expectProteinSS ? "protein" : "nucleotide"),
+ expectProteinSS == !aa_original[i].isRNA());
+ }
// compare graphGroup or graph properties - needed to verify JAL-1299
assertEquals("Graph type not identical.", aa_original[i].graph,
aa_new[i].graph);