利用PDB文件将蛋白中的单聚体利用对称矩阵转换为二聚体

2023-11-17

下面是需要在VMD中执行的tcl脚本:

##
##steps
## source mono2poly.tcl
##mol delete all
##mol new filename.pdb
##set sel [atomselect top all]
##set matrix [parsematrix filename.pdb]
##mono2poly -o newfile.pdb $sel $matrix
##
##
## mol load pdb mypdb.pdb
## set sel [atomselect top protein]
##
## set matrix [parsematrix mypdb.pdb] 
##   get the move matrix according to the BIOMT REMARK in the pdb file
##   returns how many monomers are there, and return a list of 4x4 matrices
## mono2poly -o outname -chain {A B C D} $sel $matrix 
##  {A B C D} represent there are 4 monomers, if {} is used, chain is null
##  default of outname is poly , default of chain is {}

proc parsematrix {orig_file}  {
  set infile [open  $orig_file r]
  set mtnum 0
  while {[gets $infile line]>=0} {
    set title [lindex $line 0]
    set biomt [lindex $line 2]
    if { $title == "REMARK" && [string match BIOMT? $biomt] } {
      set linenum [string index $biomt  end]
      if {$linenum == 1} {
        incr mtnum 1
        set matri($mtnum) {}
      }
      set lineelement [lrange $line 4 7]
      lappend matrix($mtnum) $lineelement
    }
  }
  close $infile

  set matrixlist {}
  foreach name [lsort -integer [array names matri]] {
    lappend matrix($name) {0.0 0.0 0.0 1.0}
    lappend matrixlist $matrix($name)
  }

  if {[llength matrixlist]==0} {
    error "There is no BIOTM REMARK information in this pdb file"
  }

  puts "this is a $mtnum polymer"
  return $matrixlist
}


proc mono2poly_Usage {} {
  puts "you should input:"
  puts "mono2ploy -chain chainlist -o outfilename sel matrix"
  error ""
}


proc mono2poly {args} {
  set cmdlinelength [llength $args]
  if {$cmdlinelength!=2 && $cmdlinelength<4} {
    mono2poly_Usage
  }
  set sel [lindex $args [expr $cmdlinelength-2]]
  set matrix [lindex $args end]
  set polynum [llength $matrix]
  puts $polynum
  set output poly
  set chainlist {}
  if {$cmdlinelength>=4} {
    set args [lrange $args 0 [expr $cmdlinelength-3]]
    set i 0
    while {$i<[llength $args]} {
      set opt [lindex $args $i]
      switch -exact -- $opt {
        -o {
          incr i
          set output [lindex $args $i]
          incr i
          continue
        }
        -chain {
         
          incr i
          set chainlist [lindex $args $i]
          if { [llength $chainlist] != $polynum && [llength $chainlist]!=0} {
            error "chain list should have same element number with matrix or empty list"
          }
          incr i
          continue
        }
        default {
          error "Unknown option $opt"
        }
      }
    }
  }
  $sel writepdb ${output}.org.pdb
  set out [open ${output}.pdb w]

  set i 0
  foreach mat $matrix {
    mol new ${output}.org.pdb waitfor all
    set mono [atomselect top all]
    $mono move $mat
    if { [llength $chainlist] == $polynum } {
      $mono set chain [lindex $chainlist $i]
    } elseif { [llength $chainlist] == 0 } {
      set chainstr "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
      set chainchar [string index $chainstr $i]
      puts "Warning: making up sequential chain IDs, no chain list provided"
      puts "Using chain code '$chainchar'"
      $mono set chain $chainchar
    } else {
      puts "Warning: not setting monomer chains IDs, mismatched chain list size"
    }

    $mono writepdb ${output}.${i}.pdb
    set channel [open ${output}.${i}.pdb r]
    while {[gets $channel line]>=0} {
      if {[lindex $line 0]=="ATOM"} {
        puts $out $line
      }
    }
    close $channel
    file delete ${output}.${i}.pdb
    mol delete top
    incr i
  }
  close $out
  file delete ${output}.org.pdb
  mol load pdb ${output}.pdb
  set all [atomselect top all]
  $all writepdb ${output}.pdb
  mol delete top
  return "${output}.pdb file have finished"
}

 

 

在PDB文件的头部REMARK  350部分标明了进行转换的矩阵

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用PDB文件将蛋白中的单聚体利用对称矩阵转换为二聚体 的相关文章

  • 3.Jmeter学习_线程组(Thread Group)

    xxxx
  • VS2022安装qt插件

    1 安装Qt软件 Qt下载网址 5 14之后的需要手动编译 官方不提供exe文件 2 配置环境变量 3 安装插件 vs2022 qt vsaddin插件已经更新 可以下载安装 链接 https download qt io developm
  • 【正点原子STM32连载】第十七章 通用定时器中断实验 摘自【正点原子】APM32F407最小系统板使用指南

    1 实验平台 正点原子stm32f103战舰开发板V4 2 平台购买地址 https detail tmall com item htm id 609294757420 3 全套实验源码 手册 视频下载地址 http www openedv
  • python爬虫学习笔记-jQuery

    jQuery介绍 jQuery是什么 jQuery是一个快速 简洁的JavaScript框架 jQuery设计的宗旨是 write Less Do More 即倡导写更少的代码 做更多的事情 它封装JavaScript常用的功能代码 提供一
  • C# 集合

    数组是一种指定长度和数据类型的对象 在实际应用中有局限性 集合正是为这种局限性而生的 集合的长度能根据需要更改 也允许存放任何数据类型的值 集合简介 集合和数组比较类似 都用于存放一组值 但集合中提供了特定的方法直接操作集合中的数据 并提供
  • Java接口详解

    接口 接口的概念 在现实生活中 接口的例子比比皆是 比如 笔记本上的USB口 电源插座等 电脑的USB口上 可以插 U盘 鼠标 键盘等所有符合USB协议的设备 电源插座插孔上 可以插 电脑 电视机 电饭煲等所有符合规范的设备 通过上述例子可
  • OneNote复制为默认字体大小(只复制文字,不复制原有字体格式)

    当我们从word中复制一段文字到onenote中 onenote会自动带上原有字体的格式 非常不方便 下面是只复制文字的方法 1 随便按 ctrl c 复制一段文字 2 到onenote里按下 ctrl v 粘贴 选择右下角的框 3 在弹出
  • 使用XMind解决问题?只需4个简单步骤!

    我们每天都在解决问题并做出决定 从我应该穿什么到学校的小问题到如何找工作或上大学等等的问题 我们面临的问题可能或大或小 或简单或复杂 无论它是什么 我们都必须解决它 解决问题和决策是商业和生活的重要技能 我们生活中非常重要的一部分是找到解决
  • UE4_积分相同排名显示问题

    找了一下ue4 rank 函数相关 没找到合适的 自己简单写了个 解决积分相同时名次要一样 之后顺位排序 中国式排名 蓝图实现 c 原理一样 1 2 3 4 5
  • 编译 QT4.6.3 出现 derefIfNotNull 未定义 解决

    使用高版本的编译工具编译QT4 6 3 出现错误 derefIfNotNull 未定义 找到 RefPtr h文件 在WFT 的 public 里面增加 两个函数的定义 void derefIfNotNull T ptr if LIKELY
  • CS从头配置电脑清单(软件篇)

    CS从头配置电脑清单 软件篇 假设你电脑丢了 重新搞了一台 怎么从头配置 迅速可以进行高效产出 假设你是Linux ubuntu系统 安装zoom 安装slack 进行其他设备的信息发送 自己给自己发 项目交流 安装截图软件 推荐flame
  • 【Java】QueryWrapper方法解释

    继承自 AbstractWrapper 自身的内部属性 entity 也用于生成 where 条件 及 LambdaQueryWrapper 可以通过 new QueryWrapper lambda 方法获取 queryWrapper lt
  • 加解密

    目录 一 加密基础知识 1 加密函数 密钥 反函数 2 加密 解密 3 对称加密 4 非对称加密 公钥私钥 二 非对称加密 1 大素数分解问题类 1 RSA 2 Rabin 3 Pollard s rho 素数分解算法 2 离散对数问题类
  • 论文笔记-深度估计(5)Unsupervised Monocular Depth Estimation with Left-Right Consistency

    ECCV2016 Unsupervised Monocular Depth Estimation with Left Right Consistency 本文采用无监督学习 没有ground truth 的方法来估计深度 基本思路是匹配好左
  • Graph Neural Network-Based Anomaly Detection in Multivariate Time Series 代码配置及解析

    可以在GPU上跑通的代码 含数据集 我已经放到了以下链接 链接 https pan baidu com s 1gM4KTbRNHzfbGEGgvEjXAw 提取码 e7wu 在服务器上跑 先创建一个虚拟环境 conda create n G
  • 算法——B树,B-树,B+树,B*树全面解析笔记

    算法 B树 B 树 B 树 B 树全面解析笔记 https www cnblogs com lianzhilei p 11250589 html http blog codinglabs org articles theory of mys
  • 【QT】混合UI设计

    虽然利用Designer和代码的设计方式都可以开发GUI 但是毫无疑问的是最有效的开发方式是利用两者进行混合开发 下面这个实验例子来自 QT5 9 C 开发指南 我做了小部分修改 最终效果是这样 图标导入 这次我们要开发的是一个有工具栏 菜

随机推荐

  • 哈希表——哈希表的概念,哈希表的实现(闭散列,开散列)详细解析

    作者 努力学习的少年 个人简介 双非大二 一个正在自学c 和linux操作系统 写博客是总结知识 方便复习 目标 进大厂 如果你觉得文章可以的话 麻烦你给我点个赞和关注 感谢你的关注 种一颗树最好是10年前 其次是现在 目录 哈希概念 哈希
  • 实战怎么用u盘重装系统

    当电脑系统出现故障问题无法进系统的情况下 我们可以通过制作u盘启动盘进pe系统进行修复或者重装系统解决 不过很多网友不知道怎么用u盘重装系统 今天小编就给大家分享一个简单易操作的u盘重装系统教程 具体的步骤如下 1 先在一台可用的电脑上下载
  • nodejs服务后台持续运行三种方法

    网上看到的 用了第二种方式OK的 自己备份保存下 一 利用 forever forever是一个nodejs守护进程 完全由命令行操控 forever会监控nodejs服务 并在服务挂掉后进行重启 1 安装 forever npm inst
  • 微信小程序之内嵌网页(webview)

    微信小程序提供了新的开放能力 它终于开放了在小程序中内嵌HTML页面的功能 从微信小程序基础库1 6 4开始 我们就可以在小程序内放置一个
  • 蓝桥杯大赛— —每日一题(6、走方格)

    走方格 题目描述 在平面上有一些二维的点阵 这些点的编号就像二维数组的编号一样 从上到下依次为第 1 至第 n 行 从左到右依次为第 1 至第 m 列 每一个点可以用行号和列号来表示 现在有个人站在第 1 行第 1 列 要走到第 n 行第
  • Redis可以代替MySQL作为数据库吗

    Redis可以代替MySQL作为数据库吗 当使用Redis作为数据库时 以下是一些基本的代码示例 1 连接到Redis服务器 2 存储和获取数据 3 列表操作 4 有序集合操作 6 键过期和删除 Redis作为数据库时 下面是一些更复杂的代
  • 如何基于G6进行双树流转绘制?

    1 背景 业务背景 CRM系统随着各业务条线对线索精细化分配的诉求逐渐增加 各个条线的流向规则会越来越复杂 各个条线甚至整个CRM的线索流转规则急需一种树形的可视化的图来表达 技术背景 在开发之前考虑了三种方案 原生canvas fabri
  • STM32 同个定时器 采用2个通道输入捕获

    工作中遇到 做点总结 之前看CSDN 找到一种写法 就是 把中断中的 CAPTURE VAL 的值 变成 date1 date2 去保存 但是我的写法不成功 一位大佬帮忙改成功了 总结我的写法错误之处 主函数区别 我把date1 清0 放后
  • java longlong_java Long long

    在Java中执行如下的代码 long number 26012402244 编译的时候会出现一个错误 提示 过大的整数 32322355744 如果在Eclipse中书写上面的代码 提示的是 The literal 26012402244
  • DrawerLayout与FragmentTabHost结合模仿oschina主界面

    1 DrawerLayout实现侧滑菜单 drawerlayout是官方出的侧滑菜单控件 使用起来非常方便 将它当作LinearLayout一样的布局控件 完成布局xml文件
  • 安全(六种核心安全机制-加密、密钥、签名与证书)

    安全要解决什么问题 你都会的密码术 安全机制之对称加密 安全机制之非对称加密 安全机制之密钥交换 安全机制之消息摘要 安全机制之电子签名 安全机制之证书与PKI 一 在典型的场景中 安全主要用于解决4类需求 1 保密 Security Co
  • Load balancer does not have available server for client问题

    Load balancer does not have available server for client问题 是因为消费端没有调用成功服务端 下面四步是必备的 可以检查一番 1 写nacos发现的启动类注解 SpringBootApp
  • statsmodels 笔记:seasonal_decompose 时间序列分解

    1 使用方法 statsmodels tsa seasonal seasonal decompose x model additive filt None period None two sided True extrapolate tre
  • [Nowcoder / POJ2728] 最优比率生成树

    Nowcoder链接 POJ链接 题目描述 David the Great has just become the king of a desert country To win the respect of his people he d
  • 单例模式的6种实现方式

    单例模式的6种实现方式 一 单例模式的定义 定义 确保一个类只有一个实例 并提供该实例的全局访问点 这样做的好处是 有些实例 全局只需要一个就够了 适用单例模式就可以避免一个全局适用的类 频繁的创建和销毁 耗费系统资源 二 单例模式的设计要
  • C++函数指针应用例子

    C 函数指针应用例子 前段时间在写代码的时候 想让程序根据一个函数运行出的结果 从四个函数中自动选择一个函数运行 这四个函数我们就取名叫 value 0 value 1 value 2 value 3 假设value 0是这样的 int v
  • 基于Android系统英语学习助手APP设计开发

    一 设计思路 1 1设计目标 1 2设计思路 1 3设计内容 1 3 1界面设计 1 3 2功能模块设计 1 3 3功能流程图 1 3 4数据库设计 如果没有数据库这部分删除 1 4工具设备要求 1 5技术方案 二 设计过程与说明 2 1技
  • JVM 内存分析—优化

    参考链接 https www jianshu com p c6e2abb9f657 JVM及GC https blog csdn net sltylzx article details 90704205 在Eclipse上安装MAT Mem
  • kafka学习指南(总结版)

    版本介绍 从使用上来看 以0 9为分界线 0 9开始不再区分高级 低级消费者API 从兼容性上来看 以0 8 x为分界线 0 8 x不兼容以前的版本 总体拓扑架构 从上可知 1 生产者不需要访问zookeeper 2 消费者fetch消息
  • 利用PDB文件将蛋白中的单聚体利用对称矩阵转换为二聚体

    下面是需要在VMD中执行的tcl脚本 steps source mono2poly tcl mol delete all mol new filename pdb set sel atomselect top all set matrix