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