All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hfg.bio.proteinproperty.ExtinctionCoeff Maven / Gradle / Ivy

There is a newer version: 20240423
Show newest version
package com.hfg.bio.proteinproperty;


import java.math.BigDecimal;
import java.math.MathContext;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import com.hfg.bio.AminoAcid;
import com.hfg.bio.seq.AminoAcidComposition;
import com.hfg.bio.seq.Protein;

//------------------------------------------------------------------------------
/**
 A280 extinction coefficient packaged as a protein property for ease of integration with
 other protein properties.
 
Uses residue coefficients from Pace, C.N. et. al. (1995). "How to measure and predict the molar absorption coefficient of a protein." Protein Science, 4, 2411-2423.
@author J. Alex Taylor, hairyfatguy.com
*/ //------------------------------------------------------------------------------ // com.hfg Library // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library 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 // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // J. Alex Taylor, President, Founder, CEO, COO, CFO, OOPS hairyfatguy.com // [email protected] //------------------------------------------------------------------------------ public class ExtinctionCoeff extends SimpleProteinProperty { private static Map sUniqueMap = new HashMap<>(); protected static final String TYPE = "Extinction Coeff."; public static final ExtinctionCoeff PROPERTY = new ExtinctionCoeff("Extinction Coeff.", "Extinction Coefficient at A280"); //########################################################################### // CONSTRUCTORS //########################################################################### //--------------------------------------------------------------------------- private ExtinctionCoeff(String inName, String inDescription) { super(inName); setDescription(inDescription); sUniqueMap.put(inName, this); } //########################################################################### // PUBLIC METHODS //########################################################################### //--------------------------------------------------------------------------- public static Collection values() { return sUniqueMap.values(); } //-------------------------------------------------------------------------- @Override public String getType() { return TYPE; } //--------------------------------------------------------------------------- public Integer calculate(Protein inProtein) { return calculate(inProtein, null); } //--------------------------------------------------------------------------- @Override public Integer calculate(Protein inProtein, SimpleProteinPropertyCalcSettings inSettings) { double value = getRawValue(inProtein, inSettings); // To get to 3 sig. figs. ... int length = ((int)value + "").length(); if (length > 3) { BigDecimal bd = new BigDecimal(value); bd = bd.round(new MathContext(3)); value = bd.doubleValue(); } return (int) value; } //-------------------------------------------------------------------------- protected int getRawValue(Protein inProtein, SimpleProteinPropertyCalcSettings inSettings) { int rawValue = 0; if (inProtein.length() > 0) { if (null == inSettings) { inSettings = new SimpleProteinPropertyCalcSettings(); } AminoAcidComposition aaComposition = inProtein.getAminoAcidComposition(); Integer numDisulfideBonds = null; // Only consider disulfide bonds if were in native mode if (inSettings.getProteinAnalysisMode().equals(ProteinAnalysisMode.NATIVE)) { numDisulfideBonds = inProtein.getTotalNumDisulfideBonds(); // If the number of disulfide bonds has not been specified, assume that all cysteines are disulfide-linked. if (null == numDisulfideBonds) { numDisulfideBonds = (aaComposition.get(AminoAcid.CYSTEINE) / 2); } } rawValue = aaComposition.get(AminoAcid.TRYPTOPHAN) * 5500 + aaComposition.get(AminoAcid.TYROSINE) * 1490 + (numDisulfideBonds != null ? numDisulfideBonds * 125 : 0); } return rawValue; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy