python实现mask矩阵示例(根据列表所给元素)


Posted in Python onJuly 30, 2020

行和列的位置都在以下三个列表中的一列中,则对应位置为1,其余位置全为0

​ ——[7-56,239-327,438-454,522-556,574-586]

​ ——[57-85,96-112,221-238]

​ ——[113-220,328-437,455-521,557-573]

代码实现

def generateMaskBasedOnDom(dom_path, length):
  """
  :param dom_path: this is a file path, which contains the following information:
  [7-56,239-327,438-454,522-556,574-586][57-85,96-112,221-238][113-220,328-437,455-521,557-573]
  each [...] means one domain
  :param length: this is the length of this protein
  :return: the mask matrix with size length x length, 1 means inner domain residue pair, otherwise 0
  """
  # 读取文件
  with open(dom_path, "r", encoding="utf-8") as file:
    contents = file.readlines()

  # 获得mask位置数据
  list0 = []
  list1 = []
  list2 = []
  for list_idx, content in enumerate(contents):
    num_range_list = content.strip()[1:-1].split(",")
    for num_range in num_range_list:
      start_num = int(num_range.split("-")[0])
      end_num = int(num_range.split("-")[1])
      for num in range(start_num, end_num+1):
        if list_idx == 0:
          list0.append(num)
        elif list_idx == 1:
          list1.append(num)
        else:
          list2.append(num)

  mask = np.zeros((length, length))
  # 遍历矩阵每个元素
  for row in range(mask.shape[0]):
    for col in range(mask.shape[1]):
      if (row in list0 and col in list0) or (row in list1 and col in list1) or (row in list2 and col in list2):
        mask[row][col] = 1

  return mask

if __name__ == "__main__":

  # if no dom file ,please get dom file first
  with open("dom.txt", "w", encoding="utf-8") as f:
    f.write("[7-56,239-327,438-454,522-556,574-586]" + "\n" + "[57-85,96-112,221-238]" + "\n" + "[113-220,328-437,455-521,557-573]")

  file_path = "./dom.txt"
  protein_length = 1000  # mask_matrix size
  mask_matrix = generateMaskBasedOnDom(file_path, protein_length)
  print("*************Generate Mask Matrix Successful!*************")

  # 随机测试几组
  print(mask_matrix[7][56]) # 1
  print(mask_matrix[7][239]) # 1
  print(mask_matrix[8][57])  # 0
  print(mask_matrix[57][95]) # 0
  print(mask_matrix[113][573]) # 1

到此这篇关于python实现mask矩阵示例(根据列表所给元素)的文章就介绍到这了,更多相关python实现mask矩阵 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python读取浮点数和读取文本文件示例
May 06 Python
举例讲解Python的Tornado框架实现数据可视化的教程
May 02 Python
Python实现分割文件及合并文件的方法
Jul 10 Python
用Python将IP地址在整型和字符串之间轻松转换
Mar 22 Python
python opencv实现任意角度的透视变换实例代码
Jan 12 Python
用Python逐行分析文件方法
Jan 28 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 Python
Python中的self用法详解
Aug 06 Python
python 字符串的驻留机制及优缺点
Jun 19 Python
python学习笔记之多进程
Aug 06 Python
python爬虫工具例举说明
Nov 30 Python
Python3爬虫发送请求的知识点实例
Jul 30 #Python
详解Python 最短匹配模式
Jul 29 #Python
Python如何给你的程序做性能测试
Jul 29 #Python
Python3爬虫中关于中文分词的详解
Jul 29 #Python
Python3爬虫中pyspider的安装步骤
Jul 29 #Python
关于Python3爬虫利器Appium的安装步骤
Jul 29 #Python
Python3爬虫mitmproxy的安装步骤
Jul 29 #Python
You might like
php初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
php 基础函数
2017/02/10 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
js简单实现交换Li的值
2014/05/22 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
nodejs异步编程基础之回调函数用法分析
2018/12/26 NodeJs
微信小程序人脸识别功能代码实例
2019/05/07 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
部署Python的框架下的web app的详细教程
2015/04/30 Python
Python简单计算文件夹大小的方法
2015/07/14 Python
Flask框架通过Flask_login实现用户登录功能示例
2018/07/17 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
python中wx模块的具体使用方法
2020/05/15 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
如何获取某个日期是当月的最后一天
2013/12/05 面试题
学雷锋宣传标语
2014/06/25 职场文书
教代会闭幕词
2015/01/28 职场文书
js作用域及作用域链工作引擎
2022/07/07 Javascript
数据设计之权限的实现
2022/08/05 MySQL