有助于解析来自国际癌症基因组联盟数据发布的ssm数据的工具,特别是简单的体细胞突变聚集。

ICGC-data-parser的Python项目详细描述


什么是icgc数据解析器?

Documentation Status

一个简化国际癌症基因组数据解析的库 财团数据发布,特别是简单的体细胞突变 聚合。

教程

安装

通过PyPI

安装
$ pip install ICGC_data_parser

数据下载

脚本的基础数据是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笔记本,它们精心制作 关于例子。此外,在笔记本上还演示了 管理与格式错误输入有关的常见分析错误 文件夹。

meta

作者Ad115- Github- a.garcia230395@gmail.com

项目页Docs-@GitHub-@PyPI

根据麻省理工学院的许可证发行。见 LICENSE用于 更多信息。

贡献

  1. 检查未解决的问题或打开新问题以开始讨论 围绕一个功能想法或一个bug。
  2. 叉子the repository 在github上开始对功能分支进行更改,派生 来自master分支。
  3. 编写一个测试,显示错误已被修复或功能 按预期工作。
  4. 发送一个pull请求并对维护程序进行bug操作,直到它被合并并 出版。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
主类中的java访问方法   Javalog4j不读取它的log4j。属性文件   雅加达ee通过Java(web应用程序)使用iText/任何其他使用现成数据的库生成PDF报告   lua使用java阅读TeamSpeak 3消息   将日期转换为BST java   java Spring引用ProxyFactoryBean中带有ref的protoyype bean   如何使java只打印一条带有if语句的消息   java如何通过JavaMail从雅虎服务器发送电子邮件?   使用百分比和BigDecimal的java测试   java如何对字符串数组排序   java验证器+MVC+REST::更新问题   java如何阻止eclipse如此频繁地挂起?   java从AsyncTask(片段内)访问TextView   IDEJava:制作可调整大小和拖动的组件