遇到一个问题是需要将文件按照染色体编号和位置编号进行排序,在shell中我们可以使用sort -V -k2,3 annovar.xls这种方式来进行排序,而在python中如果想要进行多行排序,就需要sort的key参数指定的函数返回一个元组或者列表来进行排序。
现在我们有一个染色体位置文件如下:
如果想要对上述的文件进行排序,那么key函数就可以像下面这样写:
def chrome_sort(key):
'''
染色体排序
'''
if key[0] == 'X':
chrome = 24
elif key[0] == 'Y':
chrome = 25
else:
chrome = int(key[0])
position = int(key[1])
return (chrome,position)
使用这个函数,我们就可以将包含文件每一行的列表进行排序了,完整代码如下:
#!/usr/bin/env python
# -*- coding=utf-8 -*-
import sys
import os
def chrome_sort(key):
'''
染色体排序
'&#