我新的Python和我製備的腳本,將相應地修改以下csv file分割行分成多個小區,並保持第二值的最大值爲每個基因
:
1)中的每一行包含由分隔的多個基因的條目///
如:
C16orf52 /// LOC102725138 1.00551
應該被變換爲:
C16orf52 1.00551
LOC102725138 1.00551
2)同一個基因可能有不同的比例值
AASDHPPT 0.860705
AASDHPPT 0.983691
,我們希望只保留對具有最高比值(刪除對AASDHPPT 0.860705
)
這裏是我寫的劇本但它不會將正確的比率值分配給基因:
import csv
import pandas as pd
with open('2column.csv','rb') as f:
reader = csv.reader(f)
a = list(reader)
gene = []
ratio = []
for t in range(len(a)):
if '///' in a[t][0]:
s = a[t][0].split('///')
gene.append(s[0])
gene.append(s[1])
ratio.append(a[t][1])
ratio.append(a[t][1])
else:
gene.append(a[t][0])
ratio.append(a[t][1])
gene[t] = gene[t].strip()
newgene = []
newratio = []
for i in range(len(gene)):
g = gene[i]
r = ratio[i]
if g not in newgene:
newgene.append(g)
for j in range(i+1,len(gene)):
if g==gene[j]:
if ratio[j]>r:
r = ratio[j]
newratio.append(r)
for i in range(len(newgene)):
print newgene[i] + '\t' + newratio[i]
if len(newgene) > len(set(newgene)):
print 'missionfailed'
非常感謝您的任何幫助或建議。
嗨馬諾利斯,可能是你應該瞭解[如何創建一個最小的,完整的,並且可驗證的示例](https://stackoverflow.com/help/mcve) – danihp
我覺得你非常可能要將基因存儲在一個字典中,當分配值時,如果該鍵退出,則忽略它是否不大於當前值。 – Peter