python实现mask矩阵示例(根据列表所给元素)
作者:troublemaker、 发布时间:2022-04-19 19:37:16
标签:python,mask,矩阵
行和列的位置都在以下三个列表中的一列中,则对应位置为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
来源:https://blog.csdn.net/weixin_44912159/article/details/107395081
0
投稿
猜你喜欢
- 之前我写过一篇文章介绍如何实现中国站长站的文章干扰码功能:《谈中国站长站的文章干扰码实现方法》 首发在asp之家。如果大家有兴趣可以先看看。
- 解决方法之一:如果pytorch在进行model.cuda()操作需要花费的时间很长,长到你怀疑GPU的速度了,那就是不正常的。如果你用的p
- 目录前言掘金的成长搬家命令行工具环境配置main.pycookie.jsongithub 地址前言最近不少写博客的朋友跟我反馈博客园的一些文
- element-ui界面非常简洁和美观,提供的组件可以满足绝大多数的应用场景,当表格中显示了图片的缩略图时,想要鼠标浮动在缩略图上时放大图片
- 注意:什么路径不可改就搜索该路径进行删除注册表记录,然后重启电脑按 win键盘+R输入 regedit 进去注册表,点击计算机按“编辑”--
- 工欲善其事必先利其器,Python开发利器Pycharm常用快捷键以及配置如下,相信有了这些快捷键,你的开发会事半功倍一 常用快捷键编辑类:
- 普通MySQL运行,数据量和访问量不大的话,是足够快的,但是当数据量和访问量剧增的时候,那么就会明显发现MySQL很慢,甚至do
- 记得之前learn python一书里面,因为当时没有官方支持,只能通过hack的方式实现抽象方法,具体如下 最简单的写法class MyC
- 新版本的selenium已经明确警告将不支持PhantomJS,建议使用headless的Chrome或FireFox。两者使用方式非常类似
- 这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。帮助蹲厕族、YP族、饭圈女孩在
- T-SQL中用来编写流程控制模块的语句有:BEGIN...AND语句、IF...ELSE语句、CASE语句、WHILE语句、GOTO语句、B
- 使用到的库好多人都想了解一下如何对摄像头进行调用,然后进行目标检测,于是我做了这个小BLOG。opencv-python==4.1.2.30
- filetype.pySmall and dependency free Python package to infer file type
- DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在
- 你一定听说过这句著名的数据科学名言:在数据科学项目中, 80% 的时间是在做数据处理。如果你没有听过,那么请记住:数据清洗是数据科学工作流程
- 本文实例讲述了python实现的接收邮件功能。分享给大家供大家参考,具体如下:一 简介本代码实现从网易POP3服务器接收邮件二 代码impo
- 今天遇到这个问题,上网查到以下解决方法:1.检查你的磁盘剩余空间是否足够,如果没有磁盘剩余空间,则清理磁盘,腾出空间
- 解决MySQL插入时间差八小时问题一般 jdbc url中 需要添加几个参数 , 大多数博客给的教程都是 useSSL=false&
- 协同开发时本地测试昨天的文章中提到了Go如何优雅的进行本地测试,今天分享一下:在多人协同开发中,如果大家都进行本地测试可能会出现的问题。最大
- 引言大家在日常工作中,经常会碰到类似的场景,需要计算在某个时间段内的工作日以及确定某天是否为工作日,这里的介绍的工具包将很好的解决这个问题。