+++ /dev/null
-/*
- * PCA calculation treatment of gaps (and C->R score) changed in Jalview 2.10.2.
- * To restore behaviour prior as at 2.10.1, run the script below
- * NB this will change Tree calculations using similarity matrices
- */
-
-/*
- * START 2.10.1 mode script
- */
-import jalview.schemes.ResidueProperties
-
-for (int row = 0 ; row <= ResidueProperties.maxProteinIndex; row++)
-{
- ResidueProperties.BLOSUM62[row][23] = ResidueProperties.BLOSUM62[row][22]
- ResidueProperties.BLOSUM62[23][row] = ResidueProperties.BLOSUM62[row][22]
- ResidueProperties.PAM250[row][23] = ResidueProperties.PAM250[row][22]
- ResidueProperties.PAM250[23][row] = ResidueProperties.PAM250[row][22]
-}
-ResidueProperties.BLOSUM62[4][1]=3 // C-R score
-for (int row = 0 ; row <= ResidueProperties.maxNucleotideIndex; row++)
-{
- ResidueProperties.DNA[row][10] = ResidueProperties.DNA[row][9]
- ResidueProperties.DNA[10][row] = ResidueProperties.DNA[row][9]
-}
-/*
- * END 2.10.1 mode script
- */
-
-/*
- * To reinstate 2.10.2 calculation mode, including Tree calculations,
- * run the script below
- */
-/*
- * START 2.10.2 mode script
- */
- import jalview.schemes.ResidueProperties
-
-for (int row = 0 ; row < ResidueProperties.maxProteinIndex; row++)
-{
- ResidueProperties.BLOSUM62[row][23] = -4
- ResidueProperties.BLOSUM62[23][row] = -4
- ResidueProperties.PAM250[row][23] = -8
- ResidueProperties.PAM250[23][row] = -8
-}
-ResidueProperties.BLOSUM62[23][23] = 1
-ResidueProperties.PAM250[23][23] = 1
-ResidueProperties.BLOSUM62[4][1]=-3 // C-R score
-for (int row = 0 ; row <= ResidueProperties.maxNucleotideIndex; row++)
-{
- ResidueProperties.DNA[row][10] = 1
- ResidueProperties.DNA[10][row] = 1
-}
-/*
- * END 2.10.2 mode script
- */
public class PCAModel
{
+ /*
+ * Jalview 2.10.1 treated gaps as X (peptide) or N (nucleotide)
+ * for pairwise scoring; 2.10.2 uses gap score (last column) in
+ * score matrix (JAL-2397)
+ * Set this flag to true (via Groovy) for 2.10.1 behaviour
+ */
+ private static boolean scoreGapAsAny = false;
public PCAModel(AlignmentView seqstrings2, SequenceI[] seqs2,
boolean nucleotide2)
public void run()
{
- String[] sequenceStrings = seqstrings.getSequenceStrings(' ');
+ char gapChar = scoreGapAsAny ? (nucleotide ? 'N' : 'X') : ' ';
+ String[] sequenceStrings = seqstrings.getSequenceStrings(gapChar);
pca = new PCA(sequenceStrings, nucleotide,
score_matrix);
pca.setJvCalcMode(jvCalcMode);