📄 templateextractor.java
字号:
* 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 + -