Проблема:
У меня есть списки генов, экспрессирующихся в 53 различных тканях. Первоначально эти данные хранились в максимальном наборе генов с «NaN», где не было экспрессии. Я пытаюсь создать новые списки для каждой ткани, в которой просто экспрессированы гены, поскольку было очень неэффективно искать в этом массиве каждый раз, когда я запускал свой скрипт. У меня есть код, который находит нужные гены для каждой ткани, но я не знаю, как сохранить вывод.
Я использовал фрейм данных pandas, а затем конвертировал в csv. Но это не принимает списки различной длины, если только я не поставлю этот список как один элемент. Однако затем, когда я сохраняю кадр данных в csv, он пытается сжать этот очень длинный список (все гены, экспрессированные для одной ткани) в одну ячейку. Я получаю сообщение об ошибке длины строки, превышающей ограничение на количество символов в ячейке Excel.
Поэтому мне нужен способ либо справиться с этим ограничением, либо по-другому построить свои списки. Я бы предпочел иметь один файл для всех списков.
Мой код:
import csv
import pandas as pd
import math
import numpy as np
#Import list of tissues:
df = pd.read_csv(r'E-MTAB-5214-query-results.tsv', skiprows = [0,1,2,3], sep='\t')
tissuedict=df.to_dict()
tissuelist = list(tissuedict.keys())[2:]
all_genes = [gene for key,gene in tissuedict['Gene Name'].items()]
data = []
for tissue in tissuelist:
#Create array to keep track of the protein mRnaS in tissue that are not present in the network
#initiate with first tissue, protein
nanInd = [key for key,value in tissuedict[tissue].items() if math.isnan(value)]
tissueExpression = np.delete(all_genes, nanInd)
datatis = [tissue, tissueExpression.tolist()]
print(datatis)
data.append(datatis)
print(data)
df = pd.DataFrame(data)
df.to_csv(r'tissue_expression_data.csv')
Ссылка на данные (любой):
https://github.com/joanna-lada/gene_data/blob/master/E-MTAB-5214-query-results.tsv
https://raw.githubusercontent.com/joanna-lada/gene_data/master/E-MTAB-5214-query-results.tsv