第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 fasta 文件中刪除重復(fù)項,但根據(jù)標(biāo)題每組至少保留一個

如何從 fasta 文件中刪除重復(fù)項,但根據(jù)標(biāo)題每組至少保留一個

幕布斯6054654 2023-03-30 16:38:56
我有一個如下所示的 multifasta 文件:(所有序列都>100bp,多于一行,且長度相同)>Lineage1_samplenameACGCTTCAACGGAATGGATCTACGTTACAGCCTGCATAAAGAAAACGGAGTTGCCGAGGACGAAAGCGACTTTAGGTTCTGTCCGTTGTCTTTGGCGGAAA>Lineage2_samplenameBAAATTCAACGGAATGGATCTACGTTACAGCCTGCATAAAGAAAACGGAGTTGCCGAGGACGAAAGCGACTTTAGGTTCTGTCCGTTGTCTTTGGCGGAAG>Lineage3_samplenameCCGCTTCAACGGAATGGATCTACGTTACAGCCTGCATAAAGAAAACGGAGTTGCCGAGGACGAAAGCGACTTTAGGTTCTGTCCGTTGTCTTTGGCGGAAA>Lineage3_samplenameDCGCTTCAACGGAATGGATCTACGTTACAGCCTGCATAAAGAAAACGGAGTTGCCGAGGACGAAAGCGACTTTAGGTTCTGTCCGTTGTCTTTGGCGGAAA我需要刪除重復(fù)項,但至少要保持每個譜系的順序。因此,在上面的這個簡單示例中(注意 samplenameA、C 和 D 是相同的),我只想刪除 samplenameD 或 samplenameC,而不是同時刪除它們。最后我想獲得與原始文件中相同的標(biāo)題信息。示例輸出:>Lineage1_samplenameACGCTTCAACGGAATGGATCTACGTTACAGCCTGCATAAAGAAAACGGAGTTGCCGAGGACGAAAGCGACTTTAGGTTCTGTCCGTTGTCTTTGGCGGAAA>Lineage2_samplenameBAAATTCAACGGAATGGATCTACGTTACAGCCTGCATAAAGAAAACGGAGTTGCCGAGGACGAAAGCGACTTTAGGTTCTGTCCGTTGTCTTTGGCGGAAG>Lineage3_samplenameCCGCTTCAACGGAATGGATCTACGTTACAGCCTGCATAAAGAAAACGGAGTTGCCGAGGACGAAAGCGACTTTAGGTTCTGTCCGTTGTCTTTGGCGGAAA我找到了一種只刪除重復(fù)項的方法。感謝皮埃爾林登鮑姆。sed -e '/^>/s/$/@/' -e 's/^>/#/'file.fasta  |\tr -d '\n' | tr "#" "\n" | tr "@""\t" |\sort -u -t '  ' -f -k 2,2  |\sed -e 's/^/>/' -e 's/\t/\n/'在我上面的例子中運行它會導(dǎo)致:>Lineage1_samplenameACGCTTCAACGGAATGGATCTACGTTACAGCCTGCATAAAGAAAACGGAGTTGCCGAGGACGAAAGCGACTTTAGGTTCTGTCCGTTGTCTTTGGCGGAAA>Lineage2_samplenameBAAATTCAACGGAATGGATCTACGTTACAGCCTGCATAAAGAAAACGGAGTTGCCGAGGACGAAAGCGACTTTAGGTTCTGTCCGTTGTCTTTGGCGGAAG—> 所以失去了血統(tǒng) 3 序列現(xiàn)在我只是在尋找一種快速解決方案來刪除重復(fù)項,但基于 fasta 標(biāo)頭每個譜系至少保留一個序列。我是腳本新手……歡迎使用 bash/python/R 中的任何想法。
查看完整描述

1 回答

?
qq_花開花謝_0

TA貢獻(xiàn)1835條經(jīng)驗 獲得超7個贊

在這種情況下,我可以看到兩個相對較好的選擇。A) 查看現(xiàn)有工具(例如 Biopython 庫或 FASTX 工具包。我認(rèn)為它們都有很好的命令來完成此處的大部分工作,因此學(xué)習(xí)它們可能是值得的?;蛘?,B) 編寫您自己的工具。在這種情況下,您可能想嘗試(我會堅持使用 python):


逐行遍歷文件,并將譜系/序列數(shù)據(jù)添加到字典中。我建議使用序列作為鍵。這樣,您可以很容易地知道您是否已經(jīng)遇到過此密鑰。


myfasta = {}

if myfasta[sequence]:

    myfasta[sequence].append(lineage_id)

else:

    myfasta[sequence] = [lineage_id]

這樣你的鍵(序列)將保存具有相同序列的 lineage_ids 列表。請注意,此解決方案的煩人之處在于遍歷文件、將 lineage-id 與序列分開、考慮可能擴(kuò)展到多行的序列等。


之后,您可以遍歷字典,并僅使用字典中列表中的第一個 lineage_id 將序列寫入文件。


查看完整回答
反對 回復(fù) 2023-03-30
  • 1 回答
  • 0 關(guān)注
  • 399 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號