11c451ad67db0a395b9e9b8d02264bb5ab893513
目录结构说明
asset放一些学习资料,github仓库放不下就放到网盘中去。
plugin为自建的pymol的插件开发的一些代码
scripts为一些脚本文件,主要是测试代码
pymol 资源学习绘图
环境安装
conda install -c conda-forge ffmpeg pymol-open-source biopython loguru ipython rdkit click -y
最高质量渲染
util.performance(0)
rebuild
PyMOL可以用多种方式进行录制:
-
命令行录制: 使用
log_open和log_close命令,可以将PyMOL的命令行操作记录到文本文件。cmd.log_open('filename.log') ... # Your operations cmd.log_close() -
Ray Tracing: 使用
ray命令渲染高质量的图片,然后用其他软件将图片合成为视频。 -
使用
mset和mview创建动画: 如你之前所述,通过这两个命令创建动画,然后使用mpng命令将动画导出为PNG帧,最后用其他软件将其合成为视频。cmd.mpng('frame_prefix_', 1, 60) -
屏幕录制软件: 使用外部屏幕录制软件(如OBS、Camtasia等)进行录制。
-
PyMOL API和脚本: 使用PyMOL的Python API和PyMOL脚本,可以更精细地控制录制内容。
PyMOL工作目录
使用cd命令改变PyMOL的工作目录。例如:
cmd.cd("/path/to/new/directory")
图片渲染
设置600DPI:
width = int(1920 * (600 / 72))
height = int(1080 * (600 / 72))
cmd.ray(width, height)
得到帧1至帧60的PNG图片
cmd.mset("1 x60 61 x60")
cmd.scene('frame1', 'store')
cmd.mview('store', state=1, scene='frame1')
cmd.scene('frame2', 'store')
cmd.mview('store', state=60, scene='frame2')
cmd.mview('interpolate')
for i in range(1, 61):
cmd.frame(i)
cmd.ray(1920, 1080, 300)
cmd.mpng(f'frame_prefix_{i}.png')
from dataclasses import dataclass, field
from typing import Tuple
from pathlib import Path
@dataclass
class PyMOLAnimator:
resolution: Tuple[int, int] = (1920, 1080)
dpi: int = 300
frame_count: int = 120
output_dir: Path = field(default_factory=lambda: Path('./'))
def save_frames(self, scene_1: str, scene_2: str):
import pymol.cmd as cmd
# 设置动画帧数
cmd.mset(f"1 x{self.frame_count} {self.frame_count+1} x{self.frame_count}")
# 存储第一帧和最后一帧
cmd.scene(scene_1, 'store')
cmd.mview('store', state=1, scene=scene_1)
cmd.scene(scene_2, 'store')
cmd.mview('store', state=self.frame_count, scene=scene_2)
# 插值以创建动画
cmd.mview('interpolate')
output_path = self.output_dir / 'frame_prefix_'
# 保存每一帧为PNG图片
for i in range(1, self.frame_count+1):
cmd.frame(i)
cmd.ray(self.resolution[0], self.resolution[1], self.dpi)
cmd.mpng(str(output_path) + f'{i}.png')
# 使用
animator = PyMOLAnimator((1920, 1080), 300, 120, Path('/path/to/save'))
animator.save_frames('frame1', 'frame2')
场景设置
cmd.mview和cmd.scene两者都用于存储视图状态,但用途和范围有所不同:
cmd.mview
-
主要用途: 用于电影插值,在电影播放中创建平滑过渡。
-
存储内容: 主要存储相机和对象矩阵,用于电影帧之间的插值。
-
特定于帧: 可以为电影中的特定帧或帧范围存储视图。
-
动画专用: 主要用于创建复杂的电影动画。
cmd.mview('store', state=1, scene='frame1')这会在状态1下,用场景名
frame1存储当前相机和对象矩阵。
cmd.scene
-
主要用途: 存储和恢复场景,方便用户随时回到特定的视图和设置。
-
存储内容: 存储相机视图、所有对象的活动信息、所有原子的可见性和颜色、所有的表示形式和全局帧索引。
-
不特定于帧: 主要用于一般目的的视图保存和恢复。
cmd.scene('MyScene', 'store', 'This is my special scene')这会存储一个名为"MyScene"的场景,并附带一条消息。
select and create
选择所有蛋白质: select 8g2c_pro, polymer.protein
创建一个新的对象: create 8g2c_pro, polymer.protein
选择所有核酸: select 8g2c_nucleic, polymer.nucleic
创建一个新的对象: create 8g2c_nucleic, polymer.nucleic
选择小分子: select 8g2c_tyk, resn TYK
背景美化
# 1. 设置背景为白色,并将表面透明度设置为 50%
bg_color white # 设置背景颜色为白色
set transparency, 0.5 # 设置所有表面透明度为 50%
# 2. 使表面显示使用原子自身的颜色
set surface_color_by_atom, 1 # 启用表面按原子颜色显示
# 3. 蛋白质:着色为橙色,并显示表面
color orange, polymer.protein # 将所有蛋白质(polymer.protein)着色为橙色
show surface, polymer.protein # 显示蛋白质的表面
# 4. 核酸:着色为白色,并显示表面
color white, polymer.nucleic # 将所有核酸(polymer.nucleic)着色为白色
show surface, polymer.nucleic # 显示核酸的表面
# 5. 小分子:根据分子的 ligand id(这里假设用 organic 选择小分子)着色为红色,并显示表面
color red, organic # 将所有小分子(organic)着色为红色
show surface, organic # 显示小分子的表面
Schrodinger_Suites linux install
cd Schrodinger_Suites_2021-2_Linux-x86_64
bash INSTALL (或者chmod u+x INSTALL ,之后 ./INSTALL )
(接下来选安装路径,比如/home/laiguanxue/softwares/Schrodinger_Suites_2023)
(后面一路yes)
(将Crack/patcher拷贝到安装路径中)
chmod u+x schrodinger-2023-3-patcher-linux
./schrodinger-2023-3-patcher-linux
(之后选择破解的版本)
Description
Languages
Python
100%