From 1efb093b9e6321b1a076b73611e82ca43a520de1 Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Thu, 23 May 2024 20:33:23 +0100 Subject: [PATCH] JAL-4159 first stab at injecting blosum62 similarity scores rather than alignment scores - still need to condition similarity score matrix in the same way as is done for pairwise alignments using AlignSeq.scoreAlignment --- src/jalview/analysis/AlignSeq.java | 2 +- src/jalview/analysis/PaSiMap.java | 41 ++++++++++++++++++++++++++++++++---- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/jalview/analysis/AlignSeq.java b/src/jalview/analysis/AlignSeq.java index 22cffb1..d0f0c94 100755 --- a/src/jalview/analysis/AlignSeq.java +++ b/src/jalview/analysis/AlignSeq.java @@ -1419,7 +1419,7 @@ public class AlignSeq */ public void scoreAlignment() { - + // TODO JAL-4423 - review and optimise - make it possible to score any pair of aligned sequences in the same way getIndelfreeAstr(); meanScore(); hypotheticMaxScore(); diff --git a/src/jalview/analysis/PaSiMap.java b/src/jalview/analysis/PaSiMap.java index 2d015ce..8e7d7de 100755 --- a/src/jalview/analysis/PaSiMap.java +++ b/src/jalview/analysis/PaSiMap.java @@ -20,9 +20,14 @@ */ package jalview.analysis; +import jalview.analysis.scoremodels.ScoreModels; +import jalview.analysis.scoremodels.SimilarityParams; import jalview.api.analysis.ScoreModelI; import jalview.api.analysis.SimilarityParamsI; import jalview.bin.Console; +import jalview.datamodel.Alignment; +import jalview.datamodel.AlignmentI; +import jalview.datamodel.AlignmentView; import jalview.datamodel.Point; import jalview.datamodel.SequenceI; import jalview.datamodel.SequenceGroup; @@ -204,10 +209,38 @@ public class PaSiMap implements Runnable { try { - //alignment = new PairwiseAlignPanel(seqs, true, 100, 5); - alignment.calculate(); - float[][] scores = alignment.getAlignmentScores(); //bigger index first -- eg scores[14][13] - SequenceI[] iseqs = alignment.getInputSequences(); + // alignment = new PairwiseAlignPanel(seqs, true, 100, 5); + float[][] scores; + SequenceI[] iseqs; + if (!dontRealign) + { + alignment.calculate(); + iseqs = alignment.getInputSequences(); + scores = alignment.getAlignmentScores(); // bigger index first -- eg + // scores[14][13] + } + else + { + AlignmentView alignview = seqs.getAlignmentView(true); + iseqs = alignview.getEditedSequences(seqs.getGapCharacter(), false); + ScoreModelI sm = scoreModel; + if (sm== null) + { + sm = ScoreModels.getInstance().getDefaultModel(!seqs.isNucleotide()); + } + MatrixI similarities = sm.findSimilarities(alignview, + SimilarityParams.Jalview); + scores = new float[similarities.height()][similarities.width()]; + for (int i = 0; i < scores.length; i++) + { + double[] row = similarities.getRow(i); + for (int j = 0; j < scores[i].length; j++) + { + scores[i][j] = (float) row[j]; + } + } + } + Connectivity.getConnectivity(iseqs, scores, dim); pairwiseScores = new Matrix(scores); -- 1.7.10.2