Previous TOC Next | Fingerprints::TopologicalPharmacophoreAtomPairsFingerprints.pm | Code | PDF | PDFGreen | PDFA4 | PDFA4Green

## NAME

TopologicalPharmacophoreAtomPairsFingerprints

## SYNOPSIS

use Fingerprints::TopologicalPharmacophoreAtomPairsFingerprints;

use Fingerprints::TopologicalPharmacophoreAtomPairsFingerprints qw(:all);

## DESCRIPTION

TopologicalPharmacophoreAtomPairsFingerprints [ Ref 60-62, Ref 65, Ref 68 ] class provides the following methods:

new, GenerateFingerprints, GetDescription, GetAtomPairIDs, SetAtomTypesToUse, SetAtomTypesWeight, SetFuzzFactor, SetFuzzificationMethodology, SetFuzzificationMode, SetMaxDistance, SetMinDistance, SetNormalizationMethodology, SetValuesPrecision, StringifyTopologicalPharmacophoreAtomPairsFingerprints

TopologicalPharmacophoreAtomPairsFingerprints is derived from Fingerprints class which in turn is derived from ObjectProperty base class that provides methods not explicitly defined in TopologicalPharmacophoreAtomPairsFingerprints, Fingerprints or ObjectProperty classes using Perl's AUTOLOAD functionality. These methods are generated on-the-fly for a specified object property:

Set<PropertyName>(<PropertyValue>);
$PropertyValue = Get<PropertyName>();
Delete<PropertyName>();

Based on the values specified for AtomTypesToUse, pharmacophore atom types are assigned to all non-hydrogen atoms in a molecule and a distance matrix is generated. A pharmacophore atom pairs basis set is initialized for all unique possible pairs within MinDistance and MaxDistance range.

Let:
P = Valid pharmacophore atom type
Px = Pharmacophore atom type x
Py = Pharmacophore atom type y
Dmin = Minimum distance corresponding to number of bonds between two atoms
Dmax = Maximum distance corresponding to number of bonds between two atoms
D = Distance corresponding to number of bonds between two atoms
Px-Dn-Py = Pharmacophore atom pair ID for atom types Px and Py at distance Dn
P = Number of pharmacophore atom types to consider
PPDn = Number of possible unique pharmacophore atom pairs at a distance Dn
PPT = Total number of possible pharmacophore atom pairs at all distances between Dmin and Dmax
Then:
PPD = (P * (P - 1))/2 + P
PPT = ((Dmax - Dmin) + 1) * ((P * (P - 1))/2 + P)
= ((Dmax - Dmin) + 1) * PPD
So for default values of Dmin = 1, Dmax = 10 and P = 5,
PPD = (5 * (5 - 1))/2 + 5 = 15
PPT = ((10 - 1) + 1) * 15 = 150
The pharmacophore atom pairs bais set includes 150 values.
The atom pair IDs correspond to:
Px-Dn-Py = Pharmacophore atom pair ID for atom types Px and Py at distance Dn
For example: H-D1-H, H-D2-HBA, PI-D5-PI and so on

Using distance matrix and pharmacohore atom types, occurrence of unique pharmacohore atom pairs is counted. The contribution of each atom type to atom pair interaction is optionally weighted by specified AtomTypesWeight before assigning its count to appropriate distance bin. Based on NormalizationMethodology option, pharmacophore atom pairs count is optionally normalized. Additionally, pharmacohore atom pairs count is optionally fuzzified before or after the normalization controlled by values of FuzzifyAtomPairsCount, FuzzificationMode, FuzzificationMethodology and FuzzFactor.

The final pharmacophore atom pairs count along with atom pair identifiers involving all non-hydrogen atoms, with optional normalization and fuzzification, constitute pharmacophore topological atom pairs fingerprints of the molecule.

For ArbitrarySize value of AtomPairsSetSizeToUse, the fingerprint vector correspond to only those topological pharmacophore atom pairs which are present and have non-zero count. However, for FixedSize value of AtomPairsSetSizeToUse, the fingerprint vector contains all possible valid topological pharmacophore atom pairs with both zero and non-zero count values.

The current release of MayaChemTools generates the following types of topological pharmacophore atom pairs fingerprints vector strings:

FingerprintsVector;TopologicalPharmacophoreAtomPairs:ArbitrarySize:Min
Distance1:MaxDistance10;54;NumericalValues;IDsAndValuesString;H-D1-H H
-D1-NI HBA-D1-NI HBD-D1-NI H-D2-H H-D2-HBA H-D2-HBD HBA-D2-HBA HBA-D2-
HBD H-D3-H H-D3-HBA H-D3-HBD H-D3-NI HBA-D3-NI HBD-D3-NI H-D4-H H-D4-H
BA H-D4-HBD HBA-D4-HBA HBA-D4-HBD HBD-D4-HBD H-D5-H H-D5-HBA H-D5-...;
18 1 2 1 22 12 8 1 2 18 6 3 1 1 1 22 13 6 5 7 2 28 9 5 1 1 1 36 16 10
3 4 1 37 10 8 1 35 10 9 3 3 1 28 7 7 4 18 16 12 5 1 2 1
FingerprintsVector;TopologicalPharmacophoreAtomPairs:FixedSize:MinDist
ance1:MaxDistance10;150;OrderedNumericalValues;ValuesString;18 0 0 1 0
0 0 2 0 0 1 0 0 0 0 22 12 8 0 0 1 2 0 0 0 0 0 0 0 0 18 6 3 1 0 0 0 1
0 0 1 0 0 0 0 22 13 6 0 0 5 7 0 0 2 0 0 0 0 0 28 9 5 1 0 0 0 1 0 0 1 0
0 0 0 36 16 10 0 0 3 4 0 0 1 0 0 0 0 0 37 10 8 0 0 0 0 1 0 0 0 0 0 0
0 35 10 9 0 0 3 3 0 0 1 0 0 0 0 0 28 7 7 4 0 0 0 0 0 0 0 0 0 0 0 18...
FingerprintsVector;TopologicalPharmacophoreAtomPairs:FixedSize:MinDist
ance1:MaxDistance10;150;OrderedNumericalValues;IDsAndValuesString;H-D1
-H H-D1-HBA H-D1-HBD H-D1-NI H-D1-PI HBA-D1-HBA HBA-D1-HBD HBA-D1-NI H
BA-D1-PI HBD-D1-HBD HBD-D1-NI HBD-D1-PI NI-D1-NI NI-D1-PI PI-D1-PI H-D
2-H H-D2-HBA H-D2-HBD H-D2-NI H-D2-PI HBA-D2-HBA HBA-D2-HBD HBA-D2...;
18 0 0 1 0 0 0 2 0 0 1 0 0 0 0 22 12 8 0 0 1 2 0 0 0 0 0 0 0 0 18 6 3
1 0 0 0 1 0 0 1 0 0 0 0 22 13 6 0 0 5 7 0 0 2 0 0 0 0 0 28 9 5 1 0 0 0
1 0 0 1 0 0 0 0 36 16 10 0 0 3 4 0 0 1 0 0 0 0

## METHODS

new
  $TPAPFP = new TopologicalPharmacophoreAtomPairsFingerprints( %NamesAndValues);

  Using specified TopologicalPharmacophoreAtomPairsFingerprints property names and values hash, new method creates a new object and returns a reference to newly created TopologicalPharmacophoreAtomPairsFingerprints object. By default, the following properties are initialized:

  Molecule = ''
  Type = 'TopologicalPharmacophoreAtomPairs'
  MinDistance = 1
  MaxDistance = 10
  NormalizationMethodology = 'None'
  AtomTypesToUse = ['HBD', 'HBA', 'PI', 'NI', 'H']
  FuzzifyAtomPairsCount = 0
  FuzzificationMode = 'AfterNormalization'
  FuzzificationMethodology = 'FuzzyBinning'
  FuzzFactor = 0.15
  ValuesPrecision = 2

  Examples:

  $TPAPFP = new TopologicalPharmacophoreAtomPairsFingerprints( 'Molecule' => $Molecule);
  $TPAPFP = new TopologicalPharmacophoreAtomPairsFingerprints( 'Molecule' => $Molecule, 'AtomPairsSetSizeToUse' => 'ArbitrarySize', 'MinDistance' => 1, 'MaxDistance' => 10, 'NormalizationMethodology' => 'None', 'AtomTypesToUse' => ['HBD', 'HBA', 'PI', 'NI', 'H'], 'FuzzifyAtomPairsCount' => 0);
  $TPAPFP = new TopologicalPharmacophoreAtomPairsFingerprints( 'Molecule' => $Molecule, 'AtomPairsSetSizeToUse' => 'FizedSize', 'MinDistance' => 1, 'MaxDistance' => 10, 'NormalizationMethodology' => 'None', 'AtomTypesToUse' => ['HBD', 'HBA', 'PI', 'NI', 'H'], 'FuzzifyAtomPairsCount' => 1, 'FuzzificationMethodology' => 'FuzzyBinning', 'FuzzFactor' => 0.15, 'ValuesPrecision' => 2);
  $TPAPFP->GenerateFingerprints();
  print "$TPAPFP\n";
GetDescription
  $Description = $TopologicalPharmacophoreAtomPairsFP->GetDescription();

  Returns a string containing description of topological pharmacophore atom pairs fingerprints.

GenerateFingerprints
  $TopologicalPharmacophoreAtomPairsFP->GenerateFingerprints();

  Generates topological pharmacophore atom pairs fingerprints and returns TopologicalPharmacophoreAtomPairsFP.

GetAtomPairIDs
  $AtomPairIDsRef = $TopologicalPharmacophoreAtomPairsFP->GetAtomPairIDs();
  @AtomPairIDs = $TopologicalPharmacophoreAtomPairsFP->GetAtomPairIDs();

  Returns atom pair IDs corresponding to atom pairs count values in topological pharmacophore atom pairs fingerprints vector as an array or reference to an array.

SetAtomPairsSetSizeToUse
  $TopologicalPharmacophoreAtomPairsFP->SetAtomPairsSetSizeToUse($Values);

  Sets pharmacophore atom pairs set size to use for topological pharmacophore fingerprints generation and returns TopologicalPharmacophoreAtomPairsFingerprints.

  Possible values for pharmacophore atom pairs set size are: ArbitrarySize, FizedSize. Default value: ArbitrarySize.

  For ArbitrarySize value of AtomPairsSetSizeToUse, the fingerprint vector correspond to only those topological pharmacophore atom pairs which are present and have non-zero count. However, for FixedSize value of AtomPairsSetSizeToUse, the fingerprint vector contains all possible valid topological pharmacophore atom pairs with both zero and non-zero count values.

SetAtomTypesToUse
  $TopologicalPharmacophoreAtomPairsFP->SetAtomTypesToUse($ValuesRef);
  $TopologicalPharmacophoreAtomPairsFP->SetAtomTypesToUse(@Values);

  Sets pharmacophore atom types to use for topological pharmacophore fingerprints generation and returns TopologicalPharmacophoreAtomPairsFingerprints.

  Possible values for pharmacophore atom types are: Ar, CA, H, HBA, HBD, Hal, NI, PI, RA. Default value [ Ref 60-62 ] : HBD,HBA,PI,NI,H.

  The pharmacophore atom types abbreviations correspond to:

  HBD: HydrogenBondDonor
  HBA: HydrogenBondAcceptor
  PI : PositivelyIonizable
  NI : NegativelyIonizable
  Ar : Aromatic
  Hal : Halogen
  H : Hydrophobic
  RA : RingAtom
  CA : ChainAtom

  AtomTypes::FunctionalClassAtomTypes module is used to assign pharmacophore atom types. It uses following definitions [ Ref 60-61, Ref 65-66 ]:

  HydrogenBondDonor: NH, NH2, OH
  HydrogenBondAcceptor: N[!H], O
  PositivelyIonizable: +, NH2
  NegativelyIonizable: -, C(=O)OH, S(=O)OH, P(=O)OH
SetAtomTypesWeight
  $TopologicalPharmacophoreAtomPairsFP->SetAtomTypesWeight(
  %AtomTypesToWeight);

  Sets weights of specified pharmacophore atom types to use during calculation of their contribution to atom pair count and returns TopologicalPharmacophoreAtomPairsFP. Default values: 1 for each atom type.

  The weight values allow to increase the importance of specific pharmacophore atom type in the generated fingerprints. A weight value of 0 for an atom type eliminates its contribution to atom pair count where as weight value of 2 doubles its contribution.

SetFuzzFactor
  $TopologicalPharmacophoreAtomPairsFP->SetFuzzFactor($Value);

  Sets fuzz factor value to use during fuzzification of atom pairs count and returns TopologicalPharmacophoreAtomPairsFP. Default value: 0.15.

  Valid values: For FuzzyBinning value of FuzzificationMethodology: between 0 and 1.0; For FuzzyBinSmoothing value of FuzzificationMethodology: between 0 and 0.5.

SetFuzzificationMethodology
  $TopologicalPharmacophoreAtomPairsFP->SetFuzzificationMethodology($Value);

  Sets fuzzification methodology to use for fuzzification of atom pairs count and returns TopologicalPharmacophoreAtomPairsFP. Default value: FuzzyBinning. Possible values: FuzzyBinning | FuzzyBinSmoothing.

  In conjunction with values for options FuzzifyAtomPairsCount, FuzzificationMode and FuzzFactor, FuzzificationMethodology option is used to fuzzify pharmacophore atom pairs count.

  Let:

  Px = Pharmacophore atom type x
  Py = Pharmacophore atom type y
  PPxy = Pharmacophore atom pair between atom type Px and Py
  PPxyDn = Pharmacophore atom pairs count between atom type Px and Py at distance Dn
  PPxyDn-1 = Pharmacophore atom pairs count between atom type Px and Py at distance Dn - 1
  PPxyDn+1 = Pharmacophore atom pairs count between atom type Px and Py at distance Dn + 1
  FF = FuzzFactor for FuzzyBinning and FuzzyBinSmoothing

  Then:

  For FuzzyBinning:

  PPxyDn = PPxyDn (Unchanged)
  PPxyDn-1 = PPxyDn-1 + PPxyDn * FF
  PPxyDn+1 = PPxyDn+1 + PPxyDn * FF

  For FuzzyBinSmoothing:

  PPxyDn = PPxyDn - PPxyDn * 2FF for Dmin < Dn < Dmax
  PPxyDn = PPxyDn - PPxyDn * FF for Dn = Dmin or Dmax
  PPxyDn-1 = PPxyDn-1 + PPxyDn * FF
  PPxyDn+1 = PPxyDn+1 + PPxyDn * FF

  In both fuzzification schemes, a value of 0 for FF implies no fuzzification of occurrence counts. A value of 1 during FuzzyBinning corresponds to maximum fuzzification of occurrence counts; however, a value of 1 during FuzzyBinSmoothing ends up completely distributing the value over the previous and next distance bins.

  So for default value of FuzzFactor (FF) 0.15, the occurrence count of pharmacohore atom pairs at distance Dn during FuzzyBinning is left unchanged and the counts at distances Dn -1 and Dn + 1 are incremented by PPxyDn * 0.15.

  And during FuzzyBinSmoothing the occurrence counts at Distance Dn is scaled back using multiplicative factor of (1 - 2*0.15) and the occurrence counts at distances Dn -1 and Dn + 1 are incremented by PPxyDn * 0.15. In other words, occurrence bin count is smoothed out by distributing it over the previous and next distance value.

SetFuzzificationMode
  $TopologicalPharmacophoreAtomPairsFP->SetFuzzificationMode($Value);

  Sets fuzzification mode to use for fuzzification of atom pairs count and returns TopologicalPharmacophoreAtomPairsFP. Default value: AfterNormalization. Possible values: BeforeNormalization | AfterNormalization.

SetMaxDistance
  $TopologicalPharmacophoreAtomPairsFP->SetMaxDistance($Value);

  Sets maximum bond distance between atom pairs for generating topological pharmacophore atom pairs fingerprints and returns TopologicalPharmacophoreAtomPairsFP.

SetMinDistance
  $TopologicalPharmacophoreAtomPairsFP->SetMinDistance($Value);

  Sets minimum bond distance between atom pairs for generating topological pharmacophore atom pairs fingerprints and returns TopologicalPharmacophoreAtomPairsFP.

SetNormalizationMethodology
  $TopologicalPharmacophoreAtomPairsFP->SetNormalizationMethodology($Value);

  Sets normalization methodology to use for scaling the occurrence count of pharmacophore atom pairs within specified distance range and returns TopologicalPharmacophoreAtomPairsFP. Default value: None. Possible values: None, ByHeavyAtomsCount or ByAtomTypesCount.

SetValuesPrecision
  $TopologicalPharmacophoreAtomPairsFP->SetValuesPrecision($Value);

  Sets precision of atom pairs count real values which might be generated after normalization or fuzzification and returns TopologicalPharmacophoreAtomPairsFP. Default: up to 2 decimal places.

StringifyTopologicalPharmacophoreAtomPairsFingerprints
  $String = $TopologicalPharmacophoreAtomPairsFP-> StringifyTopologicalPharmacophoreAtomPairsFingerprints();

  Returns a string containing information about TopologicalPharmacophoreAtomPairsFingerprints object.

## AUTHOR

Manish Sud

## SEE ALSO

Fingerprints.pm, FingerprintsStringUtil.pm, AtomNeighborhoodsFingerprints.pm, AtomTypesFingerprints.pm, EStateIndiciesFingerprints.pm, ExtendedConnectivityFingerprints.pm, MACCSKeys.pm, PathLengthFingerprints.pm, TopologicalAtomPairsFingerprints.pm, TopologicalAtomTripletsFingerprints.pm, TopologicalAtomTorsionsFingerprints.pm, TopologicalPharmacophoreAtomTripletsFingerprints.pm

## COPYRIGHT

Copyright (C) 2015 Manish Sud. All rights reserved.

This file is part of MayaChemTools.

MayaChemTools 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 3 of the License, or (at your option) any later version.

Previous TOC Next | March 29, 2015 | Fingerprints::TopologicalPharmacophoreAtomPairsFingerprints.pm