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

📄 structureresonancegenerator.java

📁 化学图形处理软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
						for(int j = 0 ; j < setOfReactions.getReaction(k).getProducts().getAtomContainerCount() ; j++){							IAtomContainer set = setOfReactions.getReaction(k).getProducts().getAtomContainer(j);//							logger.debug("RearrangementCation3Reaction");							if(!existAC(setOfAtomContainer,set))								setOfAtomContainer.addAtomContainer(setOfReactions.getReaction(k).getProducts().getAtomContainer(j));						}				}				if(anionR){					/* RearrangementAnion1Reaction*/					IReactionProcess type  = new RearrangementAnion1Reaction();			        type.setParameters(params);								        removeFlags(setOfAtomContainer.getAtomContainer(i));			        IReactionSet setOfReactions = type.initiate(setOfReactants, null);			        			        if(setOfReactions.getReactionCount() != 0)						for(int k = 0 ; k < setOfReactions.getReactionCount() ; k++)						for(int j = 0 ; j < setOfReactions.getReaction(k).getProducts().getAtomContainerCount() ; j++){							IAtomContainer set = setOfReactions.getReaction(k).getProducts().getAtomContainer(j);//							logger.debug("RearrangementAnion1Reaction");							if(!existAC(setOfAtomContainer,set))								setOfAtomContainer.addAtomContainer(setOfReactions.getReaction(k).getProducts().getAtomContainer(j));						}					/* RearrangementAnion2Reaction*/			        type  = new RearrangementAnion2Reaction();			        type.setParameters(params);								        removeFlags(setOfAtomContainer.getAtomContainer(i));			        setOfReactions = type.initiate(setOfReactants, null);			        			        if(setOfReactions.getReactionCount() != 0)						for(int k = 0 ; k < setOfReactions.getReactionCount() ; k++)						for(int j = 0 ; j < setOfReactions.getReaction(k).getProducts().getAtomContainerCount() ; j++){							IAtomContainer set = setOfReactions.getReaction(k).getProducts().getAtomContainer(j);//							logger.debug("RearrangementAnion2Reaction");							if(!existAC(setOfAtomContainer,set))								setOfAtomContainer.addAtomContainer(setOfReactions.getReaction(k).getProducts().getAtomContainer(j));						}					/* RearrangementAnion3Reaction*/					type  = new RearrangementAnion3Reaction();			        type.setParameters(params);								        removeFlags(setOfAtomContainer.getAtomContainer(i));			        setOfReactions = type.initiate(setOfReactants, null);			        			        if(setOfReactions.getReactionCount() != 0)						for(int k = 0 ; k < setOfReactions.getReactionCount() ; k++)						for(int j = 0 ; j < setOfReactions.getReaction(k).getProducts().getAtomContainerCount() ; j++){							IAtomContainer set = setOfReactions.getReaction(k).getProducts().getAtomContainer(j);//							logger.debug("RearrangementAnion3Reaction");							if(!existAC(setOfAtomContainer,set))								setOfAtomContainer.addAtomContainer(setOfReactions.getReaction(k).getProducts().getAtomContainer(j));						}				}				if(radicalR){					/* RearrangementRadical1Reaction*/					IReactionProcess type  = new RearrangementRadical1Reaction();			        type.setParameters(params);								        removeFlags(setOfAtomContainer.getAtomContainer(i));			        IReactionSet setOfReactions = type.initiate(setOfReactants, null);			        			        if(setOfReactions.getReactionCount() != 0)						for(int k = 0 ; k < setOfReactions.getReactionCount() ; k++)						for(int j = 0 ; j < setOfReactions.getReaction(k).getProducts().getAtomContainerCount() ; j++){							IAtomContainer set = setOfReactions.getReaction(k).getProducts().getAtomContainer(j);//							logger.debug("RearrangementRadical1Reaction");							if(!existAC(setOfAtomContainer,set))								setOfAtomContainer.addAtomContainer(setOfReactions.getReaction(k).getProducts().getAtomContainer(j));						}					/* RearrangementRadical2Reaction*/					type  = new RearrangementRadical2Reaction();			        type.setParameters(params);								        removeFlags(setOfAtomContainer.getAtomContainer(i));			        setOfReactions = type.initiate(setOfReactants, null);			        			        if(setOfReactions.getReactionCount() != 0)						for(int k = 0 ; k < setOfReactions.getReactionCount() ; k++)						for(int j = 0 ; j < setOfReactions.getReaction(k).getProducts().getAtomContainerCount() ; j++){							IAtomContainer set = setOfReactions.getReaction(k).getProducts().getAtomContainer(j);//							logger.debug("RearrangementRadical2Reaction");							if(!existAC(setOfAtomContainer,set))								setOfAtomContainer.addAtomContainer(setOfReactions.getReaction(k).getProducts().getAtomContainer(j));						}					/* RearrangementRadical3Reaction*/					type  = new RearrangementRadical3Reaction();			        type.setParameters(params);								        removeFlags(setOfAtomContainer.getAtomContainer(i));			        setOfReactions = type.initiate(setOfReactants, null);			        			        if(setOfReactions.getReactionCount() != 0)						for(int k = 0 ; k < setOfReactions.getReactionCount() ; k++)						for(int j = 0 ; j < setOfReactions.getReaction(k).getProducts().getAtomContainerCount() ; j++){							IAtomContainer set = setOfReactions.getReaction(k).getProducts().getAtomContainer(j);//							logger.debug("RearrangementRadical3Reaction");							if(!existAC(setOfAtomContainer,set))								setOfAtomContainer.addAtomContainer(setOfReactions.getReaction(k).getProducts().getAtomContainer(j));						}				}				if(bondR){					/* DisplacementChargeFromAcceptorReaction*/					IReactionProcess type  = new DisplacementChargeFromAcceptorReaction();			        type.setParameters(params);			        removeFlags(setOfAtomContainer.getAtomContainer(i));			        IReactionSet setOfReactions = type.initiate(setOfReactants, null);			        			        if(setOfReactions.getReactionCount() != 0)						for(int k = 0 ; k < setOfReactions.getReactionCount() ; k++)						for(int j = 0 ; j < setOfReactions.getReaction(k).getProducts().getAtomContainerCount() ; j++){							IAtomContainer set = setOfReactions.getReaction(k).getProducts().getAtomContainer(j);//							logger.debug("DisplacementChargeFromAcceptorReaction");							if(!existAC(setOfAtomContainer,set))								setOfAtomContainer.addAtomContainer(setOfReactions.getReaction(k).getProducts().getAtomContainer(j));						}			        /* DisplacementChargeFromDonorReaction*/					type  = new DisplacementChargeFromDonorReaction();			        type.setParameters(params);								        removeFlags(setOfAtomContainer.getAtomContainer(i));			        setOfReactions = type.initiate(setOfReactants, null);			        			        if(setOfReactions.getReactionCount() != 0)						for(int k = 0 ; k < setOfReactions.getReactionCount() ; k++)						for(int j = 0 ; j < setOfReactions.getReaction(k).getProducts().getAtomContainerCount() ; j++){							IAtomContainer set = setOfReactions.getReaction(k).getProducts().getAtomContainer(j);//							logger.debug("DisplacementChargeFromDonorReaction");							if(!existAC(setOfAtomContainer,set))								setOfAtomContainer.addAtomContainer(setOfReactions.getReaction(k).getProducts().getAtomContainer(j));						}				}				if(hyperconjugationR){					/* HyperconjugationReaction*/					IReactionProcess type  = new HyperconjugationReaction();			        type.setParameters(params);			        removeFlags(setOfAtomContainer.getAtomContainer(i));			        IReactionSet setOfReactions = type.initiate(setOfReactants, null);			        			        if(setOfReactions.getReactionCount() != 0)						for(int k = 0 ; k < setOfReactions.getReactionCount() ; k++)							for(int j = 0 ; j < setOfReactions.getReaction(k).getProducts().getAtomContainerCount() ; j++){								IAtomContainer set = setOfReactions.getReaction(k).getProducts().getAtomContainer(j);//								logger.debug("HyperconjugationReaction");								if(!existAC(setOfAtomContainer,set))									setOfAtomContainer.addAtomContainer(setOfReactions.getReaction(k).getProducts().getAtomContainer(j));							}			    }				/* this makes a limition of the search */				if(maxStructuresToObtain != -1)					if(setOfAtomContainer.getAtomContainerCount() > maxStructuresToObtain)						break;								if(i == 0 && setOfAtomContainer.getAtomContainerCount() > 9)					return setOfAtomContainer;			}		} catch (CDKException e) {			logger.error("Error while getting all resonance structures: ");			logger.error(e.getMessage());			logger.debug(e);		}		return setOfAtomContainer;	}	/**	 * Search if the setOfAtomContainer contains the atomContainer 	 * 	 * @param set            ISetOfAtomContainer object where to search	 * @param atomContainer  IAtomContainer to search	 * @return   			 True, if the atomContainer is contained	 */	private boolean existAC(IAtomContainerSet set, IAtomContainer atomContainer) {//		logger.debug("smiles: "+(new SmilesGenerator(set.getBuilder())).createSMILES((IMolecule) atomContainer));		atomContainer = setID(atomContainer);		for(int i = 0 ; i < set.getAtomContainerCount(); i++){			IAtomContainer ac = setID(set.getAtomContainer(i));			QueryAtomContainer qAC = QueryAtomContainerCreator.createSymbolChargeIDQueryContainer(ac);//			QueryAtomContainer qAC = QueryAtomContainerCreator.createAnyAtomContainer(atomContainer,false);			try {				if(UniversalIsomorphismTester.isIsomorph(atomContainer,qAC)){//					logger.debug("exist");					return true;				}			} catch (CDKException e1) {				System.err.println(e1);				logger.error(e1.getMessage());				logger.debug(e1);			}		}		return false;	}	/**	 * remove the possible flags about CDKConstants.REACTIVE_CENTER	 * 	 * @param atomContainer	 * @return	 */	private IAtomContainer removeFlags(IAtomContainer atomContainer){		for(int i = 0 ; i < atomContainer.getAtomCount(); i++)			atomContainer.getAtom(i).setFlag(CDKConstants.REACTIVE_CENTER,false);		for(int i = 0 ; i < atomContainer.getBondCount(); i++)			atomContainer.getBond(i).setFlag(CDKConstants.REACTIVE_CENTER,false);		return atomContainer;	}	/**	 * Set the ID as position	 * 	 * @param atomContainer	 * @return	 */	private IAtomContainer setID(IAtomContainer atomContainer){		for(int i = 0 ; i < atomContainer.getAtomCount(); i++){			atomContainer.getAtom(i).setID(""+atomContainer.getAtomNumber(atomContainer.getAtom(i)));		}		return atomContainer;	}}

⌨️ 快捷键说明

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