com.actelion.research.chem.sar.ExitVector Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of openchemlib Show documentation
Show all versions of openchemlib Show documentation
Open Source Chemistry Library
package com.actelion.research.chem.sar;
public class ExitVector {
private int mAtom,mIndex,mSeenBondOrders,mTopicity;
private boolean mAtomIsQueryAtom,mEmptySubstituentSeen,mSubstituentVaries;
private String mConstantSubstituent;
private int mRGroupNo;
/**
* @param atom index of canonical core structure (if is bond bridge atom) or of original query structure
* @param atomIsQueryAtom
* @param index number to distinguish multiple exit vectors at same core atom (0-based)
* @param topicity -1 (no topicity) or 0 or 1
*/
public ExitVector(int atom, boolean atomIsQueryAtom, int index, int topicity) {
mAtom = atom;
mAtomIsQueryAtom = atomIsQueryAtom;
mIndex = index;
mTopicity = topicity;
}
public int getQueryAtom() {
return mAtomIsQueryAtom ? mAtom : -1;
}
/**
* @param queryToCoreAtom
* @return the root atom index for the core structure
*/
public int getCoreAtom(int[] queryToCoreAtom) {
return mAtomIsQueryAtom ? queryToCoreAtom[mAtom] : mAtom;
}
public int getIndex() {
return mIndex;
}
public int getTopicity() {
return mTopicity;
}
public int getRGroupNo() {
return mRGroupNo;
}
public void setRGroupNo(int no) {
mRGroupNo = no;
}
public boolean substituentVaries() {
return mSubstituentVaries;
}
public String getConstantSubstituent() {
return mConstantSubstituent;
}
public boolean hasSeenBondOrder(int bondOrder) {
return (mSeenBondOrders & (1 << bondOrder)) != 0;
}
/**
* This method is called with all substituents at this exit vector position.
* After being called with all substituents from all molecules within the same scaffold
* or scaffols group, it accumulated the knowledge, whether this exit vector is always
* unsubstituted, carries always the same substituent, or carries multiple different
* substituents.
* @param substituent
*/
protected void checkSubstituent(String substituent, int bondOrder) {
mSeenBondOrders |= (1 << bondOrder);
if (!mSubstituentVaries) {
if (substituent == null) {
mEmptySubstituentSeen = true;
if (mConstantSubstituent != null)
mSubstituentVaries = true;
}
else {
if (mEmptySubstituentSeen)
mSubstituentVaries = true;
else if (mConstantSubstituent == null)
mConstantSubstituent = substituent;
else if (!mConstantSubstituent.equals(substituent))
mSubstituentVaries = true;
}
}
}
}