- 論壇徽章:
- 0
|
本帖最后由 Hadron74 于 2016-04-26 08:30 編輯
一看你也是學(xué)生物信息的。
按我的理解,dat1的列應(yīng)該對(duì)應(yīng)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"])
復(fù)制代碼- 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
復(fù)制代碼 錯(cuò)別字太多了,看著費(fèi)勁。 |
|