- 论坛徽章:
- 0
|
本帖最后由 Hadron74 于 2016-04-26 08:30 编辑
一看你也是学生物信息的。
按我的理解,dat1的列应该对应dat2的行吧,所以你的输出格式的例子有误。
如果这样,程序如下:- dat1 = """ind1 2202220
- ind2 2222002
- ind3 2222002
- ind4 1221102
- ind5 2222002
- ind6 2212111
- ind7 2202210
- ind8 1221102
- ind9 2222002
- ind10 2222002"""
- dat2 = """snp1,A,C
- snp2,A,G
- snp3,A,G
- snp4,T,C
- snp5,T,C
- snp6,T,C
- snp7,A,G"""
- snps = []
- for line in dat2.split("\n"):
- snp,a0,a2=line.rstrip().split(",")
- snps.append((a0,a2))
- d1={}
- import re
- for line in dat1.split("\n"):
- ind,values =re.split("\s+",line.rstrip())
- bases = []
- for i, v in enumerate(values):
- s = snps[i]
- if v == "1":
- bases.append(s[0])
- bases.append(s[1])
- elif v == "2":
- bases.append(s[1])
- bases.append(s[1])
- elif v == "0":
- bases.append(s[0])
- bases.append(s[0])
- else:
- raise ValueError("Not valid number: " + v)
- d1[ind]=bases
- print "ind1"," ".join(d1["ind1"])
- print "ind2"," ".join(d1["ind2"])
复制代码- ind1 C C G G A A C C C C C C A A
- ind2 C C G G G G C C T T T T G G
复制代码 错别字太多了,看着费劲。 |
|