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

📄 logp.c

📁 药物开发中的基于结构的从头设计代码
💻 C
📖 第 1 页 / 共 3 页
字号:
# include "link.h"

float Ligand::Get_LogP()
{
        int i,num;
        float xlogp=0.000;

        for(i=0;i<num_atom;i++)
                {
                 if(atom[i].valid==0) continue;
                 else xlogp+=atom[i].logp;
                }

        num=Count_Hydrophobic_Carbon();
        xlogp+=((LOGP_HYDROPHOBIC_CARBON)*num);

        num=Count_Internal_HBond();
        xlogp+=((LOGP_INTERNAL_HBOND)*num);

        num=Count_Halogen_1_3_Pair();
        xlogp+=((LOGP_HALOGEN_PAIR)*num);

        num=Count_Nar_1_4_Pair();
        xlogp+=((LOGP_NAR_PAIR)*num);

        num=Count_O3_1_4_Pair();
        xlogp+=((LOGP_O3_PAIR)*num);

        num=Count_Acceptor_1_5_Pair();
        xlogp+=((LOGP_ACCEPTOR_PAIR)*num);

        num=Count_Salicylic_Acid();
        xlogp+=((LOGP_SALICYLIC_ACID)*num);

        num=Count_Amino_Acid();
        xlogp+=((LOGP_AMINO_ACID)*num);

        return xlogp;
}

void Ligand::Assign_Atom_Xtype()
{
	int i;
	Group group;

	for(i=0;i<num_atom;i++)
	{
	 if(atom[i].valid==0) continue;
	 else if(atom[i].type[0]=='H') {strcpy(atom[i].xtype,"H"); continue;}

	 group=Find_A_Group(atom[i].id);
	 if(Check_Atom_Type(group)==FALSE) 
		{
		 strcpy(atom[i].type, group.center.type);
		 group=Find_A_Group(atom[i].id);
		}

	 if(!strcmp(atom[i].type,"C.3"))
		{
		 if(group.num_nonh==1)
			{
			 if(group.num_hetero==0)
				{
				 if(group.num_pi==0)
					{
					 strcpy(atom[i].xtype,"C.3.h3.pi=0");
					 continue;
					}
				 else
					{
					 strcpy(atom[i].xtype,"C.3.h3.pi=1");
					 continue;
					}
				}
			 else
				{
                                 strcpy(atom[i].xtype,"C.3.h3.x");
				 continue;
				}
			}
		 else if(group.num_nonh==2)
			{
			 if(group.num_hetero==0)
				{
				 if(group.num_pi==0)
					{
					 strcpy(atom[i].xtype,"C.3.h2.pi=0");
					 continue;
					}
				 else if(group.num_pi==1)
					{
					 strcpy(atom[i].xtype,"C.3.h2.pi=1");
					 continue;
					}
				 else
					{
					 strcpy(atom[i].xtype,"C.3.h2.pi=2");
					 continue;
					}
				}
			 else 
				{
				 if(group.num_pi==0)
                                        {
                                         strcpy(atom[i].xtype,"C.3.h2.x.pi=0");
					 continue;
                                        }
                                 else if(group.num_pi==1)
                                        {
                                         strcpy(atom[i].xtype,"C.3.h2.x.pi=1");
					 continue;
                                        }
                                 else
                                        {
                                         strcpy(atom[i].xtype,"C.3.h2.x.pi=2");
					 continue;
                                        }
				}
			}
		 else if(group.num_nonh==3)
			{
			 if(group.num_hetero==0)
				{
                                 if(group.num_pi==0)
                                        {
                                         strcpy(atom[i].xtype,"C.3.h.pi=0");
					 continue;
                                        }
                                 else if(group.num_pi==1)
                                        {
                                         strcpy(atom[i].xtype,"C.3.h.pi=1");
					 continue;
                                        }
                                 else
                                        {
                                         strcpy(atom[i].xtype,"C.3.h.pi>1");
					 continue;
                                        }
				}
			 else 
				{
                                 if(group.num_pi==0)
                                        {
                                         strcpy(atom[i].xtype,"C.3.h.x.pi=0");
                                         continue;
                                        }
                                 else if(group.num_pi==1)
                                        {
                                         strcpy(atom[i].xtype,"C.3.h.x.pi=1");
					 continue;
                                        }
                                 else
                                        {
                                         strcpy(atom[i].xtype,"C.3.h.x.pi>1");
					 continue;
                                        }
				}
			}
		 else if(group.num_nonh==4)
			{
			 if(group.num_hetero==0)
				{
				 if(group.num_pi==0)
                                       {
                                        strcpy(atom[i].xtype,"C.3.pi=0");
					continue;
                                       }
                                 else if(group.num_pi==1)
                                       {
                                        strcpy(atom[i].xtype,"C.3.pi=1");
					continue;
                                       }
                                 else
                                       {
                                        strcpy(atom[i].xtype,"C.3.pi>1");
					continue;
                                       }
				}
			 else 
				{
				 if(group.num_pi==0)
                                       {
                                        strcpy(atom[i].xtype,"C.3.x.pi=0");
					continue;
                                       }
                                 else 
                                       {
                                        strcpy(atom[i].xtype,"C.3.x.pi>0");
					continue;
                                       }
				}
			}
		 else	// a guess is better than nothing	
			{
			 strcpy(atom[i].xtype,"C.3.unknown");
			 continue;
			}
		}

	if(!strcmp(atom[i].type,"C.2"))
		{
		 if(group.num_nonh==1)
			{
			 strcpy(atom[i].xtype,"C.2.h2");	
			 continue;
			}
		 else if(group.num_nonh==2)
			{
			 if(group.num_hetero==0)
				{
				 if(group.num_pi==0) 
					{
					 strcpy(atom[i].xtype,"C.2.h.pi=0");
					 continue;
					}
				 else
					{
					 strcpy(atom[i].xtype,"C.2.h.pi=1");
					 continue;
					}
				}
			 else
				{
				 if(group.num_pi==0) 
                                        {
                                         strcpy(atom[i].xtype,"C.2.h.x.pi=0");
                                         continue;
                                        }
                                 else
                                        {
                                         strcpy(atom[i].xtype,"C.2.h.x.pi=1");
                                         continue;
                                        }
				}
			}
		 else if(group.num_nonh==3)
			{
			 if(group.num_hetero==0)
				{
				 if(group.num_pi==0)
					{
					 strcpy(atom[i].xtype,"C.2.pi=0"); 
                                         continue;
					}
				 else
					{
					 strcpy(atom[i].xtype,"C.2.pi>0");
					 continue;
					}
				}
			 else if(group.num_hetero==1)
				{
				 if(group.num_pi==0)
                                        {
                                         strcpy(atom[i].xtype,"C.2.x.pi=0"); 
                                         continue;
                                        }
                                 else
                                        {
                                         strcpy(atom[i].xtype,"C.2.x.pi>0");
                                         continue;
                                        }
				}
			 else
				{
				 if(group.num_pi==0)
                                        {
                                         strcpy(atom[i].xtype,"C.2.x2.pi=0"); 
                                         continue;
                                        }
                                 else
                                        {
                                         strcpy(atom[i].xtype,"C.2.x2.pi>0");
                                         continue;
                                        }
				}
			}
		 else	// a guess is better than nothing
			{
			 strcpy(atom[i].xtype,"C.2.unknown");
			 continue;
			}
		}

	 if(!strcmp(atom[i].type,"C.cat"))
		{
		 strcpy(atom[i].xtype,"C.2.x2.pi>0");
		 continue;
		}

	 if(!strcmp(atom[i].type,"C.ar"))
		{
		 if(group.num_nonh==2)
			{
			 if(group.num_nar==0)
				{
				 strcpy(atom[i].xtype,"C.ar.h");
				 continue;
				}
			 else 
				{
				 strcpy(atom[i].xtype,"C.ar.h.(X)");
				 continue;
				}
			}
		 else if(group.num_nonh==3)
			{
			 if(group.num_nar==0)
				{
				 if(group.num_hetero==0)
					{
					 strcpy(atom[i].xtype,"C.ar");
					 continue;
					}
				 else 
					{
					 strcpy(atom[i].xtype,"C.ar.x");
					 continue;
					}
				}
			 else 
				{
				 if(group.num_hetero==0)
                                        {
                                         strcpy(atom[i].xtype,"C.ar.(X)");
					 continue;
                                        }
                                 else 
                                        {
                                         strcpy(atom[i].xtype,"C.ar.(X).x");
					 continue;
                                        }
				}
			}
		 else	// a guess is better than nothing
			{
			 strcpy(atom[i].xtype,"C.ar.unknown");
			 continue;
			}
		}

	if(!strcmp(atom[i].type,"C.1"))
		{
		 if(group.db_type!=0)
			{
			 strcpy(atom[i].xtype,"C.1.==");
			 continue;
			}
		 else if(group.num_nonh==1)
			{
			 strcpy(atom[i].xtype,"C.1.h");
			 continue;
			}
		 else if(group.num_nonh==2)
			{
			 strcpy(atom[i].xtype,"C.1");
                         continue;
			}
		 else	// a guess is better than nothing
			{
			 strcpy(atom[i].xtype,"C.1.unknown");
			 continue;
			}
		}

	if(!strcmp(atom[i].type,"N.4")||!strcmp(atom[i].type,"N.3")||
	   !strcmp(atom[i].type,"N.pl3"))
		{
		 if(group.num_nonh==1)
			{
			 if(group.num_hetero==0)
				{
				 if(group.num_pi==0)
					{
					 strcpy(atom[i].xtype,"N.3.h2.pi=0");
					 continue;
					}
				 else 
					{
					 strcpy(atom[i].xtype,"N.3.h2.pi=1");
					 continue;
					}
				}
			 else 
				{
				 strcpy(atom[i].xtype,"N.3.h2.x");
				 continue;
				}
			}
		 else if(group.num_nonh==2)
			{
			 if(group.num_hetero==0)
				{
				 if(group.num_pi==0)
					{
					 strcpy(atom[i].xtype,"N.3.h.pi=0");
					 continue;
					}
				 else if(group.num_pi==1)
					{
					 strcpy(atom[i].xtype,"N.3.h.pi>0");
					 continue;
					}
				 else if(atom[i].ring==0)
					{
					 strcpy(atom[i].xtype,"N.3.h.pi>0");
					 continue;
					}
				 else
					{
					 strcpy(atom[i].xtype,"N.3.h.ring");
					 continue;
					}
				}
                         else 
                                {
				 if(group.num_pi<=1)
                                        {
                                         strcpy(atom[i].xtype,"N.3.h.x");
                                         continue;
                                        }
                                 else if(atom[i].ring==0)
                                        {
                                         strcpy(atom[i].xtype,"N.3.h.x");
					 continue;
                                        }
                                 else
                                        {
                                         strcpy(atom[i].xtype,"N.3.h.x.ring");
					 continue;
                                        }
                                }
			}
		 else if(group.num_nonh==3)
			{
			 if(group.num_hetero==0)
				{
				 if(group.num_pi==0)
					{
					 strcpy(atom[i].xtype,"N.3.pi=0");
					 continue;
					}
				 else if(group.num_pi==1)
					{
					 strcpy(atom[i].xtype,"N.3.pi>0");
					 continue;
					}
				 else if(atom[i].ring==0)
					{
					 strcpy(atom[i].xtype,"N.3.pi>0");
					 continue;
					}
				 else
					{
					 strcpy(atom[i].xtype,"N.3.ring");
					 continue;

⌨️ 快捷键说明

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