根據sam檔案計算reads的GC含量

2021-09-26 21:46:13 字數 2588 閱讀 7404

禁轉

輸入檔案

dna序列的sam檔案

第一列,序列名;第十列,序列;分割 tab

目標計算每個read的gc含量(只考慮dna序列由atgc組成的情況),並輸出結果到檔案

輸出檔案

第一列read id,第二列read的序列,第三列gc含量

def cal_gc(seq):

"""計算gc含量

"""seq = seq.upper() #全部轉換為大寫

return round((seq.count('c') + seq.count('g')) / float(len(seq)),2)

#round 用於保留兩位小數,float將序列長度轉換為浮點型

infile = 'data/alignment.sam'

outfile = 'output/gc.txt'

in_handle = open(infile) #open(檔案路徑,開啟方式預設為r)

out_handle = open(outfile, 'w')

out_handle.write('read_id\tseq\tgc\n') #表頭

cnt = 0

for line in in_handle:

if cnt != 0: #用於有列名時去掉第一行列名

row = line.split('\t') #返回列表

read_id = row[0]

seq = row[9]

gc = cal_gc(seq)

#print([read_id, seq, gc]) #檢查

out_handle.write('%s\t%s\t%s\n' % (read_id,seq,gc)) # %s佔位符

cnt += 1

in_handle.close()

out_handle.close()

使用try

def cal_gc(seq):

"""計算gc含量

"""seq = seq.upper() #全部轉換為大寫

return round((seq.count('c') + seq.count('g')) / float(len(seq)),2)

#round 用於保留兩位小數,float將序列長度轉換為浮點型

infile = 'data/alignment.sam'

outfile = 'output/gc.txt'

in_handle = none

out_handle = none

try:

in_handle = open(infile) #open(檔案路徑,開啟方式預設為r)

out_handle = open(outfile, 'w')

out_handle.write('read_id\tseq\tgc\n') #表頭

cnt = 0

for line in in_handle:

if cnt != 0: #用於有列名時去掉第一行列名

row = line.split('\t') #返回列表

read_id = row[0]

seq = row[9]

gc = cal_gc(seq)

#print([read_id, seq, gc]) #檢查

out_handle.write('%s\t%s\t%s\n' % (read_id,seq,gc)) # %s佔位符

cnt += 1

finally:

in_handle.close()

out_handle.close()

#不論try中是否有異常,finally中的內容都會執行

使用上下文管理器

def cal_gc(seq):

"""計算gc含量

"""seq = seq.upper() #全部轉換為大寫

return round((seq.count('c') + seq.count('g')) / float(len(seq)),2)

#round 用於保留兩位小數,float將序列長度轉換為浮點型

infile = 'data/alignment.sam'

outfile = 'output/gc.txt'

with open(infile) as in_handle, open(outfile,'w') as out_handle:

out_handle.write('read_id\tseq\tgc\n') #表頭

cnt = 0

for line in in_handle:

if cnt != 0: #用於有列名時去掉第一行列名

row = line.split('\t') #返回列表

read_id = row[0]

seq = row[9]

gc = cal_gc(seq)

#print([read_id, seq, gc]) #檢查

out_handle.write('%s\t%s\t%s\n' % (read_id,seq,gc)) # %s佔位符

cnt += 1

Windows的口令檔案SAM

windows對使用者賬戶的安全管理使用了安全賬號管理器 security account manager,簡稱sam 的機制 sam檔案即賬號密碼資料庫檔案。當我們登入系統的時候,系統會自動地和config中的sam自動校對,如發現此次密碼和使用者名稱全與sam檔案中的加密資料符合時,你就會順利登...

破解給定的SAM檔案

給你乙個sam檔案,如何提取出登入密碼?lmhash administrator 500 0182bd0bd4444bf867cd839bf040d93b c22b315c040ae6e0efee3518d830362b guest 501 aad3b435b51404eeaad3b435b5140...

如何改寫樹莓派下的硬碟檔案系統,以及samba共享

原來檔案系統位fat32,現在想改寫成ext3的步驟如下 1 檢視磁碟資訊 fdisk l2 使用parted工具 3 磁碟分割槽 4 建立資料夾並載入 mkdir mnt my hd mount dev sda1 mnt my hd 5 修改fstab檔案 nano etc fstab在fstab...