Python比较CSV-fi的值

2024-09-21 10:58:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些问题要对Python进行分析。在

我有一个sep标签页。我有几个序列。对于每个序列,我可以有相同的基因。但另一个值(这里是TPM,即百万分之一生物材料的转换率)。在

对于相同的序列,我想保存TPM值最低的基因。在

我的数据示例:

geneschr开始和结束日志2

Cd74chr18 60949182 609493654.253037

GAP6chr18 60949182 6094936510.590838

Rps14chr18 60949182 6094936512.590838

Mynn chr3 30500160 30500343 3.409878

川地74 chr16 96205452 96205635 6.105927

例如:

前3个序列相同,但有不同的注释基因(不同的TPM)。在

对于这个序列,我想保存具有最小TPM值的序列。在

有时我有一个不同的序列,有相同的最接近注释的基因(Cd74)。有相同的TPM。这里我想用2个TPM值来保存这两个序列,因为它们是不同的序列。在

期望输出:

基因

Cd74 chr18 60949182 609493654.253037

Mynn chr3 30500160 305003433.409878

Cd74 chr16 96205452 96205635 6.105927

对于前3个序列,只有Cd74是保守的,因为这个序列是TPM值最低的基因。在

坐标是我的序列的坐标,不是基因的坐标。这个序列用最接近的基因注释。 每个基因都有一个TPM值。所以我可以用相同的最接近的基因和相同的TPM值得到几个唯一的序列,我想把它们都保留下来。但是对于相同的序列,不同的注释基因,我想保持最低的TPM值的基因。在

我希望我清楚了,谢谢你。在

最佳


Tags: 数据示例基因生物序列标签sep材料
1条回答
网友
1楼 · 发布于 2024-09-21 10:58:15

我不知道你想要什么。但是你尝试了什么?你在等我们做作业吗?这就是这个问题被否决的原因吗?在

无论如何,我可能会从类似的东西开始,尽管这既没有优化内存也没有优化CPU。如果您的数据集有无数行,这将不适合。在

算法: 1保留“start”和“end”的所有不同值; 2当“开始”和“结束”相同时,保持最低TPM

import csv
#initiazing
columns = ['start','end','TPM','chr','genes']
keptValues = {}
for c in columns:
    keptValues[c]=[]
################    
def add(k,r):
    for c in columns:
        form = determineFormat(c)
        k[c].append(form(r[c]))
##################
def replace(i,k,r):
    #print('debug: ',i,k,r)
    for c in columns:
        form = determineFormat(c)
        k[c][i] = form(r[c])
#################        
def determineFormat(s):
    if s=='start' or s=='end':
        form = int
    elif s=='TPM':
        form = float
    else:
        form = str
    return form
#################    
with open('bioinfo.csv', 'r') as f:
    reader = csv.DictReader(f)
    for row in reader:
        if int(row['start']) in keptValues['start'] :
            ind = keptValues['start'].index(int(row['start']))
            if keptValues['end'][ind]==int(row['end']):
                if keptValues['TPM'][ind]>float(row['TPM']):
                    replace(ind,keptValues,row)
            else:
                add(keptValues,row)
        else:
            add(keptValues,row)

相关问题 更多 >

    热门问题