2016-11-19 6 views
0

У меня есть 6 текстовых файлов (каждый из которых соответствует конкретному образцу) и каждый файл выглядит следующим образом:создать матрицу с помощью питона

Gene_ID Gene_Name Strand Start End Length Coverage FPKM TPM 
ENSMUSG00000102735 Gm7369 + 4610471 4611406 936 0 0 0 
ENSMUSG00000025900 Rp1 - 4290846 4409241 10926 0 0 0 
ENSMUSG00000104123 Gm37483 - 4363346 4364829 1484 0 0 0 
ENSMUSG00000102175 Gm6119 - 4692219 4693424 1206 0.328358 0.015815 0.008621 

Я хочу, чтобы собрать все элементы из 1 & 2 колонки в одном файле и соответствующие значения TPM (девятая столбцов) для каждого образца в новом файле, поэтому везде, где нет значения ТОГО не введите 0.

Моего выходной файл должен выглядеть следующим образом:

gene_id gene_name sample1_tpm sample2_tpm sample3_tpm ......sample6_tpm 

ответ

0

Один в y, чтобы сделать это, держите один словарь, который хранит образцы значений для каждого gene_id.

словарь Initialize = {}

Итерация по каждому из 6 файлов и сделать:

for file in [f1,f2,f3..f6]: 
    for line in file: 
     labels = line.split(" ") 
     val = 1 if labels[8] else 0 
    if labels[0] not in dictionary: 
     dictionary[labels[0]] = {'name' : labels[1], 'sample' : [val]}    
    else: 
     dictionary[labels[0]]['sample'].append(val) 

Это будет хранить ключи как gene_id и имя, образец (список 6 sample_ids) в качестве значений.

Теперь вы можете писать в выходной файл, просто повторяя ключи и значения.

f = open("output.txt","w+") 
f.write("gene_id,gene_name,sample1,sample2,sample3,sample4,sample5,sample6\n") 
for key in dictionary.keys(): 
    samples = ",".join(dictionary[key]['sample']) 
    f.write(dictionary[key]+","+dictionary[key]['name']+","+samples+"\n") 
f.close() 
Смежные вопросы