pyfastx:用于快速讀取和處理序列數(shù)據(jù)

參考地址:https://github.com/lmdu/pyfastx

# fasta文件

# Fasta讀取fasta文件,build_index設(shè)置是否構(gòu)建索引司志,默認為true;full_name設(shè)置是否使用完整的標(biāo)題震叙。

for name, seq in pyfastx.Fasta('/data/test.fa.gz', build_index=False, full_name=True):

? ? print(name)

? ? print(seq)

# 也可以像這樣從FASTA對象迭代序列對象

fa = pyfastx.Fasta('data/test.fa.gz')

for seq in fa:

? ? print(seq.name)

? ? print(seq.seq)

? ? print(seq.description)

# 序列數(shù)

print(len(fa))

# 總序列長度

print(fa.size)

# 獲取DNA序列的GC含量

print(fa.gc_content)

# 獲取DNA序列的GC偏態(tài)

print(fa.gc_skew)

# 獲取fasta文件中核苷酸的組成

print(fa.composition)

# fasta文件類型(DNA栈雳、RNA怯邪、蛋白質(zhì))

print(fa.type)

# 檢查fasta文件是gzip壓縮的

print(fa.is_gzip)

# 得到最長和最短的序列,和對應(yīng)的id

print(fa.longest)

print(fa.longest.name)

print(len(fa.longest))

print(fa.shortest)

print(fa.shortest.name)

print(len(fa.shortest))

# 計算N50鸠踪、L50

print(fa.nl(50))

# 計算N90丙者、L90

print(fa.nl(90))

# 計算N75、L75

print(fa.nl(75))

# 獲取序列均值和中位數(shù)長度

print(fa.mean)

print(fa.median)

# 獲取長度>=200指定長度的序列的計數(shù)

print(fa.count(200))

# 得到子序列

# 獲取起始和結(jié)束位置的子序列

interval = (1, 10)

print(fa.fetch('JZ822577.1', interval))

# 獲取起始和結(jié)束位置列表的子序列

intervals = [(1, 10), (50, 60)]

print(fa.fetch('JZ822577.1', intervals))

# 獲取反向鏈的子序列

print(fa.fetch('JZ822577.1', (1, 10), strand='-'))

# 獲取給定子序列的右側(cè)序列营密,返回包含左側(cè)和右側(cè)序列的元組

# 獲取JZ822577:50-60子序列長度為20的側(cè)翼序列

print(fa.flank('JZ822577.1', 50, 60, 20))

# 獲得單個堿基或SNP位置100的側(cè)翼序列

print(fa.flank('JZ822577.1', 100, 100, 20))

# 通過buffer cache獲取右翼序列(使用了緩存(buffer)來提高處理速度)

print(fa.flank('JZ822577.1', 70, 90, flank_length=20, use_cache=True))

# 有時你的fasta會有一個很長的標(biāo)題械媒,其中包含多個標(biāo)識符和描述,例如:>JZ822577.1 contig1 cDNA library of flower petals in tree peony by suppression subtractive hybridization Paeonia suffruticosa cDNA, mRNA sequence

# 在這種情況下评汰,可以使用“JZ822577.1”或“contig1”作為標(biāo)識符纷捞。通過指定key函數(shù),可以選擇一個作為標(biāo)識符被去。

# 默認使用JZ822577.1作為標(biāo)識符

# 指定key_func選擇contig1作為標(biāo)識符

# 如果索引文件已經(jīng)存在主儡,則應(yīng)該刪除以前的索引文件,然后使用key_func創(chuàng)建新的索引文件

fa = pyfastx.Fasta('/data/test.fa.gz', key_func=lambda x: x.split()[1])

# 得到序列和序列信息

s1 = fa['JZ822577.1']

print(s1)

s2 = fa[-1]

print(s2)

print(s2.id)

print(s2.name)

print(s2.description)

print(s2.seq)

print(s2.raw)

print(len(s2))

print(s2.gc_content)

print(s2.composition)

# 切片惨缆、互補糜值、反轉(zhuǎn)

print(fa[0][10:20].seq)

print(fa[0][10:20].reverse)

print(fa[0][10:20].complement)

print(fa[0][10:20].antisense)

# 逐行打印

for line in fa[0]:

? ? print(line)

# 搜索子序列

# 從給定序列中搜索子序列,并獲得第一次出現(xiàn)的起始位置

print(fa[0].search('GCTTCAATACA'))

# 是否存在

print('GCTTCAATACA' in fa[0])

# 搜索反義鏈子序列

print(fa[0].search('CCTCAAGT', '-'))

# FastaKeys

# 獲取序列的所有名稱作為類列表對象坯墨。

ids = fa.keys()

print(ids[0])

# 按長度降序排序鍵

for name in ids.sort(by='length', reverse=True):

? ? print(name)

# 按名稱升序排序鍵

for name in ids.sort(by='name'):

? ? print(name)

# 按id降序排序鍵

for name in ids.sort(by='id', reverse=True):

? ? print(name)

# 按序列長度和名稱過濾鍵

# 獲取長度> 600的鍵

ids.filter(ids > 600)

list(ids)

ids.filter(ids >= 500, ids <= 700)

ids.filter(500 < ids < 600)

ids.filter(ids % 'JZ8226')

ids.filter(ids % 'JZ8226', ids > 550)

ids.reset()

ids.filter(ids % 'JZ8226', ids > 730)

ids.filter(ids % 'JZ8226', ids > 730).sort('length', reverse=True)

ids.filter(ids % 'JZ8226', ids > 730).sort('name', reverse=True)

# fastq文件

fq = pyfastx.Fastq('/data/test.fq.gz', build_index=False)

for name, seq, qual in fq:

? ? print(name)

? ? print(seq)

? ? print(qual)

for read in pyfastx.Fastq('/data/test.fq.gz'):

? ? print(read.name)

? ? print(read.seq)

? ? print(read.qual)

? ? print(read.quali)

# 序列數(shù)

print(len(fq))

# 總堿基

print(fq.size)

# gc含量

print(fq.gc_content)

# 堿基組成

print(fq.composition)

# 讀取的平均長度

print(fq.avglen)

# 最大長度

print(fq.maxlen)

# 最小長度

print(fq.minlen)

# 最高質(zhì)量分數(shù)

print(fq.maxqual)

# 最低質(zhì)量分數(shù)

print(fq.minqual)

# phred值會影響質(zhì)量分數(shù)的轉(zhuǎn)換

print(fq.phred)

r1 = fq['A00129:183:H77K2DMXX:1:1101:4752:1047']

print(r1)

r2 = fq[-1]

print(r2)

print(r2.id)

print(r2.name)

print(r2.description)

print(len(r2))

print(r2.seq)

print(r2.raw)

print(r2.qual)

print(r2.quali)

ids = fq.keys()

print(len(ids))

print(ids[0])

# 命令行界面

# pyfastx -h

# 命令:

# index:為fasta/q文件建立索引

# Stat:顯示fasta/q文件的詳細統(tǒng)計信息

# Split:將fasta/q文件分割成多個文件

# fq2fa:轉(zhuǎn)換fastq文件到fasta文件

# subseq:按區(qū)域從fasta文件中獲取子序列

# sample:從fasta或fastq文件中隨機取樣

# extract:從fasta/q文件中提取完整序列或讀取

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寂汇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子捣染,更是在濱河造成了極大的恐慌骄瓣,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耍攘,死亡現(xiàn)場離奇詭異榕栏,居然都是意外死亡,警方通過查閱死者的電腦和手機蕾各,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門扒磁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人示损,你說我怎么就攤上這事渗磅。” “怎么了检访?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵始鱼,是天一觀的道長。 經(jīng)常有香客問我脆贵,道長医清,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任卖氨,我火速辦了婚禮会烙,結(jié)果婚禮上负懦,老公的妹妹穿的比我還像新娘。我一直安慰自己柏腻,他們只是感情好纸厉,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著五嫂,像睡著了一般颗品。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沃缘,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天躯枢,我揣著相機與錄音,去河邊找鬼槐臀。 笑死锄蹂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的水慨。 我是一名探鬼主播得糜,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼讥巡!你這毒婦竟也來了掀亩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤欢顷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后捉蚤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抬驴,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年缆巧,在試婚紗的時候發(fā)現(xiàn)自己被綠了布持。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡陕悬,死狀恐怖题暖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捉超,我是刑警寧澤胧卤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站拼岳,受9級特大地震影響枝誊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惜纸,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一叶撒、第九天 我趴在偏房一處隱蔽的房頂上張望绝骚。 院中可真熱鬧,春花似錦祠够、人聲如沸压汪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽止剖。三九已至,卻和暖如春湿滓,著一層夾襖步出監(jiān)牢的瞬間滴须,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工叽奥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扔水,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓朝氓,卻偏偏與公主長得像魔市,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子赵哲,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容