近来在使用PHP进行结构式搜索的时候,发现获取到smiles无法进行查询操作,然后想到了转化为分子式的操作。主要是用在有机物。

困难一:我在smiles 上利用正则匹配C,O。遇到了问题就是其他元素也有C字母,所以无法正确去掉C

解决:我只用原来的smiles来分析有机物的组成,然后我按照有机物的结构,单独找出来C,O的数量,其余元素,简单统计一下放在后面就好了。主要分为三部分,C数目,O数目,其他元素

实现;1.前台获取的smiles,符合相应的规则

2.php处理

$Cnum=‘‘;

$Onum=‘‘;

//print($smiles."原来的");

$find=array("=","#",".","1","[","]","(",")");

$replace = array("");

$smiles=str_replace($find,$replace,$smiles,$j);

//print($j);

//ECHO ‘/n‘;

$ChemElement= array("Li","Be","Na","Mg","Al","Si","Cl","Br","Ca","Cr","Mn","Fe","Co","Ni","Cu","Zn","Ga","Gc","Ag","Au");

foreach($ChemElement as $value){

//print($value);

$k_x=substr_count($smiles,$value);

if($k_x>0){

$k_x=$k_x==1?‘‘:$k_x;

//str_replace($value,‘‘,$smiles);

$smiles_new.=$value.$k_x;

}

}

$k_c=substr_count($smiles,‘C‘);

//print(‘C个数‘.$k_c);

$i_c=preg_match_all(‘/C[a-z]/m‘,$smiles);

//print(‘非碳个数‘.$i_c);

$j_c=$k_c-$i_c;

//print_r(‘碳个数‘.$j_c);

//$smiles=preg_replace(‘/C[0-9A-Z/.]/m‘,‘‘,$smiles,-1,$count);

//print($smiles);

//print(‘替换次数‘.$count);

$k_o=substr_count($smiles,‘O‘);

//print(‘O个数‘.$k_o);

$i_o=preg_match_all(‘/O[a-z]/m‘,$smiles);

//print(‘非氧个数‘.$i_o);

$j_o=$k_o-$i_o;

//$smiles=preg_replace(‘/C[0-9A-Z/.]/m‘,‘‘,$smiles,-1,$count);

//print($smiles);

//print(‘替换次数‘.$count);

if($j_c>0){$j_c=$j_c==1?‘‘:$j_c;$Cnum=‘C‘.$j_c;}

if($j_o>0){$j_o=$j_o==1?‘‘:$j_o;$Onum=‘O‘.$j_o;}

$smilesPara = $Cnum.$Onum.$smiles_new;

结果:基本上可以解决一般意义上的分子式,当然元素我没有写全,我认为常用的写一下就好,本来就是为了搜索,不常见的物质,化学品库里也没有。

这里推荐一下 斯芬克斯的PHP搜索引擎,很不错。

原文:http://10725691.blog.51cto.com/10715691/1940277

php生成分子式,php 转化smiles为分子式相关推荐

  1. php 图片生成视频,图片转化为视频的方法 如何将照片制作成为视频

    点击上方的下载地址,然后将软件进行安装.安装完毕后,打开软件在这个界面可以选择软件的比例大小和操作模式,我们选择"4:3"和"全功能模式". 接着我们将要进行操 ...

  2. 用化学绘图软件写带括号的分子式的方法

    ChemDraw是一款国际通用的化学绘制工具,广泛应用于绘制各种化学结构式,包括结构式.能量图谱.方程式.生物聚合物以及分子式等.对于化学分子式带括号的情况,学习化学的同学都司空见惯,但是你知道如何使 ...

  3. 雷莫芦单抗|cas947687-13-0分子式:C285H434N74O88S2

    雷莫芦单抗|cas947687-13-0分子式:C285H434N74O88S2 Cas号:947687-13-0 分子式:C285H434N74O88S2 分子量:6369.07 雷莫芦单抗用途与合 ...

  4. Nat. Mach. Intell. | 利用条件循环神经网络生成特定性质分子

    作者 | 陆丰庆 今天给大家介绍瑞士知名药企阿斯利康和伯尔尼大学的 Esben Jannik Bjerrum团队在Nature Machine Intelligence上的一篇论文.该研究提出基于分子 ...

  5. ProGen:蛋白质生成语言模型

    今天给大家介绍的是一项由硅谷Salesforce Research的Ali Madani等人和斯坦福的Possu Huang教授课题组合作的工作,他们在这篇论文中提出的一种蛋白生成语言模型ProGen ...

  6. T-GANs:基于“图灵测试”的生成对抗模型

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

  7. 经典论文复现 | InfoGAN:一种无监督生成方法

    过去几年发表于各大 AI 顶会论文提出的 400 多种算法中,公开算法代码的仅占 6%,其中三分之一的论文作者分享了测试数据,约 54% 的分享包含"伪代码".这是今年 AAAI ...

  8. 66.javac 编译与 JIT 编译\编译过程\javac 编译\词法、语法分析\填充符号表\语义分析\字节码生成\JIT 编译

    66.javac 编译与 JIT 编译 66.1.编译过程 66.2.javac 编译 66.2.1.词法.语法分析 66.2.2.填充符号表 66.2.3.语义分析 66.2.4.字节码生成 66. ...

  9. arxiv202210 | cTransformer:基于Transformer的De Novo Molecular Design生成模型

    Preprint. 原文标题: A Transformer-based Generative Model for De Novo Molecular Design 地址:https://arxiv.o ...

  10. 生成模型技术发展过程

    生成模型 生成模型和判别模型的差异 生成模型的目标是在给定了数据集D,并且假设这个数据集的底层分布(underlying distribution)是Pdata,我们希望够近似出这个数据分布.如果我们 ...

最新文章

  1. 借双慧眼识别钓鱼欺诈网站
  2. Downloading the Source
  3. 【2021年度训练联盟热身训练赛第五场】Jam-packed
  4. Spring校验@RequestParams和@PathVariables参数
  5. MongoDB3.xxx 用户创建
  6. 通过BeanDefinitionReader获取BeanDefinition的三种不同方式
  7. DAVE笔记--Micrium uc-Probo Oscilloscope调试
  8. bzoj 3772: 精神污染 (主席树+dfs序)
  9. [产品分析] Palm Pre,iPhone,Gphone全面大比拼
  10. iOS 框架模式(简述 MVC,MVP,MVVM 和 VIPER CDD)
  11. Windows系统下CMD命令
  12. ppt在线转换成pdf
  13. 腾讯云轻量级服务器怎么搭建网站,腾讯云轻量应用服务器新手教程:快速搭建网站...
  14. 修改MySQL 数据库 密码
  15. 五节课从零起步(无需数学和Python基础)编码实现AI人工智能框架电子书V1
  16. 北大计算机本科生如何保研清华,高考无缘清华、北大,选择这五所985大学,保研几率大...
  17. NTLM认证原理及其过程
  18. ZIP文件如何解除解压密码
  19. 外架小横杆外露长度规范要求_浅谈提高悬挑架质量、安全及视觉效果的管理方法...
  20. linux c语言查找相同数字,关于c ++:以编程方式查找计算机上的核心数

热门文章

  1. tespeed - 测试网速的Python工具
  2. 有人问“一花一世界,一叶一菩提”
  3. canvas画布上的文字随窗口大小变形
  4. 「面向对象程序设计-C++」学习笔记(下半部分)
  5. 如何修改mc基岩版服务器端口,我的世界基岩版服务器指令设置家
  6. SVD求解线性方程组
  7. Comparator.comparing比较排序
  8. [翻译] Oracle Database 12c 新特性Multitenant - Cheney Shue
  9. PL330 DMAC笔记(4) -- 安全,使用约束和限制,编程限制
  10. java简易计算器报告_JAVA实训报告简易计算器.doc