有助于解析来自国际癌症基因组联盟数据发布的ssm数据的工具,特别是简单的体细胞突变聚集。
ICGC-data-parser的Python项目详细描述
教程
数据下载
脚本的基础数据是icgc对 体细胞突变数据。可使用
wget https://dcc.icgc.org/api/v1/download?fn=/current/Summary/simple_somatic_mutation.aggregated.vcf.gz
要了解此文件的更多信息,请阅读About the ICGC’s simple somatic mutations file
警告:当前发布的数据包含格式错误的 使用IndexError:
导致库崩溃的头--------------------------------------------------------------------------- ValueError Traceback (most recent call last) ~/.local/lib/python3.6/site-packages/vcf/parser.py in _parse_info(self, info_str) 389 try: ... ... ... 362 def _parse_info(self, info_str): ValueError: could not convert string to float: 'PCAWG'
这是由于 VCF文件。若要解决此问题,请在创建 SSM_Reader对象(读取程序位于reader 变量)
# Fix weird bug due to malformed description headersreader.infos['studies']=reader.infos['studies']._replace(type='String')
在未来,这将以更优雅的方式解决,但是 现在这就是我们所拥有的。
使用量
项目中的主要类是SSM_Reader。 它允许轻松读取icgc突变文件:
>>>fromICGC_data_parserimportSSM_Reader# Reads also compressed files!>>>reader=SSM_Reader(open('data/simple_somatic_mutations.aggregated.vcf.gz'))# or...>>>reader=SSM_Reader(filename='data/simple_somatic_mutations.aggregated.vcf.gz')# ^^^^^^^^# The filename keyord argument is important, else we get an IndexError
第SSM_Reader.parse 方法允许遍历文件的记录并访问部分 记录在案。您还可以指定正则表达式来仅筛选 您需要的行:
# Print only the mutations that are in the# European Union Breast Cancer project (BRCA-EU).>>>forrecordinreader.parse(filters=['BRCA-EU']):...print(record.ID,record.CHROM,record.POS)MU668655181100141201MU654878751100160548MU662811181100638179MU662541201101352655...
信息字段是特殊的,因为它包含几个 子字段,这些子字段可以是列表形式的条目,包含更多 子字段本身(特别是结果和发生 子字段):
# The subfields of the INFO field:>>>next(reader).INFO{'CONSEQUENCE':['||||||intergenic_region||','CD1A|ENSG00000158477|+|CD1A-001|ENST00000289429||upstream_gene_variant||'],'OCCURRENCE':['ESAD-UK|1|301|0.00332','EOPC-DE|1|202|0.00495','BRCA-EU|1|569|0.00176'],'affected_donors':3,'mutation':'T>A','project_count':3,'studies':None,'tested_donors':12068}
# The description of the CONSEQUENCE subfield>>>print(reader.infos['CONSEQUENCE'].desc)MutationconsequencepredictionsannotatedbySnpEff(subfields:gene_symbol|gene_affected|gene_strand|transcript_name|transcript_affected|protein_affected|consequence_type|cds_mutation|aa_mutation)
# The description of the OCCURRENCE subfield>>>print(reader.infos['OCCURRENCE'].desc)Mutationoccurrencecountsbrokendownbyproject(subfields:project_code|affected_donors|tested_donors|frequency)
有时我们还想解析这些子字段中的信息。为了 为此,SSM_Reader.subfield_parserfactory方法是 有用。此方法创建指定子字段的分析器 允许轻松访问数据:
# Create the subfield parser for the CONSEQUENCE subfield>>>consequences=reader.subfield_parser('CONSEQUENCE')>>>forrecordinreader.parse():...# Which genes are affected?...genes_affected={c.gene_symbol...forcinconsequences(record)...ifc.gene_affected}......print(f'Mutation: {record.ID}')...print('\t',", ".join(genes_affected))Mutation:MU93246178TPM3Mutation:MU66962994RP11-350G8.9,SHEMutation:MU93246498DCST1,ADAM15,RP11-307C12.11Mutation:MU66377106EFNA3,ADAM15,EFNA4...
库中还包含一些用于操作VCF文件的帮助脚本 (类似于icgc突变文件):
- vcf_map_assembly.py:创建一个新的vcf,其位置映射到 另一个基因组组合。这很有用,因为当前的位置 icgc报告的是人类基因组集合grch37,而最近的 (也是世界上其他国家使用的)是GRCH38大会。
- vcf_sample.py:用 原版的。突变是随机抽样的,但保持了它们的顺序 原始文件。如果要对 数据,但仍希望结果能代表所有 突变。
- vcf_split.py:将输入vcf拆分为多个(也是有效的vcf)。 如果你想把分析分成过程,这是很有用的 他们每人收到一份文件。
脚本的特定文档可以通过执行获得:
$ python3 <script name>.py --help
此外,图书馆还附带了一些Jupyter笔记本,它们精心制作 关于例子。此外,在笔记本上还演示了 管理与格式错误输入有关的常见分析错误 文件夹。
贡献
- 检查未解决的问题或打开新问题以开始讨论 围绕一个功能想法或一个bug。
- 叉子the repository 在github上开始对功能分支进行更改,派生 来自master分支。
- 编写一个测试,显示错误已被修复或功能 按预期工作。
- 发送一个pull请求并对维护程序进行bug操作,直到它被合并并 出版。