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中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
Python3控制路由器——使用requests重启极路由.py
May 11 Python
简单了解Python中的几种函数
Nov 03 Python
Python实现动态图解析、合成与倒放
Jan 18 Python
python遍历文件夹找出文件夹后缀为py的文件方法
Oct 21 Python
利用anaconda作为python的依赖库管理方法
Aug 13 Python
Python实现RGB与HSI颜色空间的互换方式
Nov 27 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
django 数据库返回queryset实现封装为字典
May 19 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
Python实现迪杰斯特拉算法过程解析
Sep 18 Python
解决Python 写文件报错TypeError的问题
Oct 23 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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
php封装的验证码工具类完整实例
2016/10/19 PHP
js 页面执行时间计算代码
2009/03/04 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
Vue中render方法的使用详解
2018/01/26 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
2018/07/11 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
Python实现的Excel文件读写类
2015/07/30 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
Python通过类的组合模拟街道红绿灯
2020/09/16 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
办公自动化毕业生求职信
2014/03/09 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
委托书的写法
2014/09/16 职场文书
2014年教务处工作总结
2014/12/03 职场文书
怎样写家长意见
2015/06/04 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android