php 转化smiles为分子式
admin
2023-06-17 11:22:00
0

近来在使用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搜索引擎,很不错。


相关内容

热门资讯

破“芯片”困局 强尼龙产业丨实... 【开栏的话】树立和践行正确政绩观学习教育开展以来,河南国资国企校准思想坐标、砥砺实干作风,在科技创新...
河南昼夜鏖战抢收小麦丨坚决打好... 5月26日上午,开封市尉氏县,多台大型联合收割机列队驶入金色麦田,高效开启收割作业。 李新义 摄【核...
考研“答卷”铺展育人“画卷”:... “同学们用奋斗践行‘开拓拼搏、实干奉献’的黄科大精神,用实绩展现新时代青年的...
伦敦出现近80年同期最高温,中... 近日,西欧多国遭遇一轮异常提前且持续时间较长的高温天气。法国、英国和西班牙多地气温大幅高于常年同期水...
2026年度立法工作计划发布,... 5月27日,国务院新闻办公室举行“开局起步‘十五五’”系列主题新闻发布会,介...
马正勇任四川省人民政府副省长 5月27日,四川省第十四届人大常委会第二十七次会议举行闭幕会,表决通过了省政府省长施小琳向省人大常委...
国有院团闯进直播间 “微光”弦乐四重奏团队正在直播。 河南歌舞演艺集团供图“麦子男声”合唱团正在直播。河南歌舞演艺集团供...
大学校园开放与封闭引发热议 开... 5月19日,郑州大学北校区门口,学生扫脸入校,校园人员需提前预约登记信息。近来,武汉大学正式取消社会...
美方拒不发放签证,伊朗外长缺席 俄罗斯常驻联合国代表瓦西里·涅边贾26日说,俄外交部副部长亚历山大·阿利莫夫原定出席在美国纽约举行的...
一链聚力 百味兴业丨打响“河南... 5月25日,走进鹿邑澄明食品产业园,空气中飘着热辣鲜香的烟火气。番茄、牛肉、丸子……这些寻常餐桌风味...