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

📄 alogp.java

📁 化学图形处理软件
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
		} else if (doublebondcount == 2 || triplebondcount == 1) {
			hybrid = "sp";
		}

		int OxNum = 0;
		int XCount = 0;

		for (int j = 0; j <= ca.size() - 1; j++) {

			String s = ((IAtom)ca.get(j)).getSymbol();

			// if (s.equals("F") || s.equals("O") || s.equals("Cl")
			// || s.equals("Br") || s.equals("N") || s.equals("S"))

			if (ap.getNormalizedElectronegativity(((IAtom)ca.get(j)).getSymbol()) > 1) {
				java.util.List bonds2 = atomContainer.getConnectedBondsList(((IAtom)ca.get(j)));

				boolean HaveDouble = false;

				for (int k = 0; k <= bonds2.size() - 1; k++) {
					if (((IBond)bonds2.get(k)).getOrder() == 2) {
						HaveDouble = true;
						break;
					}

				}
				if (HaveDouble && ((IAtom)ca.get(j)).getSymbol().equals("N"))
					OxNum += 2; // C-N bond order for pyridine type N's is
				// considered to be 2
				else
					OxNum += atomContainer.getBond(ai, ((IAtom)ca.get(j))).getOrder();
			}

			java.util.List ca2 = atomContainer.getConnectedAtomsList(((IAtom)ca.get(j)));

			for (int k = 0; k <= ca2.size() - 1; k++) {
				String s2 = ((IAtom)ca2.get(k)).getSymbol();

				if (!s2.equals("C"))
					XCount++;
			}

		}// end j loop

//		 logger.debug((i+1)+"\t"+Fragment[i]+"\t"+hybrid+"\t"+XCount+"\t"+OxNum);

		if (OxNum == 0) {
			if (hybrid.equals("sp3")) {
				if (XCount == 0) {
					frags[46] += ai.getHydrogenCount();
				} else if (XCount == 1) {
					frags[52] += ai.getHydrogenCount();
				} else if (XCount == 2) {
					frags[53] += ai.getHydrogenCount();
				} else if (XCount == 3) {
					frags[54] += ai.getHydrogenCount();
				} else if (XCount >= 4) {
					frags[55] += ai.getHydrogenCount();
				}
			} else if (hybrid.equals("sp2")) {
				frags[47] += ai.getHydrogenCount();
			}
		} else if (OxNum == 1 && hybrid.equals("sp3")) {
			frags[47] += ai.getHydrogenCount();
			// logger.debug(f+"\t"+ai.getHydrogenCount());
		} else if ((OxNum == 2 && hybrid.equals("sp3"))
				|| (OxNum == 1 && hybrid.equals("sp2"))
				|| (OxNum == 0 && hybrid.equals("sp"))) {
			frags[48] += ai.getHydrogenCount();
		} else if ((OxNum == 3 && hybrid.equals("sp3"))
				|| (OxNum >= 2 && hybrid.equals("sp2"))
				|| (OxNum >= 1 && hybrid.equals("sp"))) {
			frags[49] += ai.getHydrogenCount();
		}

	}

	private void calcGroup056_57(int i) {
		// 56: O in =O
		// 57: O in phenol, enol, and carboxyl
		// enol : compound containing a hydroxyl group bonded to a carbon atom
		// that in turn forms a double bond with another carbon atom.
		// enol = HO-C=C-
		// carboxyl= HO-C(=O)-

		if (!fragment[i].equals("SsOH"))
			return;

		java.util.List ca = atomContainer.getConnectedAtomsList(atomContainer.getAtom(i));

		IAtom ca0 = (IAtom)ca.get(0);
		if (ca0.getFlag(CDKConstants.ISAROMATIC)) { // phenol
			frags[57]++;
			alogpfrag[i] = 57;
			return;
		}

		java.util.List ca2 = atomContainer.getConnectedAtomsList(ca0);

		for (int j = 0; j <= ca2.size() - 1; j++) {
			if (atomContainer.getBond((IAtom)ca2.get(j), ca0).getOrder() == 2) {
				frags[57]++;
				alogpfrag[i] = 57;
				return;
			}
		}

		frags[56]++;
		alogpfrag[i] = 56;

	}

	private void calcGroup058_61(int i) {
		java.util.List ca = atomContainer.getConnectedAtomsList(atomContainer.getAtom(i));

		// 58: O in =O
		// 61: --O in nitro, N-oxides
		// 62: O in O-
		IAtom ca0 = (IAtom)ca.get(0);
		
		if (fragment[i].equals("SsOm")) {

			if (ca0.getSymbol().equals("N") && ca0.getFormalCharge() == 1) {
				frags[61]++;
				alogpfrag[i] = 61;
			} else {
				frags[62]++;
				alogpfrag[i] = 62;
			}

		} else if (fragment[i].equals("SdO")) {
			if (ca0.getSymbol().equals("N") && ca0.getFormalCharge() == 1) {
				frags[61]++;
				alogpfrag[i] = 61;
			} else {
				frags[58]++;
				alogpfrag[i] = 58;
			}
		}

	}

	private void calcGroup059_060_063(int i) {
		// O in Al-O-Ar, Ar2O, R...O...R, ROC=X
		// ... = aromatic single bonds
		if (!fragment[i].equals("SssO") && !fragment[i].equals("SaaO"))
			return;

		// Al-O-Ar, Ar2O
		java.util.List ca = atomContainer.getConnectedAtomsList(atomContainer.getAtom(i));
		IAtom ca0 = (IAtom)ca.get(0);
		IAtom ca1 = (IAtom)ca.get(1);
		
		if (fragment[i].equals("SssO")) {
			if (ca0.getFlag(CDKConstants.ISAROMATIC)
					|| ca1.getFlag(CDKConstants.ISAROMATIC)) {
				frags[60]++;
				alogpfrag[i] = 60;

			} else {

				for (int j = 0; j <= ca.size() - 1; j++) {
					// if (((IAtom)ca.get(j)).getSymbol().equals("C")) { // for malathion
					// O-P(=S)
					// was considered to count as group 60

					java.util.List ca2 = atomContainer.getConnectedAtomsList(((IAtom)ca.get(j)));
					for (int k = 0; k <= ca2.size() - 1; k++) {
						if (atomContainer.getBond(((IAtom)ca.get(j)), (IAtom)ca2.get(k)).getOrder() == 2) {
							if (!((IAtom)ca2.get(k)).getSymbol().equals("C")) {
								frags[60]++;
								alogpfrag[i] = 60;
								return;
							}
						}
					}

				} // end j ca loop

				if (ca0.getSymbol().equals("O")
						|| ca1.getSymbol().equals("O")) {
					frags[63]++;
					alogpfrag[i] = 63;
				} else {
					frags[59]++;
					alogpfrag[i] = 59;

				}

			}
		} else if (fragment[i].equals("SaaO")) {
			frags[60]++;
			alogpfrag[i] = 60;
		}

	}

	private void calcGroup066_to_079(int i) {

		int NAr = 0;
		int NAl = 0;
		IAtom ai = atomContainer.getAtom(i);
		if (!ai.getSymbol().equals("N"))
			return;

		java.util.List ca = atomContainer.getConnectedAtomsList(atomContainer.getAtom(i));
		IAtom ca0 = (IAtom)ca.get(0);
		IAtom ca1 = (IAtom)ca.get(1);
		
		for (int j = 0; j <= ca.size() - 1; j++) {
			if (((IAtom)ca.get(j)).getFlag(CDKConstants.ISAROMATIC))
				NAr++;
			else
				NAl++;
		}

		// first check if have RC(=O)N or NX=X

		for (int j = 0; j <= ca.size() - 1; j++) {
			java.util.List ca2 = atomContainer.getConnectedAtomsList((IAtom)ca.get(j));
			for (int k = 0; k <= ca2.size() - 1; k++) {
				IAtom ca2k = (IAtom)ca2.get(k);
				if (atomContainer.getAtomNumber(ca2k) != i) {
					if (!ca2k.getSymbol().equals("C")) {
						if (!ca2k.getFlag(CDKConstants.ISAROMATIC)
								&& !((IAtom)ca.get(j)).getFlag(CDKConstants.ISAROMATIC)
								&& !ai.getFlag(CDKConstants.ISAROMATIC)) {
							if (atomContainer.getBond(((IAtom)ca.get(j)), ca2k).getOrder() == 2) {
								frags[72]++;
								alogpfrag[i] = 72;
								return;
							}
						}

					}
				}
			}
		}

		if (fragment[i].equals("SsNH2")) {

			if (ca0.getFlag(CDKConstants.ISAROMATIC)
					|| !ca0.getSymbol().equals("C")) {
				frags[69]++;
				alogpfrag[i] = 69;
			} else {
				frags[66]++;
				alogpfrag[i] = 66;
			}
		} else if (fragment[i].equals("SaaNH") || fragment[i].equals("SsaaN")) { // R...NH...R
			frags[73]++;
			alogpfrag[i] = 73;
		} else if (fragment[i].equals("SssNH")) {

			if (NAr == 2 && NAl == 0) { // Ar2NH
				frags[73]++;
				alogpfrag[i] = 73;
			} else if (NAr == 1 && NAl == 1) { // Ar-NH-Al
				frags[70]++;
				alogpfrag[i] = 70;

			} else if (NAr == 0 && NAl == 2) { // Al2NH
				frags[67]++;
				alogpfrag[i] = 67;

			}

		} else if (fragment[i].equals("SsssN")) {
			if ((NAr == 3 && NAl == 0) || (NAr == 2 && NAl == 1)) { // Ar3N &
				// Ar2NAl
				frags[73]++;
				alogpfrag[i] = 73;
			} else if (NAr == 1 && NAl == 2) {
				frags[71]++;
				alogpfrag[i] = 71;
			} else if (NAr == 0 && NAl == 3) {
				frags[68]++;
				alogpfrag[i] = 68;
			}
		} else if (fragment[i].equals("SaaN")) {
			frags[75]++;
			alogpfrag[i] = 75;

		} else if (fragment[i].equals("SssdNp")) {

			boolean HaveSsOm = false;
			boolean HaveSdO = false;
			boolean Ar = false;

			for (int j = 0; j <= ca.size() - 1; j++) {
				if (fragment[atomContainer.getAtomNumber(((IAtom)ca.get(j)))].equals("SsOm")) {
					HaveSsOm = true;
				} else if (fragment[atomContainer.getAtomNumber(((IAtom)ca.get(j)))].equals("SdO")) {
					HaveSdO = true;
				} else {
					if (((IAtom)ca.get(j)).getFlag(CDKConstants.ISAROMATIC)) {
						Ar = true;
					}
				}
			}

			if (HaveSsOm && HaveSdO && Ar) {
				frags[76]++;
				alogpfrag[i] = 76;
			} else if (HaveSsOm && HaveSdO && !Ar) {
				frags[77]++;
				alogpfrag[i] = 77;
			} else {
				frags[79]++;
				alogpfrag[i] = 79;
			}

		} else if (fragment[i].equals("StN")) {
			if (ca0.getSymbol().equals("C")) { // R#N
				frags[74]++;
				alogpfrag[i] = 74;
			}
		} else if (fragment[i].equals("SdNH") || fragment[i].equals("SdsN")) {

			// test for RO-NO
			if (fragment[i].equals("SdsN")) {
				if (ca0.getSymbol().equals("O")
						&& ca1.getSymbol().equals("O")) {
					frags[76]++;
					alogpfrag[i] = 76;
					return;
				}
			}

			boolean flag1 = false;
			boolean flag2 = false;

			for (int j = 0; j <= ca.size() - 1; j++) {
				if (atomContainer.getBond(ai, ((IAtom)ca.get(j))).getOrder() == 2) {
					if (((IAtom)ca.get(j)).getSymbol().equals("C")) {
						frags[74]++;
						alogpfrag[i] = 74;
						return;
					} else {
						flag1 = true;
					}
				} else {
					if (!((IAtom)ca.get(j)).getSymbol().equals("C")
							|| ((IAtom)ca.get(j)).getFlag(CDKConstants.ISAROMATIC)) {
						flag2 = true;
					}
				}

				if (flag1 && flag2) { // X-N=X or Ar-N=X
					frags[78]++;
					alogpfrag[i] = 78;
				} else {
					//logger.debug("missing group: R-N=X");
				}

			}

		} else if (fragment[i].indexOf("p") > -1) {
			frags[79]++;
			alogpfrag[i] = 79;
		}

		// TODO add code for R--N(--R)--O
		// first need to have program correctly read in structures with this
		// fragment (pyridine-n-oxides)

	}

	private void calcGroup081_to_085(int i) {

		if (!fragment[i].equals("SsF"))
			return;

		java.util.List ca = atomContainer.getConnectedAtomsList(atomContainer.getAtom(i));
		IAtom ca0 = (IAtom)ca.get(0);
		
		java.util.List bonds = atomContainer.getConnectedBondsList(ca0);

		int doublebondcount = 0;
		int triplebondcount = 0;

		String hybrid = "";

		for (int j = 0; j <= bonds.size() - 1; j++) {
			IBond bj = (IBond)bonds.get(j);
			if (bj.getOrder() == 2) {
				doublebondcount++;
			}

			else if (bj.getOrder() == 3) {
				triplebondcount++;
			}

		}

		if (doublebondcount == 0 && triplebondcount == 0) {
			hybrid = "sp3";
		} else if (doublebondcount == 1) {
			hybrid = "sp2";
		} else if (doublebondcount == 2 || triplebondcount == 1) {
			hybrid = "sp";
		}

		java.util.List ca2 = atomContainer.getConnectedAtomsList(ca0);

		int OxNum = 0;

		for (int j = 0; j <= ca2.size() - 1; j++) {
			IAtom ca2j = (IAtom)ca2.get(j);
			String s = ca2j.getSymbol();

			// // F,O,Cl,Br,N

			// if (s.equals("F") || s.equals("O") || s.equals("Cl")
			// || s.equals("Br") || s.equals("N") || s.equals("S"))

			if (ap.getNormalizedElectronegativity(ca2j.getSymbol()) > 1) {
				OxNum += atomContainer.getBond(ca0, ca2j).getOrder();
			}

		}

		if (hybrid.equals("sp3") && OxNum == 1) {
			frags[81]++;
			alogpfrag[i] = 81;
		} else if (hybrid.equals("sp3") && OxNum == 2) {
			frags[82]++;
			alogpfrag[i] = 82;
		} else if (hybrid.equals("sp3") && OxNum == 3) {
			frags[83]++;
			alogpfrag[i] = 83;
		} else if (hybrid.equals("sp2") && OxNum == 1) {
			frags[84]++;
			alogpfrag[i] = 84;
		} else if ((hybrid.equals("sp2") && OxNum > 1)
				|| (hybrid.equals("sp") && OxNum >= 1)
				|| (hybrid.equals("sp3") && OxNum == 4)
				|| !ca0.getSymbol().equals("C")) {
			frags[85]++;
			alogpfrag[i] = 85;
		}

	}

	private void calcGroup086_to_090(int i) {

		if (!fragment[i].equals("SsCl"))
			return;

		java.util.List ca = atomContainer.getConnectedAtomsList(atomContainer.getAtom(i));
		IAtom ca0 = (IAtom)ca.get(0);
		
		java.util.List bonds = atomContainer.getConnectedBondsList(ca0);

		int doublebondcount = 0;
		int triplebondcount = 0;

		String hybrid = "";

		for (int j = 0; j <= bonds.size() - 1; j++) {
			IBond bj = (IBond)bonds.get(j);
			if (bj.getOrder() == 2) {
				doublebondcount++;
			}

			else if (bj.getOrder() == 3) {
				triplebondcount++;
			}

		}

		if (doublebondcount == 0 && triplebondcount == 0) {
			hybrid = "sp3";
		} else if (doublebondcount == 1) {
			hybrid = "sp2";
		} else if (doublebondcount == 2 || triplebondcount == 1) {
			hybrid = "sp";
		}

		java.util.List ca2 = atomContainer.getConnectedAtomsList(ca0);

		int OxNum = 0;

		for (int j = 0; j <= ca2.size() - 1; j++) {
			IAtom ca2j = (IAtom)ca2.get(j);
			String s = ca2j.getSymbol();

			// if (s.equals("F") || s.equals("O") || s.equals("Cl")
			// || s.equals("Br") || s.equals("N") || s.equals("S"))

			if (ap.getNormalizedElectronegativity(s) > 1) {
				// // F,O,Cl,Br,N
				OxNum += atomContainer.getBond(ca0, ca2j).getOrder();
			}

⌨️ 快捷键说明

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