尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
pymol常用代码归纳
1.化合物以球棍形式展开# 先确保棍状显示 show sticks, mol1 # 再添加球形显示球棍模型 show spheres, mol1 # 如果想调整球的大小 set sphere_scale, 0.2, mol1 # 调整球的大小比例一般0.1-0.32.代码对接后文件夹精简import os import shutil def main(): # 1. 输入一级文件夹路径 root input(请输入一级文件夹完整路径).strip() root root.strip() if not os.path.isdir(root): print(❌ 错误路径不存在或不是文件夹) input(\n按回车键退出...) return # 拆分路径父目录 原文件夹名 root_parent os.path.dirname(root) root_name os.path.basename(root) # 备份文件夹名同目录备份 backup_root os.path.join(root_parent, root_name _备份副本) print(f\n 原一级目录{root}) print(f 即将备份到{backup_root}) # 2. 先完整复制备份整个一级文件夹 try: shutil.copytree(root, backup_root) print(✅ 备份完成开始处理文件夹结构...\n) except Exception as e: print(f❌ 备份失败{e}) input(\n按回车键退出...) return # 3. 遍历所有二级文件夹 for second_name in os.listdir(root): second_path os.path.join(root, second_name) if not os.path.isdir(second_path): continue print(f 处理二级文件夹{second_name}) # 3.1 删除二级文件夹里所有【文件】保留三级子文件夹 for item in os.listdir(second_path): item_path os.path.join(second_path, item) if os.path.isfile(item_path): try: os.remove(item_path) print(f 已删除文件{item}) except Exception as e: print(f ❌ 删除失败 {item}{e}) # 3.2 移动所有三级文件夹到一级目录 for third_name in os.listdir(second_path): third_path os.path.join(second_path, third_name) if not os.path.isdir(third_path): continue target_path os.path.join(root, third_name) # 同名跳过不覆盖 if os.path.exists(target_path): print(f ⚠️ 跳过已存在同名文件夹{third_name}) continue shutil.move(third_path, target_path) print(f ✅ 移动三级文件夹{third_name} 到一级目录) # 3.3 删除空的二级文件夹 try: if not os.listdir(second_path): shutil.rmtree(second_path) print(f ️ 已删除空二级文件夹{second_name}\n) except Exception as e: print(f ❌ 无法删除二级文件夹 {second_name}{e}\n) # 4. 操作完成询问是否正确 print( * 60) choice input(所有结构处理完成\n操作是否正确(y 确认保留 / n 还原恢复)).strip().lower() if choice y: # 确认正确删除备份副本 try: shutil.rmtree(backup_root) print(\n✅ 已删除备份副本操作永久生效) except Exception as e: print(f\n❌ 删除备份失败{e}) else: # 不正确还原——删除修改后的原文件夹把备份改回原名 try: # 删除已经改过的原文件夹 shutil.rmtree(root) # 备份重命名为原来的名字 os.rename(backup_root, root) print(\n 已还原删除修改版备份恢复为原文件夹) except Exception as e: print(f\n❌ 还原失败{e}) input(\n按回车键关闭窗口...) if __name__ __main__: main()3.给pictures重命名import os import shutil # 输入一级文件夹路径 root input(请输入一级文件夹完整路径).strip().strip() if not os.path.isdir(root): print(路径无效请重新运行) exit() # 1. 先备份一级文件夹 parent_dir os.path.dirname(root) base_name os.path.basename(root) backup_dir os.path.join(parent_dir, base_name _备份) print(\n正在备份原文件夹...) shutil.copytree(root, backup_dir) print(✅ 备份完成, backup_dir) # 2. 遍历所有二级子文件夹 for subfolder in os.listdir(root): sub_path os.path.join(root, subfolder) if not os.path.isdir(sub_path): continue # 删除指定两个文件 del_files [mol1.mol2, rep.pdb] for fname in del_files: fpath os.path.join(sub_path, fname) if os.path.exists(fpath): os.remove(fpath) # 获取当前文件夹剩余所有文件 file_list [f for f in os.listdir(sub_path) if os.path.isfile(os.path.join(sub_path, f))] for fname in file_list: old_path os.path.join(sub_path, fname) # 处理pdb重命名为 文件夹名_complex.pdb if fname.lower().endswith(.pdb): new_pdb_name f{subfolder}_complex.pdb new_pdb_path os.path.join(sub_path, new_pdb_name) os.rename(old_path, new_pdb_path) # 其他文件文件夹名_原文件名 else: new_fname f{subfolder}_{fname} new_path os.path.join(sub_path, new_fname) os.rename(old_path, new_path) # 3. 一级文件夹下新建complex文件夹 complex_target os.path.join(root, complex) os.makedirs(complex_target, exist_okTrue) # 4. 复制 complex.pdb 到complex文件夹原文件保留只复制 for subfolder in os.listdir(root): sub_path os.path.join(root, subfolder) if not os.path.isdir(sub_path) or subfolder complex: continue # 拼接complex pdb文件名 cmp_file f{subfolder}_complex.pdb cmp_path os.path.join(sub_path, cmp_file) if os.path.exists(cmp_path): shutil.copy2(cmp_path, complex_target) # 5. 询问是否修改正确 print(\n 所有处理完成 ) ans input(修改是否正确(y/n)).strip().lower() if ans y: shutil.rmtree(backup_dir) print(✅ 确认无误已删除备份) else: # 还原原始文件夹 shutil.rmtree(root) os.rename(backup_dir, root) print( 已还原为原始状态所有修改撤销) input(\n按回车退出...)4.服务器对接后整理文件夹内容import os import tkinter as tk from tkinter import filedialog, messagebox # -------------------------- 配置项你无需修改 -------------------------- KEEP_FILES {rep.pdb, mol1.mol2} # 要保留的文件 def clean_folder(): # 初始化窗口隐藏主窗口 root tk.Tk() root.withdraw() # 让用户选择一级文件夹 root_dir filedialog.askdirectory(title请选择【一级文件夹】) if not root_dir: messagebox.showwarning(提示, 未选择文件夹程序退出) return # 确认开始 if not messagebox.askyesno(确认, f即将清理\n{root_dir}\n\n确定继续吗): return print(\n 开始清理 ) print(f一级目录{root_dir}\n) # 遍历 二级文件夹 for second_name in os.listdir(root_dir): second_path os.path.join(root_dir, second_name) # 只处理文件夹 if not os.path.isdir(second_path): continue print(f→ 处理二级文件夹{second_name}) # 1. 清空二级文件夹下的所有文件 for item in os.listdir(second_path): item_path os.path.join(second_path, item) # 只删文件不删三级文件夹 if os.path.isfile(item_path): try: os.remove(item_path) print(f 删除文件{item}) except Exception as e: print(f 删除失败{item}原因{e}) # 2. 遍历三级文件夹只保留指定文件 for third_name in os.listdir(second_path): third_path os.path.join(second_path, third_name) if not os.path.isdir(third_path): continue print(f ↳ 清理三级文件夹{third_name}) # 遍历三级文件夹内所有文件 for filename in os.listdir(third_path): file_path os.path.join(third_path, filename) if os.path.isfile(file_path): # 不在保留列表里 → 删除 if filename.lower() not in KEEP_FILES: try: os.remove(file_path) print(f 删除{filename}) except Exception as e: print(f 删除失败{filename}原因{e}) print(\n 清理全部完成) messagebox.showinfo(完成, 文件夹已清理完毕\n只保留 rep.pdb 和 mol1.mol2) if __name__ __main__: clean_folder()5.服务器对接/data/run01/sczc900/00WYH/DOCK/0507 #化合物mol2,pdb,mol #蛋白pdb cd /data/run01/sczc900/00WYH/DOCK/0507 # 1先激活环境 conda activate docking_env # 2 运行命令 runDOCK1 conda activate docking_env runDOCK16.导出当前蛋白序列到当前项目文件夹一、这条命令说明save protein_all.fasta, SRC-1TIF2含义把名为 SRC-1TIF2 的整个对象直接导出为 fasta 序列文件。二、潜在问题修正写法1. 如果结构里含水分子、配体、离子直接导出会混入杂项只导出蛋白序列建议加筛选# 只导出蛋白主链序列排除水、小分子、核酸save protein_all.fasta, SRC-1TIF2 and polymer.protein2. 只想单独导出某条链示例A链save chainA.fasta, SRC-1TIF2 and polymer.protein and chain A括号里填你的结构筛选语句给你分场景直接套用1. 导出整个蛋白推荐标准写法剔除水/配体pymolsave protein_all.fasta, SRC-1TIF2 and polymer.protein2. 只导出A链蛋白序列pymolsave protein_all.fasta, SRC-1TIF2 and polymer.protein and chain A3. 导出A、B两条链pymolsave protein_all.fasta, SRC-1TIF2 and polymer.protein and (chain A or chain B)4. 只导出A链 20–80号残基片段pymolsave protein_all.fasta, SRC-1TIF2 and polymer.protein and chain A and resi 20-80补充说明1. 逗号后半段是选择集必须写上你的对象名 SRC-1TIF2 2. 不加 polymer.protein 容易把水分子、小分子配体一并导出序列错乱3. 想自定义保存位置把前面文件名改成完整路径示例pymolsave D:/protein/protein_all.fasta, SRC-1TIF2 and polymer.protein
RELATED

相关推荐

【AI+全栈】 AI 智能时代,全栈开发技能 + 多模态 AI 项目才是硬核竞争力 (2)

【AI+全栈】 AI 智能时代,全栈开发技能 + 多模态 AI 项目才是硬核竞争力 (2)

第2章 AI 智能时代,全栈开发技能 多模态 AI 项目才是硬核竞争力单一技能正在贬值,全栈AI的复合能力成为新的护城河引言:技术人的"内卷"与破局 2024年乃至2025年,技术圈最频繁被提及的一个词是什么?无疑是 A…

📅 2026/10/24 21:45:48
Mac磁盘格式化与分区实战指南:从APFS原理到磁盘工具操作

Mac磁盘格式化与分区实战指南:从APFS原理到磁盘工具操作

1. 项目概述:为什么Mac用户需要掌握磁盘管理?如果你刚拿到一台全新的Mac,或者感觉自己的Mac越来越慢、存储空间告急,甚至想在同一台电脑上安装双系统,那么“磁盘格式化”和“分区”这两个词,就是你绕不开的…

📅 2026/10/12 4:01:40
鸿蒙 PC 底层开发技术详解(六):hmdfs 对我们的影响

鸿蒙 PC 底层开发技术详解(六):hmdfs 对我们的影响

从 PC 上的家目录开始谈起 在鸿蒙 PC 上,无论是打开 HiShell 还是打开文件管理器,进入到的第一个目录都是用户的家目录。这个目录在应用沙箱视角下的路径是 /storage/Users/currentUser。当用户在 HiShell 里面访问 $HOME 变量的时候,指向的正…

📅 2026/10/22 3:31:37
MORE NEWS

更多资讯

📰

Cisco Packet Tracer企业网络配置实战:三层架构+VTP+DHCP中继+NAT

简介:本资源是一份面向网络工程初学者与企业网管人员的接入层交换机配置实践指南,聚焦企业级网络拓扑中技术部等典型部门的标准化部署。文档系统覆盖交换机命名规范、加密口令与VTY安全加固、VTP客户端模式配置、管理VLAN及IP地址分配、Access/Trunk端口…

📰

基于日榜数据的热门项目趋势追踪:从抓取到分析

1. 从一张日榜截图说起:我为什么要做这个趋势追踪项目每天刷技术社区的时候,我都有个习惯——先看当天热榜上冒出来的新项目。这个习惯坚持了快三年,起因很简单:吃过信息滞后的亏。早些年我做过一个内部工具,功能做完才…

📰

MATLAB小波分析实战:非平稳信号去噪与特征提取指南

简介:小波分析能够在时频两域同时刻画信号特征,相比傅里叶变换更适合处理非平稳信号。这份PDF文档以MATLAB为实践环境,面向信号处理、数据分析研究人员与工程师,系统讲解小波分解、去噪与特征提取流程,并结合心电、脑电…

📰

H12-811 HCIA-Datacom 655题题库:按知识域拆刷查漏补缺

简介:面向准备华为 H12-811 HCIA-Datacom 认证的考生及网络基础学习者,这份题库汇总 655 道新题,覆盖网络协议基础、命令行接口、数据包分析、华为 AR 路由器命令、传输层协议、静态路由、OSPF 状态与报文、IEEE 802.11n、VRP 操作及接口 VLA…

📰

Windows蓝屏停机码查询与排错实战指南

简介:这份文档聚焦Windows系统蓝屏故障的快速排查,面向普通电脑用户、桌面运维与装机维护人员,把蓝屏画面上那串令人费解的停机码变成可读、可查、可对照的诊断线索。内容围绕蓝屏时显示的信息展开,先讲清STOP 0x0000001E这类提示…

📰

炼丹夜话:1024 前夜,致敬那个在断点调试中倔强前行的自己

时钟的指针在一秒一秒地向着子夜零点逼近。 窗外的城市早已经褪去了白日的喧嚣与浮躁,唯有深秋的冷风掠过窗棂,发出沙沙的声响。桌角那盏暖黄色的台灯下,摊开着一本早已被翻得起毛的算法理论笔记本,上面密密麻麻地记着关于自注意力…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬