Почему мое определение в Python работает только один раз, а затем возвращает пустые списки? - PullRequest
0 голосов
/ 01 ноября 2019

Я попытался сделать определение в 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 и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...