此工具可以用微基因微解读给出的用户单倍群数据提取出母系单倍群并将其切割,切割出的上游结果以列表形式返回。
此段代码是利用re模块进行单倍群切割的,所以
import re微基因官方是以json形式给出的用户单倍群信息,所以
import sys
import jsonbody = sys.stdin.read()
inputs = json.loads(body)['inputs']haplogroup = inputs['haplogroup']
mtdic = haplogroup['mt']
MT = mtdic['haplogroup']letter_group = re.split("\d",MT)
number_group = re.split('\D',MT)如果说用户的母系单倍群是A8a2a那么输出结果如下
['A', 'a', 'a'] ['', '8', '2', '']如果说用户的母系单倍群是A8那么输出结果如下
['A', ''] ['', '8']如果说用户的母系单倍群是A那么输出结果如下
['A'] ['', '']如果说用户的母系单倍群是A15c那么输出结果如下
['A', '', 'c'] ['', '15', '']Simple_MT1 = letter_group[0] #如A,B,C......
number1 = number_group[1]
letter1 = letter_group[1]
Simple_MT2 = Simple_MT1 + number1 #如A8,B4,C4......
Simple_MT3 = Simple_MT2 + letter1 #如A8a,B4a......
Simple_MT = [Simple_MT1,Simple_MT2,Simple_MT3]return Simple_MTimport sys
import json
from split_MT import split_mt
body = sys.stdin.read()
inputs = json.loads(body)['inputs']
split_mt()| 原始单倍群 | 输出结果 | 备注 |
|---|---|---|
| A | 报错 | 事先将只有一个字母的结果处理好即可 |
| A8 | ['A', 'A8', 'A8'] | -- |
| A8a2a | ['A', 'A8', 'A8a'] | -- |
| A2ab | ['A', 'A2', 'A2ab'] | -- |
| M80'D | 报错 | 事先将带其他除数字和字母的字符串进行处理 |