Package chemaxon.marvin.calculations
Class IsoelectricPointPlugin
- java.lang.Object
-
- chemaxon.marvin.plugin.CalculatorPlugin
-
- chemaxon.marvin.calculations.IsoelectricPointPlugin
-
- All Implemented Interfaces:
chemaxon.license.Licensable
@PublicAPI public class IsoelectricPointPlugin extends CalculatorPlugin
Plugin class for isoelectric point and pH - charge distribution calculation.API usage example:
// create plugin IsoelectricPointPlugin plugin = new IsoelectricPointPlugin(); // set plugin parameters plugin.setpHStep(0.4); // set target molecule plugin.setMolecule(mol); // run the calculation plugin.run(); // get results // isoelectric point double pI = plugin.getpI(); // charge distribution double[] pHs = plugin.getpHs(); double[] charges = plugin.getChargeDistribution(); // print results if (Double.isNaN(pI)) { System.out.println("No isoelectric point."); } else { System.out.println("pI = "+plugin.format(pI)); } System.out.println("\npH\tcharge"); for (int i=0; i < pHs.length; ++i) { System.out.println(plugin.format(pHs[i])+"\t"+ plugin.format(charges[i])); }
For concurrent plugin example applications using ChemAxon's concurrent framework, refer to the Concurrent plugin examples.
- Since:
- Marvin 3.6
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class chemaxon.marvin.plugin.CalculatorPlugin
CalculatorPlugin.HydrogenData
-
-
Field Summary
Fields Modifier and Type Field Description static String
TYPE_DISTR
Type constant for microspecies distribution.-
Fields inherited from class chemaxon.marvin.plugin.CalculatorPlugin
ATOM, BLUE, CALCRGB_OFF, COVALENT_HYDRATION_ERROR_REMARK, CRITICAL_ERROR_MSG, EPSILON, explicitHydrogens, INCORRECT_AROMATIC_NITROGEN_REMARK, INSTABLE_TAUTOMERIC_FORM_REMARK, KEEP_HYDROGENS, keepHydrogens, licenseEnvironment, MOLECULE, MOLECULES, NAN, PLUGIN_CLASS_KEY, PLUGIN_DIR, RED, TRUE
-
-
Constructor Summary
Constructors Constructor Description IsoelectricPointPlugin()
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
checkMolecule(Molecule mol)
Checks the input molecule.protected Molecule
createModifiedInputMolecule(Molecule mol)
Returns the major tautomeric form of the molecule.double[]
getChargeDistribution()
Returns the charge distribution array over pH values.double[][]
getChargePlusMinusDistribution()
Returns the plus and the minus parts of the charge distribution array over pH values.String
getErrorMessage()
Returns the calculation error information message ifrun()
returned false (calculation error): hydrogen valence error.double[]
getpHs()
Returns the pH array.double
getpI()
Returns the isoelectric point.double[][]
getpKaOfpI()
Returns the pKa values of the calculated isoelectric point.String
getProductName()
Returns the product identifier of the plugin as given byLicenseManager
.Object
getResult(Object type, int index)
Returns the result item for the specified key and index.Object
getResult(Object type, String arg)
Returns the result item for the specified pH.String
getResultAsString(Object type, int index, Object result)
Returns the specified result in String format.int
getResultCount(Object type)
Returns the number of result items for the given result key.int
getResultDomain(Object type)
Returns the calculation domain.Molecule
getResultMolecule()
Returns the result molecule for display.Object[]
getResultTypes()
Returns the result types.String
getTypeString(Object type)
Returns a string representation of the given type.String
getWarningMessage()
Returns the calculation warning information message if no isoelectric point exists, returns the empty string otherwise.boolean
isChargeCalc()
Returnstrue
if pH-Charge calculation.boolean
run()
Runs the isoelectric point and charge distribution calculations.void
setConsiderTautomerization(boolean considerTautomerization)
Sets to consider tautomerization.protected void
setInputMolecule(Molecule mol)
Sets the input molecule.void
setKeepExplicitHydrogens(boolean keepExplicitHydrogens)
Sets if result molecule keeps explicit hydrogens or notvoid
setParameters(Properties params)
Sets the input parameters for the plugin.void
setpH(double pH)
Sets a single pH value for the calculation of charge distribution.void
setpHLower(double lower)
Sets pH lower limit for the calculation of charge distribution (default:0.0
).void
setpHStep(double step)
Sets pH step for the calculation of charge distribution.void
setpHUpper(double upper)
Sets pH upper limit for the calculation of charge distribution (default:14.0
).void
setProgressMonitor(MProgressMonitor pmon)
Sets a progress observer to be used inrun()
to display progress status.void
standardize(Molecule mol)
Standardizes the molecule.-
Methods inherited from class chemaxon.marvin.plugin.CalculatorPlugin
addHeavyAtomLimitChecker, addInputChecker, arrangeHydrogenIncerments, canRepeat, checkLicense, checkType, containsCoordinateBond, containsMulticenterSgroup, containsPseudoAtom, containsSRUSgroup, create, createStandardizedMolecule, createStandardizedMolecule, dehydrogenize, format, format, format, format, getAtomCount, getAtomIndex, getAtomIndexMap, getCalcMolecule, getDisplayMolecule, getDocument, getDoublePrecision, getExplicitHydrogenData, getInputMolDim, getMainMolecule, getOriginalMolecule, getpH, getPluginResource, getQueryMoleculeErrorMessage, getRemark, getResult, getResult, getResultAsRGB, getResultAsRGB, getResultAsString, getResultCount, getResultDomain, getResultMessage, getResultMolecules, getResultsAsRGB, getResultsAsRGB, getResultsAsString, getResultsAsString, getResultSource, handlesMultiFragmentMolecules, isInputMoleculeAromatized, isLicensed, isMsCalc, isMultiThreadedRunEnabled, isNegligibleResult, isOK, isRgrouped, loadClass, readAttribute, removeWhitespace, restoreExplicitHydrogens, setAtomIndexMap, setDoublePrecision, setDoublePrecision, setDoublePrecision, setKeepHydrogens, setLicenseEnvironment, setMolecule, setMolecule, setMolecule, setMolecule, standardizeIonicGroups, standardizeNeutralGroups
-
-
-
-
Field Detail
-
TYPE_DISTR
public static final String TYPE_DISTR
Type constant for microspecies distribution.- See Also:
- Constant Field Values
-
-
Method Detail
-
getProductName
public String getProductName()
Returns the product identifier of the plugin as given byLicenseManager
.- Specified by:
getProductName
in classCalculatorPlugin
- Returns:
- The identifier
LicenseManager.PROTONATION_PLUGIN_GROUP
-
setProgressMonitor
public void setProgressMonitor(MProgressMonitor pmon)
Sets a progress observer to be used inrun()
to display progress status. Short calculations may ignore the observer object. The default implementation does nothing.- Overrides:
setProgressMonitor
in classCalculatorPlugin
- Parameters:
pmon
- is the progress monitor, may benull
-
setParameters
public void setParameters(Properties params) throws PluginException
Sets the input parameters for the plugin. Isoelectric point parameters and value ranges:- type: pI,chargedistr
- precision: 0-8 or inf (default: 2)
- pH: pH value - calculate charge distribution at a single pH
- lower: pH lower limit (default: 0.0)
- upper: pH upper limit (default: 14.0)
- step: pH step to be taken between lower and upper limits (default: 0.5)
- Overrides:
setParameters
in classCalculatorPlugin
- Parameters:
params
- is the parameter table- Throws:
PluginException
- on error
-
isChargeCalc
public boolean isChargeCalc()
Returnstrue
if pH-Charge calculation.- Returns:
true
if pH-Charge calculation
-
setpHLower
public void setpHLower(double lower)
Sets pH lower limit for the calculation of charge distribution (default:0.0
).- Parameters:
lower
- is the pH lower limit- Since:
- Marvin 5.2
-
setpHUpper
public void setpHUpper(double upper)
Sets pH upper limit for the calculation of charge distribution (default:14.0
).- Parameters:
upper
- is the pH upper limit- Since:
- Marvin 5.2
-
setpHStep
public void setpHStep(double step)
Sets pH step for the calculation of charge distribution. Range: between0.0
and0.5
. The default value is0.5
.- Parameters:
step
- is the pH step
-
setpH
public void setpH(double pH)
Sets a single pH value for the calculation of charge distribution.- Parameters:
pH
- is the pH value- Since:
- Marvin 5.2
-
setConsiderTautomerization
public void setConsiderTautomerization(boolean considerTautomerization)
Sets to consider tautomerization. Default:false
.- Parameters:
considerTautomerization
- the calculation will consider tautomerization and resonance if set (true
)
-
checkMolecule
public void checkMolecule(Molecule mol) throws PluginException
Checks the input molecule. Throws exception if the molecule molecule contains R-groups.- Overrides:
checkMolecule
in classCalculatorPlugin
- Parameters:
mol
- is the input molecule- Throws:
PluginException
- with error message for the user if the molecule is refused
-
setInputMolecule
protected void setInputMolecule(Molecule mol) throws PluginException
Sets the input molecule.- Specified by:
setInputMolecule
in classCalculatorPlugin
- Parameters:
mol
- is the input molecule- Throws:
PluginException
- on error
-
createModifiedInputMolecule
protected final Molecule createModifiedInputMolecule(Molecule mol) throws PluginException
Returns the major tautomeric form of the molecule.- Overrides:
createModifiedInputMolecule
in classCalculatorPlugin
- Parameters:
mol
- is the input molecule- Returns:
- the major tautomeric form of the molecule
- Throws:
PluginException
- on error
-
run
public boolean run() throws PluginException
Runs the isoelectric point and charge distribution calculations.- Specified by:
run
in classCalculatorPlugin
- Returns:
- true if the calculation was successful, false if the number of ionizable atoms exceeds the specified limit
- Throws:
PluginException
- on error- See Also:
CalculatorPlugin.getErrorMessage()
-
getErrorMessage
public String getErrorMessage()
Returns the calculation error information message ifrun()
returned false (calculation error): hydrogen valence error.- Overrides:
getErrorMessage
in classCalculatorPlugin
- Returns:
- the calculation error information message
-
getpI
public double getpI()
Returns the isoelectric point.- Returns:
- the isoelectric point
-
getpKaOfpI
public double[][] getpKaOfpI()
Returns the pKa values of the calculated isoelectric point.- Returns:
- array of the pKa values acidic pKa is returned in the zero column e.g [atomindex][0] basic pKa is returned in the first column e.g. [atomindex][1]
-
getpHs
public double[] getpHs()
Returns the pH array.- Returns:
- the pH array
-
getChargeDistribution
public double[] getChargeDistribution()
Returns the charge distribution array over pH values.- Returns:
- the charge distribution array
- See Also:
getpHs()
-
getChargePlusMinusDistribution
public double[][] getChargePlusMinusDistribution()
Returns the plus and the minus parts of the charge distribution array over pH values.- Returns:
- the distribution array of the negative and the positive charge count. negative charge count [0..size][0] positive charge count [0..size][1] size=(pHUpper-pHLower)/pHStepSize;
- See Also:
getpHs()
-
getResultTypes
public Object[] getResultTypes()
Returns the result types.- Overrides:
getResultTypes
in classCalculatorPlugin
- Returns:
- the result types
-
getResultDomain
public int getResultDomain(Object type)
Returns the calculation domain.- Overrides:
getResultDomain
in classCalculatorPlugin
- Parameters:
type
- is the result type- Returns:
- the calculation domain
- See Also:
getResultTypes()
-
getResultCount
public int getResultCount(Object type)
Returns the number of result items for the given result key. pKa returns the atom count.- Overrides:
getResultCount
in classCalculatorPlugin
- Parameters:
type
- is the result type- Returns:
- the number of result items
- See Also:
getResultTypes()
-
getResult
public Object getResult(Object type, int index) throws PluginException
Returns the result item for the specified key and index.- Overrides:
getResult
in classCalculatorPlugin
- Parameters:
type
- is the result typeindex
- is the result index- Returns:
- the result item for the specified key and index
- Throws:
PluginException
- if the result cannot be returned- See Also:
CalculatorPlugin.getResultTypes()
-
getResult
public Object getResult(Object type, String arg) throws PluginException
Returns the result item for the specified pH.- Overrides:
getResult
in classCalculatorPlugin
- Parameters:
type
- is the result type (not used)arg
- is the pH as string- Returns:
- the result item for the specified pH
- Throws:
PluginException
- if the result cannot be returned- See Also:
CalculatorPlugin.getResultTypes()
-
getResultAsString
public String getResultAsString(Object type, int index, Object result) throws PluginException
Returns the specified result in String format. If the type is TYPE_DISTR then returns the pH - distribution table as a 2-column tab-separated table with the 0-th element the pH array and the 1-st element the distribution array corresponding to the microspecies with the specified index (result index). Otherwise returns the rounded pI value with one fractional digit precision.- Overrides:
getResultAsString
in classCalculatorPlugin
- Parameters:
type
- is the result typeindex
- is the result indexresult
- is the result item- Returns:
- the specified result in String format
- Throws:
PluginException
- if an invalid result item is given
-
getTypeString
public String getTypeString(Object type)
Returns a string representation of the given type.- Overrides:
getTypeString
in classCalculatorPlugin
- Parameters:
type
- is the type object- Returns:
- the type string
-
getWarningMessage
public String getWarningMessage()
Returns the calculation warning information message if no isoelectric point exists, returns the empty string otherwise.- Overrides:
getWarningMessage
in classCalculatorPlugin
- Returns:
- the calculation warning information message
-
getResultMolecule
public Molecule getResultMolecule() throws PluginException
Returns the result molecule for display. Atomic results are stored in atom extra labels (MolAtom.getExtraLabel()
). Molecular results are stored in molecule properties with keys being the result types (Molecule.getProperty(String)
).- Overrides:
getResultMolecule
in classCalculatorPlugin
- Returns:
- the result molecule
- Throws:
PluginException
- on error- Since:
- Marvin 4.0
-
standardize
public void standardize(Molecule mol)
Standardizes the molecule. This is done by performing the transformations necessary to run the plugin (e.g. aromatize, dehydrogenize, bring nitro groups to common form). Apart from the default standardization (aromatize and nitro) removes explicit hydrogens and stores the index-map between atom indices in the original and the new molecule. This map is used when the macropKa values and types are queried and the new atom indices should be mapped to the original ones. TODO: replace by call to chemaxon.standardizer.Standardizer- Overrides:
standardize
in classCalculatorPlugin
- Parameters:
mol
- is the molecule to be standardized
-
setKeepExplicitHydrogens
public void setKeepExplicitHydrogens(boolean keepExplicitHydrogens)
Sets if result molecule keeps explicit hydrogens or not- Parameters:
keepExplicitHydrogens
- if the result should keep explicit hydrogens or not
-
-