📄 alogp.java
字号:
} 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 + -