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

📄 logp.c

📁 药物开发中的基于结构的从头设计代码
💻 C
📖 第 1 页 / 共 3 页
字号:
					}
				}
                         else 
                                {
                                 if(group.num_pi<=1)
                                        {
                                         strcpy(atom[i].xtype,"N.3.x");
					 continue;
                                        }
                                 else if(atom[i].ring==0)
                                        {
                                         strcpy(atom[i].xtype,"N.3.x");
					 continue;
                                        }
                                 else
                                        {
                                         strcpy(atom[i].xtype,"N.3.x.ring");
					 continue;
                                        }
                                }
			}
		 else
			{
			 strcpy(atom[i].xtype,"N.3.unknown");
			 continue;
			}
		}

	if(!strcmp(atom[i].type,"N.am"))
		{
		 if(group.num_nonh==1)
			{
			 strcpy(atom[i].xtype,"N.am.h2");
			 continue;
			}
		 else if(group.num_nonh==2)
			{
			 if(group.num_hetero==0)
				{
				 strcpy(atom[i].xtype,"N.am.h");
				 continue;
				}
			 else
				{
				 strcpy(atom[i].xtype,"N.am.h.x");
				 continue;
				}
			}
		 else if(group.num_nonh==3)
			{
			 if(group.num_hetero==0)
				{
				 strcpy(atom[i].xtype,"N.am");
				 continue;
				}
			 else
				{
				 strcpy(atom[i].xtype,"N.am.x");
				 continue;
				}
			}
		 else
			{
			 strcpy(atom[i].xtype,"N.am.unknown");
			 continue;
			}
		}

	if(!strcmp(atom[i].type,"N.2"))
		{
		 if(group.db_type==1||group.db_type==4||group.db_type==5)
			{
			 if(group.num_hetero==0)
				{
				 if(group.num_pi==0)
					{
					 strcpy(atom[i].xtype,"N.2.(=C).pi=0");
					 continue;
					}
				 else
					{
					 strcpy(atom[i].xtype,"N.2.(=C).pi=1");
                                         continue;
					}
				}
			 else
				{
				 if(group.num_pi==0)
                                      {
                                       strcpy(atom[i].xtype,"N.2.(=C).x.pi=0");
                                       continue;
                                      }
                                 else
                                      {
                                       strcpy(atom[i].xtype,"N.2.(=C).x.pi=1");
                                       continue;
                                      }
				}
			}
		 else if(group.db_type==2)
			{
			 if(group.num_hetero==0)
				{
				 strcpy(atom[i].xtype,"N.2.(=N)");
				 continue;
				}
			 else
				{
				 strcpy(atom[i].xtype,"N.2.(=N).x");
				 continue;
				}
			}
		 else if(group.db_type==3)
			{
			 if(group.num_nonh==2)
				{
				 strcpy(atom[i].xtype,"N.2.o");
				 continue;
				}
			 else if(group.num_nonh==3) 
				{
				 strcpy(atom[i].xtype,"N.2.o2");
				 continue;
				}
			 else 
				{
				 strcpy(atom[i].xtype,"N.2.o");
                                 continue;
				}
			}
		 else
			{
			 strcpy(atom[i].xtype,"N.2.unknown");
			 continue;
			}
		}

	if(!strcmp(atom[i].type,"N.ar"))
		{
		 strcpy(atom[i].xtype,"N.ar");
                 continue;
		}

	if(!strcmp(atom[i].type,"N.1"))
		{
		 strcpy(atom[i].xtype,"N.1");
		 continue;
		}

	if(!strcmp(atom[i].type,"O.3"))
		{
		 if(group.num_nonh==1)
			{
			 if(group.num_hetero==0)
				{
				 if(group.num_pi==0)
					{
					 strcpy(atom[i].xtype,"O.3.h.pi=0");
					 continue;
					}
				 else 
					{
					 strcpy(atom[i].xtype,"O.3.h.pi=1");
					 continue;
					}
				}
			 else 
				{
                                 strcpy(atom[i].xtype,"O.3.h.x");
				 continue;
				}
			}
		 else if(group.num_nonh==2)
			{
			 if(group.num_hetero==0)
				{
				 if(group.num_pi==0)
					{
					 strcpy(atom[i].xtype,"O.3.pi=0");
					 continue;
					}
				 else
					{
					 strcpy(atom[i].xtype,"O.3.pi>0");
					 continue;
					}
				}
			 else
				{
				 strcpy(atom[i].xtype,"O.3.x");
				 continue;
				}
			}
		 else
			{
			 strcpy(atom[i].xtype,"O.3.unknown");
			 continue;
			}
		}

	if(!strcmp(atom[i].type,"O.2")||!strcmp(atom[i].type,"O.co2"))
		{
		 strcpy(atom[i].xtype,"O.2");
		 continue;
		}

	if(!strcmp(atom[i].type,"S.3"))
		{
		 if(group.num_nonh==1)
			{
			 strcpy(atom[i].xtype,"S.3.h");
			 continue;
			}
		 else if(group.num_nonh==2)
			{
			 strcpy(atom[i].xtype,"S.3");
			 continue;
			}
		 else
			{
                 	 strcpy(atom[i].xtype,"S.3.unknown");
			 continue;
			}
		}

	if(!strcmp(atom[i].type,"S.2"))
		{
		 strcpy(atom[i].xtype,"S.2");
		 continue;
		}

	if(!strcmp(atom[i].type,"S.o"))
		{
		 strcpy(atom[i].xtype,"S.o");
		 continue;
		}

	if(!strcmp(atom[i].type,"S.o2"))
		{
		 strcpy(atom[i].xtype,"S.o2");
                 continue;
		}

	if(!strcmp(atom[i].type,"P.3"))
		{
		 if(group.db_type==3)
			{
		 	 strcpy(atom[i].xtype,"P.3.(=O)");
		 	 continue;
			}
		 else if(group.db_type==4)
			{
			 strcpy(atom[i].xtype,"P.3.(=S)");
                         continue;
			}
		 else
			{
			 strcpy(atom[i].xtype,"P.3.unknown");
                         continue;
			}
		}

	if(!strcmp(atom[i].type,"F"))
		{
                 if(group.num_pi==0)
                        {
                         strcpy(atom[i].xtype,"F.pi=0");
			 continue;
                        }
                 else if(group.num_pi==1) 
                        {
                         strcpy(atom[i].xtype,"F.pi=1");
			 continue;
                        }
		 else
			{
			 strcpy(atom[i].xtype,"F.unknown");
                         continue;
			}
		}

	if(!strcmp(atom[i].type,"Cl"))
		{
                 if(group.num_pi==0) 
                        {
                         strcpy(atom[i].xtype,"Cl.pi=0");
			 continue;
                        }
                 else if(group.num_pi==1) 
                        {
                         strcpy(atom[i].xtype,"Cl.pi=1");
			 continue;
                        }
		 else
                        {
                         strcpy(atom[i].xtype,"Cl.unknown");
                         continue;
                        }
		}

	if(!strcmp(atom[i].type,"Br"))
		{
                 if(group.num_pi==0) 
                        {
                         strcpy(atom[i].xtype,"Br.pi=0");
			 continue;
                        }
                 else if(group.num_pi==1) 
                        {
                         strcpy(atom[i].xtype,"Br.pi=1");
			 continue;
                        }
		 else
			{
                         strcpy(atom[i].xtype,"Br.unknown");
                         continue;
                        }
		}

	if(!strcmp(atom[i].type,"I"))
		{
		 if(group.num_pi==0) 
			{
			 strcpy(atom[i].xtype,"I.pi=0");
			 continue;
			}
		 else if(group.num_pi==1)
			{
			 strcpy(atom[i].xtype,"I.pi=1");
			 continue;
			}
		 else
			{
			 strcpy(atom[i].xtype,"I.unknown");
                         continue;
			}
		}

	 strcpy(atom[i].xtype,"Un"); atom[i].valid=0;
	}

	return;
}

int Ligand::Check_Atom_Type(Group &group) const 
// there are always some dilemma when assigning the atom type
{
	int i,mark;

	if(group.center.type[0]=='P')
                {
                 if(strcmp(group.center.type,"P.3"))
                        {
                         strcpy(group.center.type,"P.3");
                         return FALSE;
                        }
                }

	if(group.center.type[0]=='N')
		{
		 if(group.db_type==3)	// -NO, -NO2  and etc. 
			{
			 if(strcmp(group.center.type,"N.2"))
				{
				 strcpy(group.center.type,"N.2");
			 	 return FALSE;
				}
			}
		}

	if(group.center.type[0]=='S')
		{
		 if((group.db_type==3)&&(group.num_neib==3)) // -SO-
			{
			 if(strcmp(group.center.type,"S.o"))
				{
				 strcpy(group.center.type,"S.o");
				 return FALSE;
				}
			}
		 else if((group.db_type==3)&&(group.num_neib==4)) // -SO2-
			{
			 if(strcmp(group.center.type,"S.o2"))
                                {
                                 strcpy(group.center.type,"S.o2");
                                 return FALSE;
                                }
			}
		 else if(group.num_neib>=4)	// e.g. -SF5
			{
			 if(strcmp(group.center.type,"S.o2"))
                                {
                                 strcpy(group.center.type,"S.o2");
                                 return FALSE;
                                }
			}
		}

	if(!strcmp(group.center.type,"C.2"))
		{
		 mark=TRUE;

		 for(i=0;i<group.num_nonh;i++)
			{
			 if(!strcmp(group.bond[i].type,"2")) continue;
			 else {mark=FALSE; break;}
			} 

		 if(mark==TRUE&&group.num_nonh==2&&group.num_neib==2) 	// =C=
			{
			 strcpy(group.center.type,"C.1");
			 return FALSE;
			}
		}

	if(!strcmp(group.center.type,"N.2"))
		{
		 mark=TRUE;

                 for(i=0;i<group.num_nonh;i++)
                        {
                         if(!strcmp(group.bond[i].type,"2")) continue;
                         else {mark=FALSE; break;}
                        }

                 if(mark==TRUE&&group.num_nonh==2&&group.num_neib==2)  // =N=
                        {
                         strcpy(group.center.type,"N.1");
                         return FALSE;
                        }
		}

	return TRUE;
}

int Ligand::Count_Hydrophobic_Carbon()
{
        int i,num;

        num=0;

        for(i=0;i<num_atom;i++)
                {
                 if(strcmp(atom[i].type,"C.3")&&
                    strcmp(atom[i].type,"C.2")) continue;
                 else if(Hydrophobic_Neighbor_Check(atom[i].id)
                         ==FALSE) continue;
                 else {num++; atom[i].logp+=(LOGP_HYDROPHOBIC_CARBON);}
                }

        if(num>=10) num/=2;

        return num;
}

int Ligand::Hydrophobic_Neighbor_Check(int id) const

⌨️ 快捷键说明

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