我刚刚开始学习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
我希望我的问题对你们有点意义。我现在很困惑。你知道吗
最好的
在正则表达式中,字符
|
表示“或”,但仅当在字符子集外使用时。在括号里,它只是指它自己,不需要逃避。写[/|]
意味着“要么|
,要么/
”。reduce
将以x
等于序列的第一个元素开始,然后重复执行x = f(x, y)
,其中f
是reduce函数参数。在Python中,+
操作符可以同时处理数字(加法)或字符串(串联)。这意味着用lambda x,y:x+y
减少字符串列表将连接它们,而减少数字列表将计算总和。相关问题 更多 >
编程相关推荐