csv リーダー オブジェクトを 2 回読み取ると、「IndexError: リスト インデックスが範囲外です」というエラーが発生します。現在、オブジェクトを繰り返し処理して辞書を作成していますが、同様のリストを作成しようとすると失敗します。簡潔にするために、他のコード ブロックは省略されています。関連するコードは次のとおりです。
# Parse csv files for samples, creating a dictionary of key, value pairs and multiple lists.
with open('genes.csv') as f:
cread = csv.reader(f, delimiter = '\t')
sample_1_dict = {i: float(j) for i, j in cread}
sample_1_list = [x for x in sample_1_dict.items()]
sample_1_genes_sorted = sorted(sample_1_list, key=lambda expvalues: expvalues[0])
sample_1_values_sorted = sorted(sample_1_list, key=lambda expvalues: expvalues[1])
sample_1_genes = [i for i, j in sample_1_values_sorted]
sample_1_values = [j for i, j in sample_1_values_sorted]
sample_1_graph_un = [float(j) for i, j in cread]
...
sample_values_list = [i for i in sample_1_graph_un, sample_2_graph_un, sample_3_graph_un, sample_4_graph_un, sample_5_graph_un, sample_6_graph_un]
sample_graph_list_un = [[i for i in sample_value] for sample_value in sample_values_list]
colors = 'bgrcmy'
alphas = ['0.5', '0.5', '0.5', '0.5', '0.5', '0.5']
labels = ['278', '470', '543', '5934', '6102', '17163']
for graph, color, alpha, label in zip(sample_graph_list_un, colors, alphas, labels):
plt.hist(graph, bins = 21, histtype = 'stepfilled', normed = True, color = color, alpha = float(alpha), label=label)
私は csv ファイルを再度開くことに頼っていますが、次のコードは機能します。
# Parse csv files for samples, creating a dictionary of key, value pairs and multiple lists.
with open('genes.csv') as f:
cread = csv.reader(f, delimiter = '\t')
sample_1_dict = {i: float(j) for i, j in cread}
sample_1_list = [x for x in sample_1_dict.items()]
sample_1_genes_sorted = sorted(sample_1_list, key=lambda expvalues: expvalues[0])
sample_1_values_sorted = sorted(sample_1_list, key=lambda expvalues: expvalues[1])
sample_1_genes = [i for i, j in sample_1_values_sorted]
sample_1_values = [j for i, j in sample_1_values_sorted]
...
with open('genes.csv') as f:
cread = csv.reader(f, delimiter = '\t')
sample_1_graph_un = [float(j) for i, j in cread]
sample_values_list = [i for i in sample_1_graph_un, sample_2_graph_un, sample_3_graph_un, sample_4_graph_un, sample_5_graph_un, sample_6_graph_un]
sample_graph_list_un = [[i for i in sample_value] for sample_value in sample_values_list]
colors = 'bgrcmy'
alphas = ['0.5', '0.5', '0.5', '0.5', '0.5', '0.5']
labels = ['278', '470', '543', '5934', '6102', '17163']
for graph, color, alpha, label in zip(sample_graph_list_un, colors, alphas, labels):
plt.hist(graph, bins = 21, histtype = 'stepfilled', normed = True, color = color, alpha = float(alpha), label=label)
各コード例の違いは、2 つの 'with' ブロックのいずれかの次のステートメントの場所です。
sample_1_graph_un = [float(j) for i, j in cread]