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

📄 templateextractor.java

📁 化学图形处理软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		 * som.addMolecule(smileParser.parseSmiles(ringSmile)); }catch		 * (Exception ex5){ System.out.println("Error in som.addmolecule due		 * to:"+ex5); } }		 */		// writeChemModel(som,dataFile,"_TESTTESTTESTTESTTEST");	}	public void writeChemModel(IMoleculeSet som, String file, String endFix) {		System.out.println("WRITE Molecules:" + som.getMoleculeCount());		String molfile = file + endFix;		try {			FileOutputStream fout = new FileOutputStream(molfile);			MDLWriter mdlw = new MDLWriter(fout);			mdlw.write(som);			mdlw.close();		} catch (Exception ex2) {			System.out.println("IOError:cannot write file due to:"					+ ex2.toString());		}	}	public void makeCanonicalSmileFromRingSystems(String dataFileIn,			String dataFileOut) {		System.out.println("Start make SMILES...");		IMolecule m = null;		IteratingMDLReader imdl = null;		// QueryAtomContainer query=null;		List data = new ArrayList();		SmilesGenerator smiles = new SmilesGenerator();		try {			System.out.println("Start...");			BufferedReader fin = new BufferedReader(new FileReader(dataFileIn));			imdl = new IteratingMDLReader(fin, NoNotificationChemObjectBuilder					.getInstance());			// fin.close();			System.out.println("Read File in..");		} catch (Exception exc) {			System.out.println("Could not read Molecules from file "					+ dataFileIn + " due to: " + exc.getMessage());		}		while (imdl.hasNext()) {			m = (IMolecule) imdl.next();			/*			 * try{ HueckelAromaticityDetector.detectAromaticity(m);			 * }catch(Exception ex1){ System.out.println("Could not find			 * aromaticity due to:"+ex1); }			 */			// query=QueryAtomContainerCreator.createAnyAtomContainer(m,true);			// System.out.println("String:"+smiles.createSMILES(new			// Molecule(m)));			try {				data.add((String) smiles.createSMILES(builder.newMolecule(m)));			} catch (Exception exc1) {				System.out.println("Could not create smile due to: "						+ exc1.getMessage());			}		}		try {			imdl.close();		} catch (Exception exc2) {		}		System.out.print("...ready\nWrite data...");		BufferedWriter fout = null;		try {			fout = new BufferedWriter(new FileWriter(dataFileOut));		} catch (Exception exc3) {			System.out.println("Could not write smile in file " + dataFileOut					+ " due to: " + exc3.getMessage());		}		for (int i = 0; i < data.size(); i++) {			// System.out.println("write:"+(String)data.get(i));			try {				fout.write(((String) data.get(i)));				fout.newLine();			} catch (Exception exc4) {			}		}		System.out.println("number of smiles:" + data.size());		System.out.println("...ready");		try {			fout.close();		} catch (Exception exc5) {		}	}	public void makeFingerprintFromRingSystems(String dataFileIn,			String dataFileOut, boolean anyAtom, boolean anyAtomAnyBond)	throws Exception {		System.out.println("Start make fingerprint from file:" + dataFileIn				+ " ...");		AllRingsFinder allRingsFinder = new AllRingsFinder();		allRingsFinder.setTimeout(10000); // 10 seconds		Map timings = new HashMap();				Fingerprinter fingerPrinter = new Fingerprinter(Fingerprinter.defaultSize, Fingerprinter.defaultSearchDepth);		IMolecule m = null;		IteratingMDLReader imdl=null;		//QueryAtomContainer query=null;		IAtomContainer query = null;		List data = new ArrayList();		try {			System.out.print("Read data file in ...");			BufferedReader fin = new BufferedReader(new FileReader(dataFileIn));			imdl = new IteratingMDLReader(fin, NoNotificationChemObjectBuilder					.getInstance());			// fin.close();			System.out.println("ready");		} catch (Exception exc) {			System.out.println("Could not read Molecules from file "					+ dataFileIn + " due to: " + exc.getMessage());		}		int moleculeCounter = 0;		int fingerprintCounter = 0;		System.out.print("Generated Fingerprints: " + fingerprintCounter + "    ");		while (imdl.hasNext()) {			// query=new QueryAtomContainer();			query = builder.newAtomContainer();			m = (IMolecule) imdl.next();			moleculeCounter++;			// System.out.println(m);			if (anyAtom && !anyAtomAnyBond) {				// System.out.println("AnyAtom + false");				query = QueryAtomContainerCreator.createAnyAtomContainer(m,						false);			} 			else {				// try{				// HueckelAromaticityDetector.detectAromaticity(m);				// }catch(Exception ex1){				// System.out.println("Could not find aromaticity due to:"+ex1);				// }				// query=createAnyAtomAtomContainer(m);				// query=(AtomContainer)m.clone();				query = createAnyAtomAnyBondAtomContainer(m);			}			try {				long time = -System.currentTimeMillis();				if (anyAtom || anyAtomAnyBond){//					System.out.println("Make Fingerprint Query");					data.add((BitSet)fingerPrinter.getFingerprint((IAtomContainer) query, allRingsFinder));					fingerprintCounter=fingerprintCounter+1;				} else {					// System.out.println("Make Fingerprint Molecule");					data.add((BitSet) fingerPrinter.getFingerprint(query));					fingerprintCounter = fingerprintCounter + 1;				}				time += System.currentTimeMillis();				// store the time				String bin = Integer.toString((int)Math.floor(time/10));				if (timings.containsKey(bin)) {					timings.put(bin, new Integer((((Integer)timings.get(bin)).intValue()) + 1));				} else {					timings.put(bin, new Integer(1));				}			}catch(Exception exc1){//				exc1.printStackTrace();				System.out.println("QueryFingerprintError: from molecule:"						+ moleculeCounter + " due to:" + exc1.getMessage());								// OK, just adds a fingerprint with all ones, so that any				// structure will match this template, and leave it up				// to substructure match to figure things out				BitSet allOnesFingerprint = new BitSet(fingerPrinter.getSize());				for (int i=0; i<fingerPrinter.getSize(); i++) {					allOnesFingerprint.set(i, true);				}				data.add(allOnesFingerprint);				fingerprintCounter = fingerprintCounter + 1;			}						if (fingerprintCounter % 2 == 0)				System.out.print("\b" + "/");			else				System.out.print("\b" + "\\");						if (fingerprintCounter % 100 == 0)				System.out.print("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b" + "Generated Fingerprints: " + fingerprintCounter + "   ");		}// while 		try {			imdl.close();		} catch (Exception exc2) 		{			exc2.printStackTrace();		}		System.out.print("...ready with:" + moleculeCounter				+ " molecules\nWrite data...of data vector:" + data.size()				+ " fingerprintCounter:" + fingerprintCounter);		BufferedWriter fout = null;		try {			fout = new BufferedWriter(new FileWriter(dataFileOut));		} catch (Exception exc3) {			System.out.println("Could not write Fingerprint in file "					+ dataFileOut + " due to: " + exc3.getMessage());		}		for (int i = 0; i < data.size(); i++) {			try {				fout.write(((BitSet) data.get(i)).toString());				fout.newLine();			} catch (Exception exc4) {			}		}		System.out.println("\nFingerprints:" + data.size()				+ " are written...ready");		System.out.println("\nComputing time statistics:\n" + timings.toString());		try {			fout.close();		} catch (Exception exc5) {		}	}	public IMolecule removeLoopBonds(IMolecule molecule, int position) {		for (int i = 0; i < molecule.getBondCount(); i++) {			IBond bond = molecule.getBond(i);			if (bond.getAtom(0) == bond.getAtom(1)) {				System.out.println("Loop found! Molecule:" + position);				molecule.removeBond(bond);			}		}		return molecule;	}	public IAtomContainer createAnyAtomAtomContainer(IAtomContainer atomContainer)	throws Exception {		IAtomContainer query = (IAtomContainer) atomContainer.clone();		// System.out.println("createAnyAtomAtomContainer");		for (int i = 0; i < query.getAtomCount(); i++) {			// System.out.print(" "+i);			query.getAtom(i).setSymbol("C");		}		return query;	}	public IAtomContainer createAnyAtomAnyBondAtomContainer(			IAtomContainer atomContainer) throws Exception {		IAtomContainer query = (IAtomContainer) atomContainer.clone();		for (int i = 0; i < query.getBondCount(); i++) {			query.getBond(i).setOrder(1);			query.getBond(i).getAtom(0).setSymbol("C");			query.getBond(i).getAtom(1).setSymbol("C");		}		return query;	}	public IAtomContainer resetFlags(IAtomContainer ac) {		for (int f = 0; f < ac.getAtomCount(); f++) {			ac.getAtom(f).setFlag(CDKConstants.VISITED, false);		}		for (int f = 0; f < ac.getElectronContainerCount(); f++) {			ac.getElectronContainer(f).setFlag(CDKConstants.VISITED, false);		}		return ac;	}	public static void main(String[] args) {		if (args.length < 4) {			System.out.println(usage);		}		try {			new TemplateExtractor().makeFingerprintFromRingSystems(args[0],					args[1], new Boolean(args[2]).booleanValue(), new Boolean(							args[3]).booleanValue());		} catch (Exception e) {			System.out.println(usage);			// TODO Auto-generated catch block			e.printStackTrace();		}	}}

⌨️ 快捷键说明

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