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

com.actelion.research.chem.IDCodeParser Maven / Gradle / Ivy

There is a newer version: 2024.11.2
Show newest version
package com.actelion.research.chem;

import com.actelion.research.chem.coords.CoordinateInventor;

public class IDCodeParser extends IDCodeParserWithoutCoordinateInvention {
	private boolean mEnsure2DCoordinates;
	private int mCoordinateMode = CoordinateInventor.MODE_DEFAULT;

	/**
	 * This default constructor creates molecules guaranteed to have 2D-atom-coordinates.
	 * If 2D-coordinates are not supplied with the idcode, or if supplied coordinates are 3D,
	 * then new 2D-coordinates are created on the fly.
	 */
	public IDCodeParser(){
		this(true);
	}

	/**
	 * This default constructor creates molecules guaranteed to have 2D-atom-coordinates.
	 * If 2D-coordinates are not supplied with the idcode, or if supplied coordinates are 3D,
	 * then new 2D-coordinates are created on the fly.
	 * @param coordinateMode mode used for CoordinateInventor
	 */
	public IDCodeParser(int coordinateMode){
		this(true);
		mCoordinateMode = coordinateMode;
	}

	/**
	 * @param ensure2DCoordinates If TRUE and no coordinates are passed with the idcode, then
	 * the parser generates atom coordinates of any molecule and assigns up/down bonds reflecting
	 * given atom parities. Generating coordinates is potentially error-prone, such that providing
	 * original coordinates, where available, should be the preferred option.
	 * 
WARNING: If FALSE: In this case stereo parities are taken directly from the idcode, * missing explicitly 'unknown' parities, because they are not part of the idcode. * Without atom coordinates up/down bonds cannot be assigned. If further processing relies * on up/down bond stereo information or needs to distinguish parities 'none' from 'unknown', * (e.g. idcode creation, checking for stereo centers, calculating the skeletonSpheres descriptor), * or if you are not exactly sure, what to do, then use the constructor IDCodeParser(true). * If you supply encoded 3D-coordinates, then use IDCodeParser(false). */ public IDCodeParser(boolean ensure2DCoordinates) { super(); mEnsure2DCoordinates = ensure2DCoordinates; } @Override protected boolean ensure2DCoordinates() { return mEnsure2DCoordinates; } @Override protected void inventCoordinates(StereoMolecule mol) { CoordinateInventor inventor = new CoordinateInventor(mCoordinateMode); inventor.setRandomSeed(0x1234567890L); // create reproducible coordinates inventor.invent(mol); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy