最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

摸魚(yú)筆記|基于Python爬蟲(chóng)和CAS號(hào)爬取化合物信息

2023-07-06 22:01 作者:CCCH  | 我要投稿

GC-MS

氣相色譜質(zhì)譜聯(lián)用(Gas chromatography mass spectrometry,?GC-MS)是廣泛應(yīng)用于環(huán)保行業(yè)、電子行業(yè)、紡織品行業(yè)、石油化工、香精香料行業(yè)、醫(yī)藥行業(yè)、農(nóng)業(yè)及食品安全等領(lǐng)域;環(huán)境中有機(jī)污染物分析(空氣、水質(zhì)、土壤中污染分析);農(nóng)殘、獸殘、藥殘分析;香精香料香氣成分分析;紡織品行業(yè)中的有害物質(zhì)檢測(cè)。@氣相色譜質(zhì)譜聯(lián)用儀_百度百科 (baidu.com)

問(wèn)題描述

GCMS測(cè)試反饋的數(shù)據(jù)不包含化合物的中文名和分子式,有的測(cè)試單位甚至不包含分子量等信息。為了更加直觀的了解測(cè)試樣品中化合物的分布,種類,還得手動(dòng)根據(jù)CAS手動(dòng)查詢補(bǔ)全這些信息,然而手動(dòng)查詢實(shí)在折磨,故試著用Python爬蟲(chóng)來(lái)代勞!

通過(guò)Python爬蟲(chóng)查詢特定的CAS號(hào)對(duì)應(yīng)化合物的中文名,分子式的信息,并整理成表格。

〓測(cè)試數(shù)據(jù)的形式與結(jié)構(gòu)〓

把樣品寄給測(cè)試單位,得到的數(shù)據(jù)表格反饋如圖1:

圖1? GC-MS測(cè)試乙方返回的數(shù)據(jù)表格

以化合物編號(hào)列的計(jì)數(shù),圖1展示的是一組半。

每組化合物編號(hào)都對(duì)應(yīng)了正好20組數(shù)據(jù),并且在其組內(nèi)以定性列數(shù)字從大到小排序。

這意味著不能完全確定對(duì)應(yīng)的是哪種化合物,只能在定性欄注明可能性的高低。

此外面積(Ab*s)指的是質(zhì)譜峰面積,此處我把峰面積的占比稱為相對(duì)豐度,也要整理出來(lái)。

根據(jù)要求,我需要的是每組化合物的第一匹配項(xiàng),也就是說(shuō)我應(yīng)該把圖1中出現(xiàn)的兩組化合物整理成圖2格式。

圖2? 對(duì)圖1數(shù)據(jù)手動(dòng)整理后

然而,CAS:138781-42-7沒(méi)有找到對(duì)應(yīng)的中文名,就空著吧!

可見(jiàn),只有中文名和分子式是從網(wǎng)上查來(lái)的,相對(duì)豐度是計(jì)算來(lái)的,其他項(xiàng)目都是直接從圖1表格中搬來(lái)的。用Python來(lái)取代人工再合適不過(guò)了。

〓簡(jiǎn)而言之就是6步〓:

  1. 從圖1表格中抽取每組化合物的第一行的面積(Ab*s)、匹配項(xiàng)名稱、分子量、CAS號(hào)。

  2. 把步驟1中CAS號(hào)重復(fù)的整合成一項(xiàng),但是該項(xiàng)面積(Ab*s)要加和起來(lái)。

  3. 算出各項(xiàng)面積在總面積中的占比,也就是峰面積占比,此處且稱作相對(duì)豐度。

  4. 利用CAS號(hào)上網(wǎng)爬取對(duì)應(yīng)化合物的介紹頁(yè)面的網(wǎng)頁(yè)源碼。

  5. 從網(wǎng)頁(yè)源碼中遍歷尋找中文名稱和分子式。

  6. 將中文名稱、匹配項(xiàng)名稱(英文),分子式、分子量、CAS、相對(duì)豐度填表并保存。

〓其他格式的數(shù)據(jù)〓

不同測(cè)試機(jī)構(gòu)可能給出的數(shù)據(jù)形式不太一樣,比如圖3就是另外一個(gè)測(cè)試機(jī)構(gòu)給出的,文件形式不是表格,而是一個(gè)txt文本文件,每組化合物三個(gè)匹配項(xiàng),只包含CAS號(hào),峰面積占比(Area%),故需要多出一部從這樣的文本中讀取CAS號(hào)的操作,在爬蟲(chóng)時(shí)也需要多一步:爬分子量。但總體上來(lái)說(shuō)差別不大!

圖3? 另一檢測(cè)機(jī)構(gòu)給的數(shù)據(jù)反饋

Python代碼

用到pandas、numpy、request、my_fake_useragent幾個(gè)庫(kù)。

〓步驟1-3的實(shí)現(xiàn)方式〓

  • 從圖1表格中抽取每組化合物的第一行的面積(Ab*s)、匹配項(xiàng)名稱、分子量、CAS號(hào)。

  • 把步驟1中CAS號(hào)重復(fù)的整合成一項(xiàng),但是該項(xiàng)面積(Ab*s)要加和起來(lái)。

  • 算出各項(xiàng)面積在總面積中的占比,也就是峰面積占比,此處且稱作相對(duì)豐度。

這段是read()函數(shù),該函數(shù)調(diào)用以下2個(gè)自定義函數(shù):

relative_abundance(df)

delete_duplicates(df)

功能為讀取圖1所示的表格文件。完成問(wèn)題描述中的1-3步。

返回一個(gè)一個(gè)有? ?['化學(xué)名','分子量','CAS','相對(duì)豐度']? ?四列的Pandas DataFrame變量

〓步驟4-5的實(shí)現(xiàn)方式〓

  • 利用CAS號(hào)上網(wǎng)爬取對(duì)應(yīng)化合物的介紹頁(yè)面的網(wǎng)頁(yè)源碼。

  • 從網(wǎng)頁(yè)源碼中遍歷尋找中文名稱和分子式。

這段是gethtml()函數(shù),該函數(shù)調(diào)用以下3個(gè)自定義函數(shù):

delete_0(df)

get_name_chinese(html)

get_name_chinese1(html1)

完成問(wèn)題描述中的4-5步

返回的是分子式和中文名的list變量

〓步驟6的實(shí)現(xiàn)方式〓

  • 將中文名稱、匹配項(xiàng)名稱(英文),分子式、分子量、CAS、相對(duì)豐度填表并保存。

主函數(shù)main()調(diào)用read()、gethtml()、write(),最后將新表格保存在原路徑。

最后實(shí)現(xiàn)的效果如圖4,基本上CAS100開(kāi)頭的查不到,不曉得為什么。但是能交差就行。

圖4? Python爬蟲(chóng)效果


摸魚(yú)筆記|基于Python爬蟲(chóng)和CAS號(hào)爬取化合物信息的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
潢川县| 水城县| 大姚县| 龙泉市| 罗田县| 海宁市| 翁源县| 贡觉县| 南宁市| 寻乌县| 安远县| 镇雄县| 齐河县| 绥阳县| 河西区| 昆明市| 大足县| 玉龙| 塔城市| 滕州市| 汉源县| 合山市| 闵行区| 平潭县| 吉首市| 安国市| 南江县| 禹州市| 泸溪县| 堆龙德庆县| 余干县| 泽普县| 塘沽区| 山东省| 连云港市| 耒阳市| 兴海县| 永嘉县| 富蕴县| 汉中市| 清涧县|