在Jupyter-lab中使用RDKit畫分子2D圖

在Jupyter-lab中使用RDKit畫分子2D圖

在做完分子對接后,想看看篩選后的分子的結構。因此想利用Jupyter-lab來畫分子的2D圖。

1. 安裝Jupyter-lab與RDKit

  • 系統:Win11
  • 已安裝conda

RDKit 是一個功能強大、靈活易用的化學信息學工具包,廣泛應用于藥物發現、化學生物學、材料科學等領域。RDKit 提供了豐富的化學信息可視化功能,用戶可以通過RDKit 生成分子結構圖、化學反應圖、藥物分子的三維結構等,方便進行結果展示和分析。

1.1 安裝RDKit

#創建并安裝RDKit的conda環境
conda create -c conda-forge -n my-rdkit-env rdkit#激活RDKit的虛擬環境
conda activate my-rdkit-env

不知道為啥,這一步很慢,不知道是不是conda channel的問題。但總歸是等了一段時間就成功了。參考自官方教程。

1.2 安裝Jupyter-lab

Jupyter Lab是Jupyter Notebook的升級版本,可以一個窗口中同時打開多個 Notebook、代碼編輯器、終端、文件瀏覽器等,更方便地進行多任務處理和工作流程管理。Jupyter Lab集成了豐富的文檔編輯器,包括 Markdown、LaTeX 等,用戶可以方便地編寫和編輯文檔,同時可以通過插件支持更多的文檔格式和擴展功能。最主要的是Jupyter Lab提供了豐富的可視化功能,用戶可以通過插件支持各種圖表庫和數據可視化工具,實現更豐富和復雜的數據分析和可視化。

使用pip安裝

pip install jupyterlab

參考自官方安裝教程。

2. 小分子(SDF格式)作圖

2.1 畫單個SDF格式的分子圖

以他莫昔芬(Tamoxifen)小分子為例,首先從PubChem網站下載該分子的三維結構的SDF結構文件。
在這里插入圖片描述
如法炮制,再下載其余三個小分子:阿司匹林(Aspirin),莫洛昔康(Molnupiravir),瑞德西韋(Remdesivir)。將四個分子保存在sdf/文件夾中。

在CMD中跳轉至cd sdf/文件夾路徑下,打開Jupyter-lab

from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import Draw#讀取sdf文件
m1 = Chem.MolFromMolFile('sdf/Conformer3D_COMPOUND_CID_121304016.sdf')#通過調用AllChem.Compute2DCoords(m1)計算出m1分子相應的二維坐標,并將其更新到分子對象中
AllChem.Compute2DCoords(m1)#判斷m1分子是否讀取成功
m1 is None#Draw.MolToImage()函數畫出分子的2D圖像
Draw.MolToImage(m1)

運行后結果如下:
在這里插入圖片描述

  • 讀取單個的SDF文件可以用Chem.MolFromMolFile(),盡管這個主要用于讀取MOL格式的分子文件。
  • 讀取一個存有多個分子集的SDF文件,主要用Chem.SDMolSupplier()
  • Chem.MolFromMolFile()無法讀取PDB格式的分子文件,因此小分子文件讀取主推SDF格式

2.2 畫多個SDF格式的分子圖

讀取sdf/文件夾下的多個SDF分子,且將分子的2D圖放在一張圖中。

import os
import glob# 指定小分子的存儲路徑
path = r'sdf/'# 使用os.path.join構建路徑,獲取所有.sdf文件的路徑列表
sdf_files = glob.glob(os.path.join(path, '*.sdf'))# 將所有.sdf文件保存在一個列表ms中
ms = []
for sdf_file in sdf_files:m = Chem.MolFromMolFile(sdf_file)ms.append(m)#計算出列表中分子的二維坐標,并將其更新到分子對象中  
for m in ms: tmp=AllChem.Compute2DCoords(m)# MolsToGridImage()函數可以將4個分子畫在一張圖上
# molsPerRow=4參數設置4個小分子并排成一列
# subImgSize=(500,500)設置每個小分子的圖像尺寸為500x500大小
# legends=x.GetProp("_Name")獲取小分子的名稱作為圖例
img=Draw.MolsToGridImage(ms[:4],molsPerRow=4,subImgSize=(500,500),legends=[x.GetProp("_Name") for x in ms[:4]], returnPNG=False) # 保存分子圖像為PNG格式文件在sdf/文件夾下
img.save('./Mol_4.png')img

結果如下所示:
在這里插入圖片描述
Draw.MolsToGridImage函數中設置returnPNG=False參數,主要用于在保存畫出的圖片時img.save()的報錯:


AttributeError Traceback (most recent call last) Cell In[23], line 20
17 for m in ms: tmp=AllChem.Compute2DCoords(m)
19 img=Draw.MolsToGridImage(ms[:4],molsPerRow=4,subImgSize=(500,500),legends=[x.GetProp(“_Name”)
for x in ms[:4]])
—> 20 img.save(‘./Mol12_20.png’)
21 img

AttributeError: ‘Image’ object has no attribute ‘save’

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717702.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717702.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717702.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

w30使用python調用shell腳本

使用python腳本去實現永恒之藍漏洞攻擊 實驗環境 攻擊工具:pythonmsfconsole 靶場:win7 和 kali實驗目的 演示python腳本調用過程 實驗步驟 1.寫一個永恒之藍的攻擊腳本,定義為blue.rc use exploit/windows/smb/ms17_010_eternalblue …

Spark(2)-基礎tranform算子(一)

一、算子列表 編號名稱1map算子2flatMap算子3filter算子4mapPartitions算子5mapPartitionsWithIndex算子6keys算子7values算子8mapValues算子9flatMaplValues算子10union算子11reducedByKey算子12combineByKey算子13groupByKey算子14foldByKey算子15aggregateByKey算子16Shuff…

深度學習工具之tokens計算器

1.什么是Token Token是GPT處理文本的基本單位。Token可以是一個字、一個詞語或特定語言中的一個字符。它們負責將輸入的文本數據轉換為 GPT 可以處理的數據格式。每個 GPT 模型都有一個預設的最大 Tokens 數量,例如,GPT-3 每次調用允許處理的最大 Token…

韋東山嵌入式Liunx入門驅動開發五

文章目錄 一、驅動程序基石1-1 休眠與喚醒1-2 POLL機制1-3 異步通知(1) 異步通知程序解析(2) 異步通知機制內核代碼詳解 1-4 阻塞與非阻塞1-5 定時器(1) 內核函數(2) 定時器時間單位 1-6 中斷下半部 tasklet 本人學習完韋老師的視頻,因此來復習鞏固,寫以…

華為OD技術面試案例7-2024年

記錄一下我面試od的面試過程. 1、第一個是hr電話面試, 其實也就是od的hr致電, 簡單了解一下個人情況, 問我要一些個人信息, 這塊沒啥問題; 2、第二個就是機考了, 根據我提供的信息, od的hr給我發了一個機考的鏈接, 并告訴我7天內有效, 可以在考試之前先刷刷題, 刷題地址參考…

《幻獸帕魯》游戲對服務器性能的具體要求是什么?

《幻獸帕魯》游戲對服務器性能的具體要求是什么? CPU:官方最低要求為i5-3570K,但在多人游玩時可能會有明顯卡頓。此外,還有建議選擇4核或更高性能的處理器,以確保游戲運行流暢。 內存:對于不同人數的聯機&…

超越想象:人工智能的奇跡與可能性

超越想象:人工智能的奇跡與可能性 人工智能(Artificial Intelligence,AI)作為當今科技領域的熱門話題,其奇跡和可能性正在不斷被揭示和拓展,超越了人們的想象。從智能機器人到自動駕駛汽車,從語…

蘋果ios群控軟件開發常用源代碼分享!

在移動軟件開發領域,蘋果設備由于其封閉性和安全性受到了廣大開發者的青睞,然而,這也為開發者帶來了一些挑戰,特別是在進行群控軟件開發時。 群控軟件是指可以同時控制多臺設備的軟件,這在自動化測試、批量操作等場景…

數據要素:數字化轉型中的新“金礦”及其發展潛力

作為一名在數字化轉型項目中摸爬滾打的實踐者,我們見證了數據從簡單的信息處理工具逐漸演變為驅動經濟社會發展的關鍵要素。近日,多部門聯合發布的《“數據要素”三年行動計劃(2024—2026年)》更是將數據要素的重要性提升到了新的…

C++ //練習 10.15 編寫一個lambda,捕獲它所在函數的int,并接受一個int參數。lambda應該返回捕獲的int和int參數的和。

C Primer(第5版) 練習 10.15 練習 10.15 編寫一個lambda,捕獲它所在函數的int,并接受一個int參數。lambda應該返回捕獲的int和int參數的和。 環境:Linux Ubuntu(云服務器) 工具:v…

Linux:進入vim編輯模式

vim 是一個強大的文本編輯器。 三種模式: 普通模式(Normal mode) 插入模式(Insert mode) 命令行模式(Command-line mode) 當你打開一個文件時,vim 默認處于普通模式。 插入模式&a…

十六、異常和File

異常和File 一、異常1.1異常的分類1.2 異常的作用1.3 異常的處理方式1.3.1 JVM默認的處理方式1.3.2 自己處理(捕獲異常)1.3.3 自己處理(靈魂四問) 1.4 異常中的常見方法1.5 拋出異常綜合練習(鍵盤錄入數據)…

基于springboot+vue的社區養老服務平臺

博主主頁:貓頭鷹源碼 博主簡介:Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰,歡迎高校老師\講師\同行交流合作 ?主要內容:畢業設計(Javaweb項目|小程序|Pyt…

黑馬點評-商戶查詢業務

緩存原理 本文的業務就是redis的經典應用,標準的操作方式就是查詢數據庫之前先查詢緩存,如果緩存數據存在,則直接從緩存中返回,如果緩存數據不存在,再查詢數據庫,然后將數據存入redis。 緩存更新策略 根據…

Spring重點記錄

文章目錄 1.Spring的組成2.Spring優點3.IOC理論推導4.IOC本質5.IOC實現:xml或者注解或者自動裝配(零配置)。6.hellospring6.1beans.xml的結構為:6.2.Spring容器6.3對象的創建和控制反轉 7.IOC創建對象方式7.1以有參構造的方式創建…

【OneAPI】貓狗類別檢測API

OneAPI新接口發布:貓狗類別檢測 45種狗狗類別和15種貓貓類別檢測。 API地址:POST https://oneapi.coderbox.cn/openapi/api/detect/dogcat 請求參數(body) 參數名類型必填含義說明imageUrlstring是圖片地址網絡圖片地址&#…

Vue路由(黑馬程序員)

路由介紹 將資代碼/vue-project(路由)/vue-project/src/views/tlias/DeptView.vue拷貝到我們當前EmpView.vue同級,其結構如下: 此時我們希望,實現點擊側邊欄的部門管理,顯示部門管理的信息,點擊員工管理,顯…

【周總結平淡但不平凡的周末】

上周總結 根據系統生產環境的日志文件,寫了個腳本統計最近使用我們系統的用戶的手機型號以及系統,幫助聚焦主要測試的機型,以及系統類型 依然是根據時區不同對項目進行改造,還有一個開發好的接口需要下周聯調 2024/3/3 晴…

QT Mingw32/64編譯ffmpeg源碼生成32/64bit庫以及測試

文章目錄 前言下載msys2ysamFFmpeg 搭建編譯環境安裝msys2安裝QT Mingw編譯器到msys環境中安裝ysam測試 編譯FFmpeg測試 前言 FFmpeg不像VLC有支持QT的庫文件,它僅提供源碼,需要使用者自行編譯成對應的庫,當使用QTFFmpeg實現播放視頻以及視頻…

連接 mongodb集群的集中方式

mongodb 連接到復制集 mongodb://node1,node2,node3.../database?[options]mongodb 連接到分片集 mongodb://mongos1,mongos2,mongos3.../database?[options]使用 mongosrv 通過域名解析得到所有的 mongos 或 節點的地址, 而不是把這些寫在連接字符串中. mongodbsrv://se…