⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genmdeterministicgeneratortest.java

📁 化学图形处理软件
💻 JAVA
字号:
/* $RCSfile$     * $Author: egonw $     * $Date: 2007-03-21 15:03:39 +0000 (Mi, 21 Mrz 2007) $     * $Revision: 8153 $ *  * Copyright (C) 1997-2007  The Chemistry Development Kit (CDK) project *  * Contact: cdk-devel@lists.sourceforge.net *  * This program 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 program 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 program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.  */package org.openscience.cdk.test.structgen.deterministic;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import javax.vecmath.Vector2d;import junit.framework.Test;import junit.framework.TestSuite;import org.openscience.cdk.Molecule;import org.openscience.cdk.applications.swing.MoleculeListViewer;import org.openscience.cdk.applications.swing.MoleculeViewer2D;import org.openscience.cdk.graph.ConnectivityChecker;import org.openscience.cdk.interfaces.IMolecule;import org.openscience.cdk.interfaces.IMoleculeSet;import org.openscience.cdk.layout.StructureDiagramGenerator;import org.openscience.cdk.smiles.SmilesGenerator;import org.openscience.cdk.structgen.IStructureGenerationListener;import org.openscience.cdk.structgen.deterministic.GENMDeterministicGenerator;import org.openscience.cdk.test.CDKTestCase;/** * @cdk.module test-structgen */public class GENMDeterministicGeneratorTest extends CDKTestCase{	public boolean debug = false;	boolean standAlone = false;	public MoleculeListViewer moleculeListViewer = null;	private SmilesGenerator smilesGenerator = new SmilesGenerator();        public GENMDeterministicGeneratorTest(String name) {        super(name);    }        public GENMDeterministicGeneratorTest() {        this("GENMDeterministicGeneratorTest");        moleculeListViewer = new MoleculeListViewer();    }	public void setStandAlone(boolean standAlone)	{		this.standAlone = standAlone;	}	public static Test suite()	{		return new TestSuite(GENMDeterministicGeneratorTest.class);	}	/** A complex alkaloid with two separate ring systems to 	  * be laid out.	  */	public void testIt() throws Exception {		if (runSlowTests()) {			GENMDeterministicGenerator gdg = new GENMDeterministicGenerator("C6H10O1","");			MyStructureGenerationListener myListener = new MyStructureGenerationListener(); 			gdg.addListener(myListener);			gdg.generate();			List structures = myListener.getStructures();			assertEquals(747, structures.size());			assertOK(structures);			assertUnique(structures);		}	}		public void testAnotherOne() throws Exception {		if (runSlowTests()) {				GENMDeterministicGenerator gdg = new GENMDeterministicGenerator("C6H13O2N1","");			gdg.generate();			assertEquals(23946, gdg.getNumberOfStructures());		}	}	public void testEthane() throws Exception {		GENMDeterministicGenerator gdg = new GENMDeterministicGenerator("C2H6","");		MyStructureGenerationListener myListener = new MyStructureGenerationListener(); 		gdg.addListener(myListener);		gdg.generate();		List structures = myListener.getStructures();		assertEquals(1, structures.size());		assertUnique(structures);		assertOK(structures);	}	public void testEthanol() throws Exception {		GENMDeterministicGenerator gdg = new GENMDeterministicGenerator("C2H6O","");		MyStructureGenerationListener myListener = new MyStructureGenerationListener(); 		gdg.addListener(myListener);		gdg.generate();		List structures = myListener.getStructures();		assertEquals(2, structures.size());		assertUnique(structures);		assertOK(structures);	}		public void testPropene() throws Exception {		GENMDeterministicGenerator gdg = new GENMDeterministicGenerator("C3H6","");		MyStructureGenerationListener myListener = new MyStructureGenerationListener(); 		gdg.addListener(myListener);		gdg.generate();		List structures = myListener.getStructures();		assertEquals(2, structures.size());		assertOK(structures);		List uniqueSMILES = assertUnique(structures);		assertTrue(uniqueSMILES.contains("C1CC1"));		assertTrue(uniqueSMILES.contains("C=CC"));	}	public void testButene() throws Exception {		GENMDeterministicGenerator gdg = new GENMDeterministicGenerator("C4H10","");		MyStructureGenerationListener myListener = new MyStructureGenerationListener(); 		gdg.addListener(myListener);		gdg.generate();		List structures = myListener.getStructures();		assertEquals(2, structures.size());		assertOK(structures);		List uniqueSMILES = assertUnique(structures);		assertTrue(uniqueSMILES.contains("CCCC"));		assertTrue(uniqueSMILES.contains("CC(C)C"));	}	/**	 * @cdk.bug 1678346	 */	public void testPhosphate() throws Exception {		GENMDeterministicGenerator gdg = new GENMDeterministicGenerator("H2P1O4","");		MyStructureGenerationListener myListener = new MyStructureGenerationListener(); 		gdg.addListener(myListener);		gdg.generate();		List structures = myListener.getStructures();		assertEquals(2, structures.size());		assertOK(structures);		List uniqueSMILES = assertUnique(structures);//		System.out.println("List: " + uniqueSMILES);		assertTrue(uniqueSMILES.contains("OP(=O)(=O)O"));	}	public void testDichloroEthane() throws Exception {		GENMDeterministicGenerator gdg = new GENMDeterministicGenerator("C2H4F2","");		MyStructureGenerationListener myListener = new MyStructureGenerationListener(); 		gdg.addListener(myListener);		gdg.generate();		List structures = myListener.getStructures();		assertEquals(2, structures.size());		assertOK(structures);		List uniqueSMILES = assertUnique(structures);		System.out.println("List: " + uniqueSMILES);		assertTrue(uniqueSMILES.contains("FCCF"));	}	public void testTMS() throws Exception {		GENMDeterministicGenerator gdg = new GENMDeterministicGenerator("C4H12Si1","");		MyStructureGenerationListener myListener = new MyStructureGenerationListener(); 		gdg.addListener(myListener);		gdg.generate();		List structures = myListener.getStructures();		assertEquals(1, structures.size());		assertOK(structures);		List uniqueSMILES = assertUnique(structures);		System.out.println("List: " + uniqueSMILES);		assertTrue(uniqueSMILES.contains("C[Si](C)(C)C"));	}	public void testMMS() throws Exception {		GENMDeterministicGenerator gdg = new GENMDeterministicGenerator("C1H6Si1","");		MyStructureGenerationListener myListener = new MyStructureGenerationListener(); 		gdg.addListener(myListener);		gdg.generate();		List structures = myListener.getStructures();		assertEquals(1, structures.size());		assertOK(structures);		List uniqueSMILES = assertUnique(structures);		System.out.println("List: " + uniqueSMILES);		assertTrue(uniqueSMILES.contains("C[Si](C)(C)C"));	}	public void testDMS() throws Exception {		GENMDeterministicGenerator gdg = new GENMDeterministicGenerator("C2H8Si1","");		MyStructureGenerationListener myListener = new MyStructureGenerationListener(); 		gdg.addListener(myListener);		gdg.generate();		List structures = myListener.getStructures();		assertEquals(1, structures.size());		assertOK(structures);		List uniqueSMILES = assertUnique(structures);		System.out.println("List: " + uniqueSMILES);		assertTrue(uniqueSMILES.contains("C[Si](C)(C)C"));	}	private List assertUnique(List structures) {		List uniques = new ArrayList();		Iterator structs = structures.iterator();		while (structs.hasNext()) {			IMolecule mol = (IMolecule)structs.next();			String SMILES = smilesGenerator.createSMILES(mol);			if (uniques.contains(SMILES)) {				fail("Duplicate structure generated: " + SMILES);			}			uniques.add(SMILES);		}		return uniques;	}	private void assertOK(List structures) throws Exception {		IMolecule mol = null;		for (int f = 0; f<structures.size(); f++) {			mol = (Molecule)structures.get(f);			assertNotNull(mol);			assertTrue(mol.getAtomCount() > 0);			assertTrue(mol.getBondCount() > 0);			// make sure the thing is connected			IMoleculeSet molSet = ConnectivityChecker.partitionIntoMolecules(mol);			assertEquals(1, molSet.getAtomContainerCount());		}	}		//	//	//	 /**  //	  * For SMILES test//	  *///	public void testSMILES()//	{//		try//		{	//			GENMDeterministicGenerator gdg = new GENMDeterministicGenerator("C8H12","");//			Vector smiles=gdg.getSMILES();//			//for(int i=0;i<smiles.size();i++)//			//	logger.debug(smiles.get(i));//			//everythingOk(structures);////			displaySMILES(smiles);//		}//		catch(Exception e)//		{//			e.printStackTrace();//		}//	}////	//	private boolean displaySMILES(Vector structures)//	{//		SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance());//		StructureDiagramGenerator sdg = null;//		MoleculeViewer2D mv = null;//		Molecule mol = null;//		for (int f = 0; f<structures.size(); f++)//		{//		//	logger.debug(structures.get(f));//			try//			{//				mol=sp.parseSmiles((String)(structures.get(f)));//				sdg = new StructureDiagramGenerator();////			//mol = (Molecule)structures.elementAt(f);//			//logger.debug(mol.getAtomCount());//			//logger.debug(mol.getBondCount());//				sdg.setMolecule((Molecule)mol.clone());//			//sdg.setMolecule(mol);//			//				sdg.generateCoordinates(new Vector2d(0,1));//			}//			catch(Exception exc)//			{//				exc.printStackTrace();//				fail("*** Exit due to an unexpected error during coordinate generation ***");//			}//            if (standAlone) {//                //                mv = new MoleculeViewer2D();//		mv.setAtomContainer(sdg.getMolecule());//                //			Renderer2DModel r2dm = new Renderer2DModel();//                //			r2dm.setDrawNumbers(true);//                //			mv.setRenderer2DModel(r2dm);//                moleculeListViewer.addStructure(mv, "Structure no. " + (f + 1));//            }//		}//		return true;//	}		private boolean drawMolecules(List structures) throws Exception {		StructureDiagramGenerator sdg = null;		MoleculeViewer2D mv = null;		Molecule mol = null;		for (int f = 0; f<structures.size(); f++)		{			sdg = new StructureDiagramGenerator();			mol = (Molecule)structures.get(f);			//logger.debug(mol.getAtomCount());			//logger.debug(mol.getBondCount());			sdg.setMolecule((Molecule)mol.clone());			//sdg.setMolecule(mol);			try			{				sdg.generateCoordinates(new Vector2d(0,1));			}			catch(Exception exc)			{				exc.printStackTrace();				fail("*** Exit due to an unexpected error during coordinate generation ***");			}            if (standAlone) {                                mv = new MoleculeViewer2D();		mv.setAtomContainer(sdg.getMolecule());                //			Renderer2DModel r2dm = new Renderer2DModel();                //			r2dm.setDrawNumbers(true);                //			mv.setRenderer2DModel(r2dm);                moleculeListViewer.addStructure(mv, "Structure no. " + (f + 1));            }		}		return true;	}			class MyStructureGenerationListener implements IStructureGenerationListener {		private List structures;				public MyStructureGenerationListener() {			structures = new ArrayList();		}				public void stateChanged(List list) throws Exception {			structures.addAll(list);		}				public List getStructures() {			return structures;		}			}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -