開いている複数のファイルからリストを作成しようとしていますが、問題があります。ファイルごとに 2 つの個別のリストを作成する必要があります。現在、私のコードは、反復処理された最後のファイルに対して 2 つのリストのみを作成します。「file_list」内の各ファイルに対して一意の「sample_genes」と「sample_values」を修正して作成するための提案はありますか?
あるいは、すべてのファイルから「gene_names」とすべてのファイルから「sample_values」の単一の統合リストを作成することも同様に機能します。
# Parse csv files for samples, creating lists of gene names and expression values.
file_list = ['CRPC_278.csv', 'PCaP_470.csv', 'CRPC_543.csv', 'PCaN_5934.csv', 'PCaN_6102.csv', 'PCaP_17163.csv']
des_list = ['a', 'b', 'c', 'd', 'e', 'f']
for idx, (f_in, des) in enumerate(zip(file_list, des_list)):
with open(f_in) as des:
cread = list(csv.reader(des, delimiter = '\t'))
sample_genes = [i for i, j in (sorted([x for x in {i: float(j)
for i, j in cread}.items()], key = lambda v: v[1]))]
sample_values = [j for i, j in (sorted([x for x in {i: float(j)
for i, j in cread}.items()], key = lambda v: v[1]))]
# Compute row means.
mean_values = [((a + b + c + d + e + f)/len(file_list)) for i, (a, b, c, d, e, f) in enumerate(zip(sample_1_values, sample_2_values, sample_3_values, sample_4_values, sample_5_values, sample_6_values))]
# Provide proper gene names for mean values and replace original data values by corresponding means.
sample_genes_list = [i for i in sample_1_genes, sample_2_genes, sample_3_genes, sample_4_genes, sample_5_genes, sample_6_genes]
sample_final_list = [sorted(zip(sg, mean_values)) for sg in sample_genes_list]
以下の新しいコード:
# Parse csv files for samples, creating lists of gene names and expression values.
file_list = ['CRPC_278.csv', 'PCaP_470.csv', 'CRPC_543.csv', 'PCaN_5934.csv', 'PCaN_6102.csv', 'PCaP_17163.csv']
full_dict = {}
for path in file_list:
with open(path) as stream:
data = list(csv.reader(stream, delimiter = '\t'))
data = sorted([(i, float(j)) for i, j in data], key = lambda v: v[1])
sample_genes = [i for i, j in data]
sample_values = [j for i, j in data]
full_dict[path] = (sample_genes, sample_values)
ディクショナリ内のディクショナリをアンパックした結果は、いくつかの深いネスト構造を示しています。
for key in full_dict:
value = full_dict[key]
for key in full_dict[key]:
for idx, items in enumerate(key):
print idx