2016-06-28 20 views
0

我有兩個文件看起來像這樣的單核苷酸多態性刪除:與錯等位基因

  1. 參考面板(ReferencePanel.csv

    "id","position","allele0","allele1","allele1_frequency" 
    "seq-rs1010355",55102179,"T","C",0.098 
    "seq-rs272408",55103603,"C","T",0.787 
    "seq-rs11669899",55104559,"A","T",0.029 
    "imm_19_59798585",55106773,"A","G",0.499 
    
  2. 一個BIM文件( myfile.bim

    19 19:55102179 0 55102179 C T 
    19 19:55103603 0 55103603 C T 
    19 19:55104559 0 55104559 G C 
    19 19:55106773 0 55106773 A T 
    

我想在BIM文件中的所有地方的兩個等位基因是從參考面板不同的行刪除。換句話說,我想只保留與參考面板具有完全相同等位基因的行 - 順序無關緊要。

參考等位基因:

"seq-rs1010355",55102179,"T","C",0.098 
"seq-rs272408",55103603,"C","T",0.787 
"seq-rs11669899",55104559,"A","T",0.029 
"imm_19_59798585",55106773,"A","G",0.499 

BIM文件(myfile.bim)

19 19:55102179 0 55102179 C T 
19 19:55103603 0 55103603 C T 
19 19:55104559 0 55104559 G C 
19 19:55106773 0 55106773 A T 

只保留以下行:

19 19:55102179 0 55102179 C T 
19 19:55103603 0 55103603 C T 

我設法提取使用這些線路的參考板所有位置:

#Create an empty list 
positions=[] 

#Populate list with positions 
for line in open("ReferencePanel.csv"): 
    columns = line.split(",") 
    positions.append(columns[1]) 
#Remove first element which corresponds to the header 
positions.pop(0) 

但我困在這裏。我希望有一個人可以幫助我。 提前謝謝!

回答

1

如果你不反對使用awk,可以使用下面的命令:

awk -F'[",]*' 'NR==FNR && $4 && $5 {ref[$4][$5]=1} NR>FNR {FS=" *"} NR>FNR && ref[$6][$7]' reference.csv myfile.bim 

這導致:

19 19:55102179 0 55102179 C T 
19 19:55103603 0 55103603 C T 
19 19:55106773 0 55106773 A T 

注意最後一行參考的4號線一致文件(帶A,T)

說明:

-F'[",]*'被用於解析參考文件

NR==FNR && $4 && $5 {ref[$4][$5]=1}匹配CSV定界符越來越所有的C,T,G,從參考文件

NR>FNR {FS=" *"}正在改變awk字段分隔符爲空格來解析第二A文件

NR>FNR && ref[$6][$7]是第二個文件的印刷生產線,如果第六和第七列是匹配什麼存儲陣列

+0

謝謝您的快速答覆杜仲英寸我真的很感激!但是,我使用這個命令得到一個語法錯誤。我認爲[$ 4] [$ 5]之間有錯誤/缺失,[$ 6] [$ 7]之間相同。此外,我不明白你爲什麼使用第4列和第5列作爲參考文件(我將使用3和4),第6和第7列作爲第二個文件(我將使用第5列和第6列)。 – Svalf

+0

我使用GNU Awk 4.1.3,該腳本正常工作,您的版本是什麼? 腳本使用索引4和5從參考文件中提取數據,因爲分隔符'[「,] *'也匹配行首的第一個''',所以awk變量'$ 1'是空的。 – oliv

+0

我使用Terminal從Mac OS X連接到Linux,並且使用的是2.6.32-358.23.2.el6.x86_64(gcc版本4.4.7 20120313)版本。 – Svalf