X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FAAFrequency.java;h=d56fb01ec54b4a71f77db484e6b9e58bc370c5f9;hb=60805a2d20a347ef1958a7a5576cda7a186f8a8d;hp=46264d6eba335182d77258de4be3c2a8771828f7;hpb=cf4f0796ccc2d70bad2675e2feda184e5bef7a79;p=jalview.git diff --git a/src/jalview/analysis/AAFrequency.java b/src/jalview/analysis/AAFrequency.java index 46264d6..d56fb01 100755 --- a/src/jalview/analysis/AAFrequency.java +++ b/src/jalview/analysis/AAFrequency.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle * * This file is part of Jalview. * @@ -105,6 +105,11 @@ public class AAFrequency for (j = 0; j < jSize; j++) { + if (sequences[j]==null) + { + System.err.println("WARNING: Consensus skipping null sequence - possible race condition."); + continue; + } seq = sequences[j].getSequence(); if (seq.length > i) { @@ -204,13 +209,22 @@ public class AAFrequency boolean includeAllConsSymbols, char[] alphabet) { float tval, value; - if (consensus==null || consensus.annotations==null || consensus.annotations.length= hconsensus.length) + { + // happens if sequences calculated over were shorter than alignment + // width + consensus.annotations[i] = null; + continue; + } value = 0; if (ignoreGapsInConsensusCalculation) { @@ -307,14 +321,16 @@ public class AAFrequency } ; jalview.util.QuickSort.sort(vl, ca); - rtnval[0] = 1; + rtnval[0] = 2; + rtnval[1]=0; for (int c = ca.length - 1; profile[0][((char[]) ca[c])[0]] > 0; c--) { if (((char[]) ca[c])[0] != '-') { rtnval[rtnval[0]++] = ((char[]) ca[c])[0]; - rtnval[rtnval[0]++] = (int) (((float) profile[0][((char[]) ca[c])[0]]) * 100f / (float) profile[1][ignoreGapsInConsensusCalculation ? 1 + rtnval[rtnval[0]] = (int) (((float) profile[0][((char[]) ca[c])[0]]) * 100f / (float) profile[1][ignoreGapsInConsensusCalculation ? 1 : 0]); + rtnval[1]+=rtnval[rtnval[0]++]; } } return rtnval;