X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FProfile.java;fp=src%2Fjalview%2Fdatamodel%2FProfile.java;h=15018083f875e86fd57b15a8c987f15366ac9e6c;hb=2595e9d4ee0dbbd3406a98c4e49a61ccde806479;hp=0000000000000000000000000000000000000000;hpb=e20075ba805d744d7cc4976e2b8d5e5840fb0a8d;p=jalview.git diff --git a/src/jalview/datamodel/Profile.java b/src/jalview/datamodel/Profile.java new file mode 100644 index 0000000..1501808 --- /dev/null +++ b/src/jalview/datamodel/Profile.java @@ -0,0 +1,163 @@ +/* + * 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 . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ +package jalview.datamodel; + + +/** + * A profile for one column of an alignment + * + * @author gmcarstairs + * + */ +public class Profile implements ProfileI +{ + /* + * an object holding counts of symbols in the profile + */ + private ResidueCount counts; + + /* + * the number of sequences (gapped or not) in the profile + */ + private int height; + + /* + * the number of non-gapped sequences in the profile + */ + private int gapped; + + /* + * the highest count for any residue in the profile + */ + private int maxCount; + + /* + * the residue (e.g. K) or residues (e.g. KQW) with the + * highest count in the profile + */ + private String modalResidue; + + /** + * Constructor which allows derived data to be stored without having to store + * the full profile + * + * @param seqCount + * the number of sequences in the profile + * @param gaps + * the number of gapped sequences + * @param max + * the highest count for any residue + * @param modalres + * the residue (or concatenated residues) with the highest count + */ + public Profile(int seqCount, int gaps, int max, String modalRes) + { + this.height = seqCount; + this.gapped = gaps; + this.maxCount = max; + this.modalResidue = modalRes; + } + + /* (non-Javadoc) + * @see jalview.datamodel.ProfileI#setCounts(jalview.datamodel.ResidueCount) + */ + @Override + public void setCounts(ResidueCount residueCounts) + { + this.counts = residueCounts; + } + + /* (non-Javadoc) + * @see jalview.datamodel.ProfileI#getPercentageIdentity(boolean) + */ + @Override + public float getPercentageIdentity(boolean ignoreGaps) + { + if (height == 0) + { + return 0f; + } + float pid = 0f; + if (ignoreGaps && gapped < height) + { + pid = (maxCount * 100f) / (height - gapped); + } + else + { + pid = (maxCount * 100f) / height; + } + return pid; + } + + /* (non-Javadoc) + * @see jalview.datamodel.ProfileI#getCounts() + */ + @Override + public ResidueCount getCounts() + { + return counts; + } + + /* (non-Javadoc) + * @see jalview.datamodel.ProfileI#getHeight() + */ + @Override + public int getHeight() + { + return height; + } + + /* (non-Javadoc) + * @see jalview.datamodel.ProfileI#getGapped() + */ + @Override + public int getGapped() + { + return gapped; + } + + /* (non-Javadoc) + * @see jalview.datamodel.ProfileI#getMaxCount() + */ + @Override + public int getMaxCount() + { + return maxCount; + } + + /* (non-Javadoc) + * @see jalview.datamodel.ProfileI#getModalResidue() + */ + @Override + public String getModalResidue() + { + return modalResidue; + } + + /* (non-Javadoc) + * @see jalview.datamodel.ProfileI#getNonGapped() + */ + @Override + public int getNonGapped() + { + return height - gapped; + } +}