Я попытался сделать определение в Python, которое позволит мне получить индекс определенных столбцов в файле. Функция работает, когда я вызываю ее в первый раз, но после этого она возвращает пустые списки.
Это тестовые данные, которые я использовал:
ChrPos,C1P1,C1P2,C1P3,C1P4,C2P1,C2P2,C2P3,C2P4,C3P1,C3P2,C3P3,C3P4
P1,TT,TT,TT,TT,TT,CC,TT,TT,TT,TT,AA,GG
P2,TT,TT,TT,TT,TT,TT,TT,TT,TT,TT,GG,GG
P3,TT,TT,TT,TT,TT,CT,TT,TT,TT,TT,TT,TT
P4,TT,TT,TT,TT,GG,GG,GG,GG,GG,GG,TT,TT
A1,TT,TT,TT,TT,TT,TT,TT,TT,AA,TT,AA,AA
A2,TT,TT,TT,TT,TT,TT,TT,TT,TT,TT,GG,GG
A3,TT,TT,TT,TT,TT,TT,TT,TT,TT,AA,TT,TT
A4,TT,TT,TT,TT,TT,TT,TT,TT,TT,TT,TT,TT
B1,TT,TT,TT,TT,TT,TT,TT,CC,TT,TT,TT,TT
B2,AA,AA,AA,AA,AA,AA,AA,AA,AA,AA,GG,GG
B3,TT,TT,TT,TT,TT,TT,TT,CC,TT,TT,AA,AA
B4,AA,AA,AA,AA,AA,AA,AA,AA,AA,AA,GG,GG
Это код, который я использовал:
#! /usr/bin/env python3
import re
InFileName = "~/scripts/test_devide.csv"
InFile = open(InFileName, 'r')
def get_columns(InFile, Chr_Number):
line_count = 0
for line in InFile:
if line_count == 0:
line = line.strip('\n')
element_list = line.split(',')
index_chr = [i for i, element in enumerate(element_list) if re.search('C%d.*' % (Chr_Number), element)]
return index_chr
chr1_index = get_columns(InFile,1)
chr2_index = get_columns(InFile,2)
chr3_index = get_columns(InFile,3)
print(chr1_index,chr2_index,chr3_index)
Вывод:
[1, 2, 3, 4] [] []
Я намеревался использовать определение, чтобы найти индекс всех заголовков столбцов, начинающихся с "C1" (хромосома 1), и использовать этот индекс длязапишите эти столбцы в отдельный файл. И сделать это для нескольких хромосом (C2, C3 и т. Д.).