行和列的位置都在以下三個列表中的一列中,則對應位置為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:
elif list_idx ==1:
else
: 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])
# 1print
(mask_matrix[7]
[239])
# 1print
(mask_matrix[8]
[57])
# 0print
(mask_matrix[57]
[95])
# 0print
(mask_matrix[
113]
[573])
# 1
python 手動實現大根堆
主要實現了四個函式 add 往堆裡加新的值,相當於在list末尾新增值,然後siftup維護大根堆從上到下從大到小 class maxheap object def init self,maxsize self.maxsize maxsize 堆的大小 self.elements 0 maxsize...
Python小根堆的實現
實現堆的函式,像heapq的庫一樣,對列表進行操作。小根堆 陣列中,根節點索引為0.索引為idx idxid x的節點,左子節點為2 i dx 1 2 idx 1 2 idx 1,右子節點為2 i dx 2 2 idx 2 2 idx 2.反過來,乙個節點下標為idx idxid x,它的父節點下標...
python實現螺旋矩陣
import numpy 使用遞迴解決 def helixmatrix matrix,x cur,y cur,number,n if n 0 print matrix return 0 if n 1 matrix x cur y cur number print matrix return 0 上f...