精华内容
下载资源
问答
  • HTML5化学分子结构动画特效是一款HTML55化学分子动画,Canvas分子结构背景。
  • HTML5化学分子式结构图动画基于jquery.1.10.2.min.js和HTML5 canvas制作,化学分子式结构图漂浮动画。
  • HTML5化学分子结构网页背景动画特效是一款HTML5 Canvas绘制的化学分子动画,分子结构背景动画代码
  • HTML5化学分子结构网页背景动画特效是一款HTML5 Canvas绘制的化学分子动画,分子结构背景动画代码
  • HTML5化学分子结构动画特效是一款HTML55化学分子动画,Canvas分子结构背景。
  • HTML5化学分子式结构图动画基于jquery.1.10.2.min.js和HTML5 canvas制作,化学分子式结构图漂浮动画。
  • 化学分子式的辨别

    2020-03-04 21:45:46
    化学很神奇,以下是烷烃基。 假设如上图,这个烷烃基有6个原子和5个化学键,6个原子分别标号1~6,然后用一对数字 a,b 表示原子a和原子b间有一个化学键。这样通过5行a,b可以描述一个烷烃基 你的任务是甄别烷烃基的...

    问题:

    化学很神奇,以下是烷烃基。
    在这里插入图片描述
    假设如上图,这个烷烃基有6个原子和5个化学键,6个原子分别标号1~6,然后用一对数字 a,b 表示原子a和原子b间有一个化学键。这样通过5行a,b可以描述一个烷烃基

    你的任务是甄别烷烃基的类别。
    原子没有编号方法,比如
    1 2
    2 3
    3 4
    4 5
    5 6

    1 3
    2 3
    2 4
    4 5
    5 6
    是同一种,本质上就是一条链,编号其实是没有关系的,可以在纸上画画就懂了

    input:

    输入第一行为数据的组数T(1≤T≤200000)。每组数据有5行,每行是两个整数a, b(1≤a,b≤6,a ≤b)
    
    数据保证,输入的烷烃基是以上5种之一
    

    output:

    每组数据,输出一行,代表烷烃基的英文名

    sample input:

    2
    1 2
    2 3
    3 4
    4 5
    5 6
    1 4
    2 3
    3 4
    4 5
    5 6

    sample output:

    n-hexane
    3-methylpentane

    题解

    1. 判断方法:对于这五种分子,我是根据其原子的价位来进行判断的。我们观察这五种分子,第一个只有二价与一阶原子。第二种与第三种由一个三价原子,第四种有两个三价原子,第五种由四价原子,这样我们在每次输入的过程中将原子的价位的个数记录下来就可以分辨除二三之外的分子。第二三的区别在于两个三价原子是否相联,我们只需要将输入的五个化学键的两端记录下来,看看是否三价的两个是一次输入的。

    完整代码

    #include <iostream>
    using namespace std; 
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    
    int main(int argc, char** argv) {
    	int n;
    	cin>>n;
    	for(int i=0;i<n;i++)
    	{
    		int v[7]={0,0,0,0,0,0,0};  //记录六个原子的价位
    		int a[5],b[5];
    		for(int j=0;j<5;j++)
    		{
    			cin>>a[j]>>b[j];
    			v[a[j]]++;        //将每个化学键的两端记录下来
    			v[b[j]]++;
    		}
    		int one,two,three,four;
    		one=0;
    		two=0;
    		three=0;
    		four=0;
    		for(int j=1;j<=6;j++)   //统计个数
    		{
    			if(v[j]==1) one++;
    			if(v[j]==2) two++;
    			if(v[j]==3) three++;
    			if(v[j]==4) four++;
    		}
    		if(four==1) cout<<"2,2-dimethylbutane"<<endl;
    		if(three==0&&four==0) cout<<"n-hexane"<<endl;
    		if(three==2) cout<<"2,3-dimethylbutane"<<endl;
    		if(three==1)
    		{
    			int san,er1,er2,count=0;
    			for(int j=1;j<=6;j++)
    			{
    				if(v[j]==3)
    				{
    					san=j;
    				}
    				if(v[j]==2)
    				{
    					if(count==0)
    					{
    						er1=j;
    						count++;
    					}
    					else{
    						er2=j;
    					}
    				}
    				
    			}       // 将两个三价元素找出来
    			bool is=0;
    			for(int k=0;k<5;k++)   //查看这两个三价元素是否为同一次输入
    			{
    				if((a[k]==er1&&b[k]==er2)||(a[k]==er2&&b[k]==er1))
    				{
    					is=1;
    				}
    			}
    			if(is)
    			{
    				cout<<"2-methylpentane"<<endl;
    			}
    			else
    			{
    				cout<<"3-methylpentane"<<endl;
    			}
    		}
    }
    	return 0;
    }
    
    展开全文
  • 简单的数据结构课程设计,求化学分子式的相对分子质量。输入化学分子式,输出分子式的相对分子质量
  • 化学分子结构识别 首先推荐有兴趣和时间的小伙伴读一篇文章 https://jcheminf.biomedcentral.com/articles/10.1186/s13321-020-00465-0 这篇文章给出了众多在线和离线工具的介绍和评估。 易用的在线平台推荐 我个人...

    如有不懂,留言评论

    化学分子结构识别

    example1

    example2

    首先推荐有兴趣和时间的小伙伴读一篇文章
    https://jcheminf.biomedcentral.com/articles/10.1186/s13321-020-00465-0
    这篇文章给出了众多在线和离线工具的介绍和评估。

    易用的在线平台推荐

    我个人使用过两个在线平台

    1. https://cactus.nci.nih.gov/cgi-bin/osra/index.cgi(https://cactus.nci.nih.gov/osra/)
      这是流传甚广的一个在线api,支持将图片转换为sd文件和smiles式。给大家举个例子:在这里插入图片描述

    2. https://molvec.ncats.io/#
      这是mol2vec的作者做的一个前端,集成了mol2vec, osra以及imago。同样举个例子:
      在这里插入图片描述

    使用python从图片提取分子结构1

    go top

    osra本人没有找到提供的api,可以使用selnium来模拟浏览器点击进行提取。贴一下我本人写的代码

    import time
    import os
    import json
    
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    def upload(img_path):
        select_xpath = '/html/body/center/form/table/tbody/tr[3]/td[1]/input[2]'
        submit_xpath = '//*[@id="b_upload"]'
        clear_xpath = '/html/body/center/form/table/tbody/tr[3]/td[1]/center/input[2]'
    
        firefox.find_element_by_xpath(clear_xpath).click()
        firefox.find_element_by_xpath(select_xpath).send_keys(img_path)
        submit_button = firefox.find_element_by_xpath(submit_xpath).click()
    
    def get_information():
        get_smiles_xpath = '//*[@id="b_getsmiles"]'
        smiles_xpath = '/html/body/center/form/table/tbody/tr[3]/td[2]/input[1]'
    
        firefox.find_element_by_xpath(get_smiles_xpath).click()
        text = firefox.find_element_by_xpath(smiles_xpath).get_attribute("value")
    
        return text
    
    def main():
        global firefox
        firefox = webdriver.Firefox()
        firefox.get('https://cactus.nci.nih.gov/cgi-bin/osra/index.cgi')
        wait = WebDriverWait(firefox, 20)
    
        img_folder = 'your_img_folder'
        imgs76 = os.listdir(img_folder)
        smiles_list = {}
        for img in imgs76:
            upload(img_folder.replace('/', '\\') + '\\' + img)
            time.sleep(7)
            try:
                tmp_text = get_information()
                firefox.save_screenshot('res/' + img.rstrip('.jpg') + '.png')
                smiles_list[img] = tmp_text
            except:
                smiles_list[img] = 'Sorry, no structures found'
            
            print(smiles_list)
        firefox.quit()
    
        with open('result.json', 'w') as fp:
            json.dump(smiles_list, fp)
    
    if __name__ == '__main__':
        main()
    

    上面的代码

    1. 打开你的目标文件夹(里面是一堆分子结构截图)
    2. 然后模拟浏览器行为进行批量处理。每个图片等待十秒并将结果截图。

    需要注意的是你得下载一个webdriver,firefox或者chrome driver都可以(代码中firefox = webdriver.Firefox()是用了Firefox的driver,driver百度即可下载)。

    如果你需要保存sd文件,那么模拟浏览器点击Get SD File即可。可以留言询问本人

    使用python从图片提取分子结构2

    go top

    import requests
    import os
    
    '''
    This script transfer molecule image to mol format (saved as sdf files).
    You should change the image folder (specified in line 11) ane the name of result file (specified in line 26).
    '''
    
    def get_sdf(name, img_folder):
    
        imgs76 = os.listdir(img_folder)
    
        url = 'https://molvec.ncats.io/molvec'
        headers = {'Content-Type' : 'image/jpg'}
    
        for imgs in imgs76:
            with open('{}/{}'.format(img_folder, img), 'rb') as fp:
                r = requests.post(url, data=fp, headers=headers)
    
            with open('{}.sdf'.format(patent), 'a') as fp:
                fp.write(r.json()['molvec']['molfile'])
                fp.write('\n$$$$\n')
    
    def main():
        name = 'abc'
        img_folder = "***"
        get_sdf(name, img_folder)
    
    if __name__ == '__main__':
        main()
    
    ```

    上面的代码将img_folder下的所有分子图片转换到名为name的sdf文件中(sdf是多个mol文件的合成,是化学结构的标准格式)

    展开全文
  • 使用MATLAB自动化读取化学分子式各元素系数,可以有效提升效率,总的来说,该项任务主要有以下两个步骤: 1、 找到字符串中各个元素; 2、 读取该元素之后的数字。 在第1步中,非常简单,直接strfind函数就能找到...

    使用MATLAB自动化读取化学分子式各元素系数,可以有效提升效率,总的来说,该项任务主要有以下两个步骤:
    1、 找到字符串中各个元素;
    2、 读取该元素之后的数字。
    在第1步中,非常简单,直接strfind函数就能找到某个元素,但是第2步包含诸多种情况:

    1. 元素之后无系数,表示系数为1;
    2. 元素之后无系数且位于字符串末尾,此时系数也为1;
    3. 元素之后系数大于9,表示系数为多位数字。

    根据以上诸多种情况,下面代码将一一做出注释:

    function  coef = find_each_coef(str)
    %指定要寻找的所有元素
    elements = 'CHNOSP';
    %初始化系数向量
    coef = zeros(1,6);
    for i = 1:6
        ind = strfind(str,elements(i));
        if ~isempty(ind)
            %如果找到的该元素位于末尾,系数为1
            if ind ==length(str)
                coef(i) = 1;
            else
                %否则提取该元素之后的所有字符
                s = str(ind+1:end);
                %如果该元素之后的所有字符不包含字母,直接转换成系数
                if ~isnan(str2double(s))
                    coef(i) = str2double(s);
                %如果该元素之后仅包含一个元素,系数为1
                elseif length(s)==1
                    coef(i) = 1;
                %如果该元素之后紧接着另一个元素,系数为1
                elseif ~(s(1)>='0'&&s(1)<='9')
                    coef(i) = 1;
                else
                %以上都不是,提取该元素后所有数字,即为系数
                    count =1;
                    while  s(count)>='0'&&s(count)<='9'
                        count = count +1;
                    end
                    coef(i) = str2double(s(1:count-1));
                end   
            end
        end
    end
    end
    

    以上代码实测能很好的实现系数提取的功能,但是存在以下缺点:
    1、 没有考虑两个字母的元素,如Ca等,因为任务中没有遇到,所以就没考虑。想要改进的话,可以从两个方向改进:

    1. 将两个字母的元素替换为某个符号,这种方法改动最小,但是效率可能不高;
    2. 在搜寻及后续提取系数时考虑两个字母的元素,这将带来很大的改动。

    2、 没有考虑系数为小数的分子式,这点也很好改。

    以上就是该任务的全部内容,总的来说,这种任务比较少见,不是部署到大规模应用上我们怎么方便怎么来,也为以后处理字符串提供一个参考。

    展开全文
  • WebGL的three.js库,可以加载pdb文件,以显示化学分子的立体结构。那么什么是PDB格式哪?PDB是Protein Data Bank的缩写,原意为“蛋白质数据库”,是一种描述生物大分子的数据格式。其实,PDB也可以描述一些小分子,...

    WebGL的three.js库,可以加载pdb文件,以显示化学分子的立体结构。那么什么是PDB格式哪?

    PDB是Protein Data Bank的缩写,原意为“蛋白质数据库”,是一种描述生物大分子的数据格式。其实,PDB也可以描述一些小分子,比如水分子、 甲烷等,可以通过读取这种分子的PDB文件使用3D方式显示出来,使分子结构更直观和容易理解。比如,three.js库中就有读取PDB文件的库,把其中描述的分子结构中的原子及化学键使用球体和杆来表示,在浏览器中显示一个立体模型。

    不过,网上现成的常见分子的PDB文件比较少,曾经搜到一个网站,但下载的文件很多并不能正常加载和显示,更多的是只有分离的原子,而不能显示化学键。后来,找到一些资料,发现主要是PDB文件不够规范或不够完整,所以加载时出现问题。所以首先要搞清楚PDB文件的格式。下面是很简单的一种--水分子的PDB文件:

    ATOM 1 O OSP3 1 2.013 0.831 0.000 1.00 0.00 
    ATOM 2 H OSP3 1 2.941 0.844 0.246 1.00 0.00 
    ATOM 3 H OSP3 1 1.750 -0.068 -0.210 1.00 0.00 
    TER 
    CONECT 1 2 3
    CONECT 2 1 0
    CONECT 3 1 0

    网上查找PDB文件格式,往往介绍得很复杂很专业,让人一头雾水。其实,Three.js加载PDB文件只关心上面列出的两段代码,前面一段列出了每个分子中的组成原子类型,并给予序号和坐标,第一项必须为ATOM或HETATM;第二项为序号,是按从大到小的顺序排列的,第三项为原子类型,three.js附带的加载器支持"h"、 "he"、 "li"、 "be"、 "b"、 "c"、 "n"、 "o"、 "f"、 "ne"、 "na"、 "mg"、 "al"、 "si"、 "p"、 "s"、 "cl"、 "ar"、 "k"、 "ca"、 "sc"、 "ti"、 "v"、 "cr"、 "mn"、 "fe"、 "co"、 "ni"、 "cu"、 "zn"、 "ga"、 "ge"、 "as"、 "se"、 "br"、 "kr"、 "rb"、 "sr"、 "y"、 "zr"、 "nb"、 "mo"、 "tc"、 "ru"、 "rh"、 "pd"、 "ag"、 "cd"、 "in"、 "sn"、 "sb"、 "te"、 "i"、 "xe"、 "cs"、 "ba"、 "la"、 "ce"、 "pr"、 "nd"、 "pm"、 "sm"、 "eu"、 "gd"、 "tb"、 "dy"、 "ho"、 "er"、 "tm"、 "yb"、 "lu"、 "hf"、 "ta"、 "w"、 "re"、 "os"、 "ir"、 "pt"、 "au"、 "hg"、 "tl"、 "pb"、 "bi"、 "po"、 "at"、 "rn"、 "fr"、 "ra"、 "ac"、 "th"、 "pa"、 "u"、 "np"、 "pu"、 "am"、 "cm"、 "bk"、 "cf"、 "es"、 "fm"、 "md"、 "no"、 "lr"、 "rf"、 "db"、 "sg"、 "bh"、 "hs"、 "mt"、"ds"、 "rg"、 "cn"、 "uut"、 "uuq"、 "uup"、 "uuh"、 "uus"、 "uuo",一共列出了110多种原子,比较全面了,如果发现列出的上述原子就会给予对应的一种颜色来表示。原素的原子不分大小写,其实加载时是先转换为小写字母然后进行比对的。后面两项three.js并不关注,而后的数字项,前三项为对应原子的x、 y、 z坐标,是生成三维模型时必须使用的数据,后面的数据也没用。需要强调,这些数据项并不是通过分界符来识别的(比如csv格式),而是按一行中的字符位置来确定的,就是多了或少了一个空格,都会造成读取数据的错误或造成无法识别。因为网页中会忽略连续空格,所以上述代码只是一个定性描述,具体位置可以比照后附的原始PDB文件,那是已经验证过的。

    后面有个以TER开头的行,后面有很长的空格,也是加载时需要识别的,如果缺少也会出错。后面一部分表示的是各原子之间的化学键连接关系,每一行都以CONNECT开头,CONNECT后面的一项从上到下按大小顺序排列,为分子中各原子的序号;后面各项则有短有长,表示与此原子有化学键连接的原子的序号,至少有一个连接,后面没有连接的项可以为0或空格。这个连接表是相互对应的,如果对应有错误也会报错。网上的一些PDB文件,有些是没有这个连接表的,加载后就无法显示原子间的化学键,而只有离散的几个原子。

    有了上述两部分,格式正确,three.js附带的PDBLoader.js就可以正确解析格式,获取其中的数据并形成一个模型,并通过WebGL显示出来。本来想上传一个标准的PDB格式文件,但好像这里不支持附件,无法加入,可以到我的个人网站取看了。(www.dwenzhao.cn/lesson/datalibuse/pdbformat.html)

    展开全文
  • MATLAB绘制分子结构 源程序代码
  • 下列代码为特征数量逐渐增加的模型评估 #这时误差最小,选用这一模型进行预测 features = ["氢键受体的数量","氢键供体的数量",'单键数量','原子数','键数量'] x = data_1[features] y = data_1["手性原子数"] x_...
  • Eurydice是一个Java代码库,试图使计算化学更易于使用,以便专业化学家可以花更少的时间担任软件工程师,并且对计算化学新手的了解也更浅。 Eurydice还设计用于处理无法同时容纳在机器RAM中的大型结构。 整个结构都...
  • 半年前写过一篇类似的文章,题目是:《在.NET中使用机器学习API(ML.NET)实现化学分子式数据格式的判定》,在该文中,我介绍了化学分子式数据格式的基本知识,同时给出...
  • 我的实验量子化学代码。 通过Hartree-Fock SCF计算H2O进行说明。 现在使用GPU进行两电子积分计算。 参考资料:“化学中的C ++编程教程” 积分子程序来自:“ PyQuante:Python量子化学” 在GPU上进行量子化学...
  • 进一步认识分子特征化:将化学分子结构作为到随机森林\CNN\RNN\GNN等机器学习模型的输入 如何将一个分子SMile表示的分子输入到机器学习/深度学习中呢?例如:CH3CH3CH3 这里将进行介绍。 使用机器学习处理分子...
  • 化学题时,小 F 总是里算错相对分子质量,这让他非常苦恼。 小 F 找到了你,请你来帮他算一算给定物质的相对分子质量。 如果你没有学过相关内容也没有关系,你可以从样例和提示里理解该题所求内容。 输入输出...
  • P4711 「化学」相对分子质量 给你一个字符串让你输出相对分子质量(弱智字符串模拟) 我比赛tm调了两个半小时啊QAQ 希望以后能增加代码力吧,纪念挂代码 Code #include<iostream> #include<cstdio> #...
  • 代码如下: typedef map<string, int> MPSI; class Solution { public: string countOfAtoms(string formula) { int i = 0, n = formula.size(); auto parseAtom = [&]() -> string { ...
  • 830高分子化学与物理 二.适用专业 材料科学与工程系,化学系 三.参考书目 1.《高分子物理》第三版,何曼君,张红东等,复旦大学出版社,上海:2007 2.《高分子化学》第四版,潘祖仁主编,化学工业出版社,...
  • 化学】 相对分子质量 简单题解思路代码 本蒟蒻写的第一道大模拟题(我们机房某巨佬说是中模拟) 我:“ A了这道题,妈妈再也不同担心我算不对相对分子质量啦~ ” 思路 做这种模拟题时,需要一个明确的思路和分块...
  • 题目要求,根据所给化学量与原子量计算化学式的相对分子质量。。。其实就是怎么对应起来的事。 代码如下: 1 #include <stdio.h> 2 //给出一种物质的分子式(不带括号),求分子...
  • 分子动力学( | )。 LSU上的HPC培训系列 2011年4月27日 2011年7月6日 2012年2月8日 贡献者 亚历克斯·帕切科利哈伊大学研究计算部经理(2014年9月至今) LSU和LONI的HPC用户服务顾问(2010年8月-2014年9月)
  • Matlab代码可通过分子动力学模拟计算固液接触角 这些Matlab代码通过固体基质上液滴的分子动力学模拟来计算固液接触角。 所有代码都读取LAMMPS轨迹文件。 有关每种方法背后的理论以及适当引用代码的更多详细信息,请...
  • 化学」相对分子质量 题目过水,题面过长不想搬运系列。。。 darkdarkdark♂模拟即可ACAC\mathcal{AC}: 先打表,元素最多两个字符,第一个大写,第二个小写,遇到大写直接特判下一个。 下划线+花括号的格式也...
  • 在原先的博客VTK读取一个TXT文档中的三维点坐标绘制三维点云基础上,有小伙伴询问是否可以以点云中每一个三维点的坐标为中心绘制一个小的球体,用于标识特征点,这种就让我想到了化学里面的分子结构,所以就在原有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,630
精华内容 1,452
关键字:

化学分子代码