python實現mask矩陣(根據列表所給元素)

2021-10-08 04:48:28 字數 2659 閱讀 3781

行和列的位置都在以下三個列表中的一列中,則對應位置為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...