我不是程序員,但我正在參加生物信息學課,因爲我是分子遺傳學專業......我們的任務是獲取多個條目是這樣的:從文件中提取文本並將結果保存到管道分隔文件中
77:XP_001929585
PREDICTED:類似於BRCA1相關蛋白 [野豬] GI | | ref | XP_001929585.1 | [194042959]
,並提取我加粗的項目,然後把結果保存到一個管道分隔的文件是這樣的:
194042959|Sus scrofa|PREDICTED: similar to BRCA1 associated protein.
我們正在使用的崇高編輯器來編寫我們的腳本在Ruby中。我知道如何打開該文件,然後......嗯,這是我的腳本到目前爲止...
#!/usr/local/bin/ruby
File.open("mmg231_hw5_brca1.txt").each do |file_line|
if file_line =~ /^(.+)\[([A-Z].+)\]/
description = $1
taxon_name = $2
puts "#{taxon_name}|#{description}"
elsif file_line =~ /\[([0-9].+)\]/
gi_number = $1
puts "#{gi_number}"
end
end
我知道這是錯的......正則表達式就捕捉他們需要什麼。第一次投入會正確地提供分類單元名稱和描述,但我無法弄清楚如何在那裏獲得gi編號,因爲它在不同的路線上......我可以自己提取gi編號也沒有辦法將它與其他兩個部分聯繫起來。另外,當我使用我開發的正則表達式將它們拉出時,它們保持在文件中的正確順序,所以我試圖想辦法告訴計算機喜歡每個分類名稱/描述對的數字1 ,2,3等等,然後用gi數字做同樣的事情,然後你可以像分類名稱/描述1和gi數字1一樣,或者讓計算機獲得分類名稱和描述對,然後只是在下一行爲gi號碼,但我不知道如何做到這一點...
幫助嗎?而用簡單的英語將是有益的,最幫助網站我覺得我能使用,但我只是不明白的語言......
前4項:
1: ZP_00239925
BRCA1 [Bacillus cereus G9241]
gi|47569239|ref|ZP_00239925.1||gnl|WGS:NZ_AAEK|BCE_G9241_3679 [47569239]
2: NP_009225
breast cancer 1, early onset isoform 1 [Homo sapiens]
gi|6552299|ref|NP_009225.1| [6552299]
3: NP_033894
breast cancer 1 [Mus musculus]
gi|161016835|ref|NP_033894.3| [161016835]
4: NP_036646
breast cancer 1 [Rattus norvegicus]
gi|6978573|ref|NP_036646.1| [6978573]
我認爲如果你展示更多的輸入文件的例子會有所幫助。 – Phrogz 2012-02-17 06:57:40
您可以使用3個不同的條目發佈'mmg231_hw5_brca1.txt'的例子嗎?以MB爲單位的輸入文件有多大,以及將來如何使用大文件作爲輸入? – 2012-02-17 07:57:09
我添加了前4項 - 其中有4328項... – kbearski 2012-02-18 17:57:53