对几个python脚本的解释

2024-10-02 18:27:02 发布

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

我刚刚开始学习python来解析一些变量调用格式(variant calling format,VCF)。一个简短的文件格式如下(来自wiki):

我从here看到的线条是:

alleles = set(reduce(lambda x,y:x+y,[re.split('[/|]',v['GT']) for v in indiv_gt.values()]))
    if len(alleles) == 1:
        return 0
    if len(alleles) > 2:
        return None 

我正在努力理解这个“等位基因=…”

我的理解是首先迭代字典中的值,这些值将是一堆基因型,如“1/1”、“2/2”或“1/0”。你知道吗

那么重新拆分将这些基因型捕获包含“/”|“并分裂,使1/1变为1,1/0变为1/0,依此类推。但我不太确定,在正则表达式中“|”是否应该有不同的含义,如果使用它,它应该带有一个转义符号,我想它在搜索模式中应该是“/\ |”之类的,为什么在搜索模式中有一个[]?你知道吗

然后是reduce lambda函数,它是否打算在分割ted之后加入所有的“0s,1s,2s”?或者把0,1,2加起来?你知道吗

最后使用set函数,所以最后只保存唯一的字符。你知道吗

这是有意义的,因为如果所有字符都是0s、1s或2s,那么它将返回0

我希望我的问题对你们有点意义。我现在很困惑。你知道吗

最好的


Tags: lambda函数reducelenreturnif格式模式
1条回答
网友
1楼 · 发布于 2024-10-02 18:27:02
  1. 在正则表达式中,字符|表示“或”,但仅当在字符子集外使用时。在括号里,它只是指它自己,不需要逃避。写[/|]意味着“要么|,要么/”。

  2. reduce将以x等于序列的第一个元素开始,然后重复执行x = f(x, y),其中f是reduce函数参数。在Python中,+操作符可以同时处理数字(加法)或字符串(串联)。这意味着用lambda x,y:x+y减少字符串列表将连接它们,而减少数字列表将计算总和。

相关问题 更多 >