Your Name 1bc7d248c9 update
2024-11-27 15:18:39 +08:00
add
2024-09-07 09:19:11 +08:00
2024-09-07 09:12:14 +08:00
2024-09-07 09:12:14 +08:00
2024-09-07 09:12:14 +08:00
add
2024-11-27 15:18:24 +08:00
2024-09-07 09:12:14 +08:00
2024-11-27 15:18:39 +08:00
2024-09-07 09:12:14 +08:00
2024-11-27 15:18:39 +08:00
2024-09-07 09:12:14 +08:00

目录结构说明

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可以用多种方式进行录制

  1. 命令行录制: 使用log_openlog_close命令可以将PyMOL的命令行操作记录到文本文件。

    cmd.log_open('filename.log')
    ... # Your operations
    cmd.log_close()
    
  2. Ray Tracing: 使用ray命令渲染高质量的图片,然后用其他软件将图片合成为视频。

  3. 使用msetmview创建动画: 如你之前所述,通过这两个命令创建动画,然后使用mpng命令将动画导出为PNG帧最后用其他软件将其合成为视频。

    cmd.mpng('frame_prefix_', 1, 60)
    
  4. 屏幕录制软件: 使用外部屏幕录制软件如OBS、Camtasia等进行录制。

  5. 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.mviewcmd.scene两者都用于存储视图状态,但用途和范围有所不同:

cmd.mview

  • 主要用途: 用于电影插值,在电影播放中创建平滑过渡。

  • 存储内容: 主要存储相机和对象矩阵,用于电影帧之间的插值。

  • 特定于帧: 可以为电影中的特定帧或帧范围存储视图。

  • 动画专用: 主要用于创建复杂的电影动画。

    cmd.mview('store', state=1, scene='frame1')
    

    这会在状态1下用场景名frame1存储当前相机和对象矩阵。

cmd.scene

  • 主要用途: 存储和恢复场景,方便用户随时回到特定的视图和设置。

  • 存储内容: 存储相机视图、所有对象的活动信息、所有原子的可见性和颜色、所有的表示形式和全局帧索引。

  • 不特定于帧: 主要用于一般目的的视图保存和恢复。

    cmd.scene('MyScene', 'store', 'This is my special scene')
    

    这会存储一个名为"MyScene"的场景,并附带一条消息。

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
pymol笔记记录
Readme 5.4 MiB
Languages
Python 100%