【发布时间】:2019-04-29 15:58:50
【问题描述】:
我有三个嵌套字典:data_geo1、data_geo2、data_ali,它们都由两个键和一个值组成。目标是相互比较这些值。字典的第一个键是一样的,但第二个,其中 30 个与第一个字典共享,其中 20 个与第二个字典共享!不幸的是,键的方向彼此不同。目标是使用 matplotlib 和 numpy 数组创建散点图,以将第一个和第二个字典与 data_ali 中的数据进行比较。有点复杂,不知道从何说起!下面是我写的用于创建字典的内容:
import os
import numpy as np
path = "/home/ali/Desktop/data/"
root = "/home/ali/Desktop/SAMPLES/"
data_geo1={}
with open(path+"GSE98212_H_DE_genes_count.txt","rt") as fin: #data for sample 1-30
h = fin.readline()
sample1 = h.split()
sample_names = [s.strip('"') for s in sample1[1:31]]
for l in fin.readlines():
l = l.strip().split()
if l:
gene= l[0].strip('"')
data_geo1[gene] = {}
for i, x in enumerate(l[1:31]):
data_geo1[gene][sample_names[i]] = int(x)
#print(data_geo1)
data_geo2={}
with open (path+"GSE98212_L_DE_genes_count.txt","rt") as fin:
h= fin.readline()
sample2=h.split()
sample_names=sample2[1:21]
for l in fin.readlines():
l = l.strip().split()
if l:
gene= l[0].strip()
data_geo2[gene]={}
for i,x in enumerate (l[1:21]):
data_geo2[gene][sample_names[i]]= int(x)
#print(data_geo2)
data_ali={}
for sample_name in os.listdir(root):
with open(os.path.join(root, sample_name, "counts.txt"), "r") as fin:
for line in fin.readlines():
gene, reads = line.split()
reads = int(reads)
if gene.startswith('ENSG'):
data_ali.setdefault(gene, {})[sample_name] = reads
#print(data_ali)
每个字典结构的例子:
data_geo1:{'ENSG00000110514':{'Sample_19-leish_023_v2':709,'Sample_4-leish_012_v3':501,'Sample_25-leish027_v2':690,'Sample_6-leish_015_v3':27070,'Sample_6-leish_015_v3':27070 , 'Sample_20-leish_023_v3': 619, 'Sample_18-leish_022_v3': 678, 'Sample_10-leish_017_v3': 477, 'Sample_13-leish_019_v2': 460, 'Sample_1-Leish_011_v2': 574, 'Sample_11-leish_018_v2': 566, ' Sample_3-leish_012_v2': 632, 'Sample_2-leish_011_v3': 388, 'Sample_29-leish032_v2': 661, 'Sample_8-leish_016_v3': 372, 'Sample_28-leish028_v3': 533, 'Sample_27-leish028_v2': 582, 'Sample_26- leish027_v3': 624, 'Sample_12-leish_018_v3': 653, 'Sample_5-leish_015_v2': 421, 'Sample_16-leish_021_v3': 376, 'Sample_21-leish_024_v2': 668, 'Sample_9-leish_017_v2': 583, 'Sample_24-leish026_v3' :590,'sampe_22-leish_024_v3':537,'sample_14-leish_019_v3':438,'sample_30-leish032_v3':494,'sample_7-leish_016_v2':518,sample_15-leish_15-leish_15-leish_17.17; }
data_geo2:{'ENSG00000110514': {'Sample_19': 518, 'Sample_10': 468, 'Sample_20': 517, 'Sample_9': 431, 'Sample_8': 522, 'Sample_7': 437, 'Sample_6' :491,'Sample_5':461,'Sample_4':442,'Sample_3':667,'Sample_2':438,'Sample_1':378,'Sample_14':345,'Sample_13':424,'Sample_18':570 , 'Sample_15': 492, 'Sample_16': 486, 'Sample_12': 401, 'Sample_17': 489, 'Sample_11': 464}
data_ali: 'ENSG00000110514': {'Sample_19-leish_023_v2': 710, 'Sample_16-leish_021_v3': 380, 'Sample_20': 517, 'Sample_24-leish026_v3': 593, 'Sample_16-leish_01': 593, 'Sample_16-leish_01' -leish_018_v3':661,'sample_22-leish_024_v3':539,'sample_23-leish026_v2':710,'sample_25-leish027_v2':689:689,'sample_18-leish_18-leish_0222_v3'sample_________3':681':681,14.14'' 394, 'Sample_13-leish_019_v2': 464, 'Sample_1-Leish_011_v2': 574, 'Sample_11-leish_018_v2': 571, 'Sample_20-leish_023_v3': 625, 'Sample_3-leish_012_v2': 637, 'Sample_10-leish_017_v3': 479, 'Sample_7':436,'Sample_29-leish032_v2':659,'Sample_8-leish_016_v3':375,'Sample_6':492,'Sample_7-leish_016_v2':517,'Sample_9':432,'Sample_8_2':52 -leish028_v2':584,'Sample_26-leish027_v3':629,'Sample_5':460,'Sample_4':441,'Sample_3':668,'Sample_19':516,'Sample_1':378,'Sample_2':437, 'Sample_9-leish_017_v2':582,'Sample_5-leish_015_v2':421,'Sample_4-leish_012_v3':502,'Sample_21-leish_024_v2':670, 'Sample_18':573,'Sample_13':426,'Sample_12':403,'Sample_11':463,'Sample_10':466,'Sample_17':488,'Sample_16':487,'Sample_15':490,'Sample_1 -leish_019_v3':441,'Sample_30-leish032_v3':497,'Sample_28-leish028_v3':542,'Sample_15-leish_021_v2':837,'Sample_17-leish_022_v2':747}
【问题讨论】:
标签: python numpy dictionary matplotlib nested