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

📄 alogp.java

📁 化学图形处理软件
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
			java.util.List ca = atomContainer.getConnectedAtomsList(atomContainer.getAtom(i));

			int CarbonCount = 0;
			int HeteroCount = 0;

			// logger.debug("here");
			for (int j = 0; j <= ca.size() - 1; j++) {
				if (((IAtom)ca.get(j)).getSymbol().equals("C"))
					CarbonCount++;
				else
					HeteroCount++;
			}

			if (CarbonCount == 4 && HeteroCount == 0) {
				frags[4]++;
				alogpfrag[i] = 4;
			} else if (CarbonCount == 3 && HeteroCount == 1) {
				frags[11]++;
				alogpfrag[i] = 11;
			} else if (CarbonCount == 2 && HeteroCount == 2) {
				frags[12]++;
				alogpfrag[i] = 12;
			} else if (CarbonCount == 1 && HeteroCount == 3) {
				frags[13]++;
				alogpfrag[i] = 13;
			} else if (CarbonCount == 0 && HeteroCount == 4) {
				frags[14]++;
				alogpfrag[i] = 14;
			}

		}

	}

	private void calcGroup015(int i) {
		if (fragment[i].equals("SdCH2")) {
			frags[15]++;
			alogpfrag[i] = 15;
		}

	}

	private void calcGroup016_018_036_037(int i) {

		IAtom ai = atomContainer.getAtom(i);

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

		java.util.List ca = atomContainer.getConnectedAtomsList(ai);

		boolean HaveCdX = false;
		boolean HaveCsX = false;
		boolean HaveCsAr = false;

		for (int j = 0; j <= ca.size() - 1; j++) {
			if (atomContainer.getBond(ai, ((IAtom)ca.get(j))).getOrder() == 1) {
				if (!((IAtom)ca.get(j)).getSymbol().equals("C")) {
					HaveCsX = true;
				}

				if (((IAtom)ca.get(j)).getFlag(CDKConstants.ISAROMATIC)) {
					HaveCsAr = true;
				}

			} else if (atomContainer.getBond(ai, ((IAtom)ca.get(j))).getOrder() == 2) {
				if (!((IAtom)ca.get(j)).getSymbol().equals("C")) {
					HaveCdX = true;
				}

			}
		}

		if (HaveCdX) {
			if (HaveCsAr) {
				frags[37]++;
				alogpfrag[i] = 37;
			} else {
				frags[36]++;
				alogpfrag[i] = 36;
			}
		} else {
			if (HaveCsX) {
				frags[18]++;
				alogpfrag[i] = 18;
			} else {
				frags[16]++;
				alogpfrag[i] = 16;
			}
		}
	}

	private void calcGroup017_019_020_038_to_041(int i) {

		IAtom ai = atomContainer.getAtom(i);

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

		java.util.List ca = atomContainer.getConnectedAtomsList(ai);

		int RCount = 0;
		int XCount = 0;
		boolean HaveCdX = false;
		int AliphaticCount = 0;
		int AromaticCount = 0;

		for (int j = 0; j <= ca.size() - 1; j++) {
			if (atomContainer.getBond(ai, ((IAtom)ca.get(j))).getOrder() == 1) {
				if (((IAtom)ca.get(j)).getSymbol().equals("C")) {
					RCount++;
				} else {
					XCount++;
				}

				if (!((IAtom)ca.get(j)).getFlag(CDKConstants.ISAROMATIC)) {
					AliphaticCount++;
				} else {
					AromaticCount++;
				}

			} else if (atomContainer.getBond(ai, ((IAtom)ca.get(j))).getOrder() == 2) {
				if (!((IAtom)ca.get(j)).getSymbol().equals("C")) {
					HaveCdX = true;
				}
			}
		}

		if (HaveCdX) {
			if (AromaticCount >= 1) { // Ar-C(=X)-R
				// TODO: add code to check if have R or X for nonaromatic
				// attachment to C?
				// if we do this check we would have missing fragment for
				// Ar-C(=X)-X
				// TODO: which fragment to use if we have Ar-C(=X)-Ar? Currently
				// this frag is used

				frags[39]++;
				alogpfrag[i] = 39;
			} else if (AromaticCount == 0) {
				if (RCount == 1 && XCount == 1) {
					frags[40]++;
					alogpfrag[i] = 40;
				} else if (RCount == 0 && XCount == 2) {
					frags[41]++;
					alogpfrag[i] = 41;
				} else {
					frags[38]++;
					alogpfrag[i] = 38;
				}

			}

		} else {
			if (RCount == 2 && XCount == 0) {
				frags[17]++;
				alogpfrag[i] = 17;
			} else if (RCount == 1 && XCount == 1) {
				frags[19]++;
				alogpfrag[i] = 19;
			} else if (RCount == 0 && XCount == 2) {
				frags[20]++;
				alogpfrag[i] = 20;
			}
		}

	}

	private void calcGroup021_to_023_040(int i) {

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

		if (fragment[i].equals("StCH")) {
			frags[21]++;
			alogpfrag[i] = 21;
		} else if (fragment[i].equals("SddC")) {
			if (((IAtom)ca.get(0)).getSymbol().equals("C") && ((IAtom)ca.get(1)).getSymbol().equals("C")) {// R==C==R
				frags[22]++;
				alogpfrag[i] = 22;
			} else if (!((IAtom)ca.get(0)).getSymbol().equals("C")
					&& !((IAtom)ca.get(1)).getSymbol().equals("C")) {// X==C==X
				frags[40]++;
				alogpfrag[i] = 40;
			}
		} else if (fragment[i].equals("StsC")) {

			boolean HaveCtX = false;
			boolean HaveCsX = false;

			for (int j = 0; j <= ca.size() - 1; j++) {
				if (atomContainer.getBond(ai, ((IAtom)ca.get(j))).getOrder() == 1) {
					if (!((IAtom)ca.get(j)).getSymbol().equals("C")) {
						HaveCsX = true;
					}
				} else if (atomContainer.getBond(ai, ((IAtom)ca.get(j))).getOrder() == 3) {
					if (!((IAtom)ca.get(j)).getSymbol().equals("C")) {
						HaveCtX = true;
					}
				}

			}

			if (HaveCtX && !HaveCsX) {
				frags[40]++;
				alogpfrag[i] = 40;
			} else if (HaveCsX) {// #C-X
				frags[23]++;
				alogpfrag[i] = 23;
			} else if (!HaveCsX) { // #C-R
				frags[22]++;
				alogpfrag[i] = 22;
			}

		}

	}

	private void calcGroup024_027_030_033_042(int i) {
		// 24: C in R--CH--R
		// 27: C in R--CH--X
		// 30: C in X--CH--X
		// 33: C in R--CH...X
		// 42: C in X--CH...X

		if (!fragment[i].equals("SaaCH"))
			return;
		// logger.debug("here");

		IAtom ai = atomContainer.getAtom(i);
		java.util.List ca = atomContainer.getConnectedAtomsList(atomContainer.getAtom(i));
		IAtom ca0 = (IAtom)ca.get(0);
		IAtom ca1 = (IAtom)ca.get(1);

		if (ca0.getSymbol().equals("C") && ca1.getSymbol().equals("C")) {
			frags[24]++;
			alogpfrag[i] = 24;
			return;
		}

		// check if both hetero atoms have at least one double bond
		java.util.List bonds = atomContainer.getConnectedBondsList(ca0);

		boolean HaveDouble1 = false;

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

		}

		bonds = atomContainer.getConnectedBondsList(ca1);

		boolean HaveDouble2 = false;

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

		}

		if (!(ca0).getSymbol().equals("C") && !((IAtom)ca.get(1)).getSymbol().equals("C")) {
			if (HaveDouble1 && HaveDouble2) { // X--CH--X
				frags[30]++;
				alogpfrag[i] = 30;
			} else { // X--CH...X
				frags[42]++;
				alogpfrag[i] = 42;
			}

		} else if (ca0.getSymbol().equals("C") && !ca1.getSymbol().equals("C")
				|| (!ca0.getSymbol().equals("C") && ca1.getSymbol().equals("C"))) {

			if (HaveDouble1 && HaveDouble2) { // R--CH--X
				frags[27]++;
				alogpfrag[i] = 27;
			} else {// R--CH...X
				frags[33]++;
				alogpfrag[i] = 33;

			}

		}

	}

	private void calcGroup025_026_028_029_031_032_034_035_043_044(int i) {
		// 25: R--CR--R
		// 26: R--CX--R
		// 28: R--CR--X
		// 29: R--CX--X
		// 31: X--CR--X
		// 32: X--CX--X
		// 34: X--CR...X
		// 35: X--CX...X
		// 43: X--CR...X
		// 43: X--CX...X

		if (!fragment[i].equals("SaasC") && !fragment[i].equals("SaaaC"))
			return;

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

		IAtom[] sameringatoms = new IAtom[2];
		IAtom nonringatom = atomContainer.getBuilder().newAtom();

		int sameringatomscount = 0;
		for (int j = 0; j <= ca.size() - 1; j++) {
			if (inSameAromaticRing(atomContainer, ai, ((IAtom)ca.get(j)), rs)) {
				sameringatomscount++;
			}

		}

		if (sameringatomscount == 2) {
			int count = 0;
			for (int j = 0; j <= ca.size() - 1; j++) {
				if (inSameAromaticRing(atomContainer, ai, ((IAtom)ca.get(j)), rs)) {
					sameringatoms[count] = (IAtom)ca.get(j);
					count++;
				} else {
					nonringatom = (IAtom)ca.get(j);
				}

			}
		} else { // sameringsatomscount==3
			// arbitrarily assign atoms: (no way to decide consistently)
			sameringatoms[0] = (IAtom)ca.get(0);
			sameringatoms[1] = (IAtom)ca.get(1);
			nonringatom = (IAtom)ca.get(2);
		}

		// check if both hetero atoms have at least one double bond
		java.util.List bonds = atomContainer.getConnectedBondsList(sameringatoms[0]);

		boolean HaveDouble1 = false;

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

		}

		bonds = atomContainer.getConnectedBondsList(sameringatoms[1]);

		boolean HaveDouble2 = false;

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

		}

		if (!sameringatoms[0].getSymbol().equals("C")
				&& !sameringatoms[1].getSymbol().equals("C")) {
			if (HaveDouble1 && HaveDouble2) { // X--CR--X
				if (nonringatom.getSymbol().equals("C")) {
					frags[31]++;
					alogpfrag[i] = 31;
				} else { // X--CX--X
					frags[32]++;
					alogpfrag[i] = 32;
				}

			} else {

				if (nonringatom.getSymbol().equals("C")) { // X--CR..X
					frags[43]++;
					alogpfrag[i] = 43;

				} else { // X--CX...X
					frags[44]++;
					alogpfrag[i] = 44;
				}

			}
		} else if (sameringatoms[0].getSymbol().equals("C")
				&& sameringatoms[1].getSymbol().equals("C")) {

			if (nonringatom.getSymbol().equals("C")) {// R--CR--R
				frags[25]++;
				alogpfrag[i] = 25;
			} else { // R--CX--R
				frags[26]++;
				alogpfrag[i] = 26;
			}

		} else if ((sameringatoms[0].getSymbol().equals("C") && !sameringatoms[1]
				.getSymbol().equals("C"))
				|| (!sameringatoms[0].getSymbol().equals("C") && sameringatoms[1]
						.getSymbol().equals("C"))) {

			if (HaveDouble1 && HaveDouble2) { // R--CR--X
				if (nonringatom.getSymbol().equals("C")) {
					frags[28]++;
					alogpfrag[i] = 28;
				} else { // R--CX--X
					frags[29]++;
					alogpfrag[i] = 29;
				}

			} else {

				if (nonringatom.getSymbol().equals("C")) { // R--CR..X
					frags[34]++;
					alogpfrag[i] = 34;

				} else { // R--CX...X
					frags[35]++;
					alogpfrag[i] = 35;
				}

			}

		}

	}

	private void calcGroup046_to_055(int i) {

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

		if (ai.getHydrogenCount() == 0)
			return;

		// first check for alpha carbon:
		if (ai.getSymbol().equals("C") && !ai.getFlag(CDKConstants.ISAROMATIC)) {
			for (int j = 0; j <= ca.size() - 1; j++) {

				if (atomContainer.getBond(ai, ((IAtom)ca.get(j))).getOrder() == 1 && ((IAtom)ca.get(j)).getSymbol().equals("C")) { // single bonded
					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 (!ca2k.getSymbol().equals("C")) {
							if (atomContainer.getBond(((IAtom)ca.get(j)), ca2k).getOrder() >= 2) {
								frags[51] += ai.getHydrogenCount();
								return;
							}

							if (((IAtom)ca.get(j)).getFlag(CDKConstants.ISAROMATIC)
									&& ca2k.getFlag(CDKConstants.ISAROMATIC)) {
								if (inSameAromaticRing(atomContainer, ((IAtom)ca.get(j)), ca2k,
												rs)) {
									frags[51] += ai.getHydrogenCount();
									return;
								}
							}
						} // end !ca2[k].getSymbol().equals("C"))

					} // end k loop

				} // end if (atomContainer.getBond(ai, ((IAtom)ca.get(j))).getOrder() == 1) {
			}// end j loop
		} // end if(ai.getSymbol().equals("C") &&
		// !ai.getFlag(CDKConstants.ISAROMATIC)) {

		if (!ai.getSymbol().equals("C")) {
			frags[50] += ai.getHydrogenCount();
			return;
		}

		java.util.List bonds = atomContainer.getConnectedBondsList(ai);

		int doublebondcount = 0;
		int triplebondcount = 0;

		String hybrid = "";

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

			else if (((IBond)bonds.get(j)).getOrder() == 3) {
				triplebondcount++;
			}

		}

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

⌨️ 快捷键说明

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