у меня есть два файла, которые выглядят так:Удалить ОНП с неправильными аллелями
Эталонный панель (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
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
БИМ файл (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
Keep только следующие строки:
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)
Но я застрял здесь. Я надеюсь, что кто-то может мне помочь. Спасибо заранее!
Спасибо за быстрый ответ Oliv. Я весьма признателен! Однако я получаю синтаксическую ошибку, используя эту команду. Я думаю, что есть что-то не так/нет между [$ 4] [$ 5], а также между [$ 6] [$ 7]. Более того, я не понимаю, почему вы используете столбцы 4 и 5 для ссылочного файла (я бы использовал 3 и 4) и 6 и 7 для второго файла (я бы использовал столбцы 5 и 6). – Svalf
Я использую GNU Awk 4.1.3, и этот скрипт отлично работает, какова ваша версия? Сценарий использует индексы 4 и 5 для извлечения данных из ссылочного файла, поскольку разделитель '[',] *' также соответствует первому '' 'в начале строки, поэтому переменная awk' $ 1' пуста. – oliv
Я подключаюсь к Linux из Mac OS X с помощью Terminal, и я использую версию 2.6.32-358.23.2.el6.x86_64 (gcc версия 4.4.7 20120313). – Svalf