注释灵活集成软件

sofia的Python项目详细描述


[![构建状态](https://travis-ci.org/childsish/sofia.svg?branch=master)](https://travis ci.org/childsish/sofia)


sofia
==


用于灵活集成注释的软件(sofia)是一个框架,旨在使来自多个来源的信息的集成尽可能简单、轻松。这是通过使用工作流引擎实现的,该引擎能够自动解析致力于从父模板实现特定目的的工作流。实际上,这意味着用户只需要提供他们希望从中提取信息的资源以及他们希望与其资源关联的实体,框架将完成其余工作。

默认情况下,Vanilla Sofia带有基因组学工作流,能够进行注释。ng变异和基因,并计算序列特征。如果需要不同的功能,sofia被设计成可扩展的,允许用户轻松地扩展当前工作流,甚至为完全不同的目的创建一个全新的工作流。

有一个[google group][google group]用于讨论sofia。

安装
----

2。更新pip:
*windows:`python-m pip install-u pip setuptools`
*linux:`pip install-u pip setuptools`
3。安装sofia:
*windows:`python-m pip install sofia`
*linux:`pip install sofia`

要获取数据,请运行:

`python-m sofia get http://childsish.github.io/static/sofia/example.tar.gz`

要尝试该示例,请运行:

`python-msofia execute-e染色体id-e位置-e基因id-e氨基酸变体-e变体效果-r./example/data/randome.gff-r./example/data/randome.fasta-r./example/data/randome.vcf variants-t variants-o output.txt`

命令行可以分成几个部分:


1。` python-m sofia`调用sofia脚本。
2.`执行"构建模板,然后解析并运行工作流"。
3.定义提供的实体(资源):
*`-r./data/example/randome.gff features`。提供包含基因组特征的资源。称之为"功能"。
*`-r./data/example/randome.fasta sequences`。提供包含染色体序列的资源。称之为"序列"。
*`-r./data/example/randome.vcf variants`。提供包含变量的资源。称之为"变体"。
4.`-e染色体id-e位置-e基因id-e氨基酸变异-e变异效应。用染色体、位置、基因名、氨基酸变异和变异效应注释每个变异。
5.`-T变型。将"variants"资源声明为目标。这意味着每个变量都会用请求的实体进行注释。

输出将放在"output.txt"文件的当前目录中。要检查输出是否正确,请运行:

`diff./example/data/output.txt output.txt`


但是,为了帮助您入门,我们在"scripts"目录中提供了shell脚本,用于下载注释的基本必需品。如果您希望添加更多的"标准"注释集,请让我们知道每个文件的url或提供一个shell脚本,我们将考虑将其添加到默认的sofia安装中。

可用:
*grch37版本的人类基因组

-----

sofia也可以编程使用。要使用sofia,必须构建一个模板,从该模板解析工作流,然后使用workflo可以执行w。

``python
from sofia.tools.build import build
from sofia.tools.resolve import resolve
from sofia.tools.execute import execute

template_directories=['path_to_template_1','path_to_template_2']
provided_entity_definitions=['provided_entity_1','提供的实体'u 2']
请求的实体'u定义=['请求的实体'u 1','请求的实体'u 2']
模板=生成(模板目录)
提供的实体=[模板.解析器.解析提供的实体(定义)以获得提供的实体定义]
请求的实体=[模板e.parser.parse_requested_entity(definition)for definition in requested_entity_definitions]
workflow=resolve(template,provided_entities,requested_entities)
execute(workflow)
`````

定义模板的模板可以在"sofia/模板"中找到`目录。每个模板都有一个具有自己名称的目录。模板目录中有三个主要位置。

1。` sofia/templates/<;模板名称>;/步骤`。所有步骤都在此目录中定义。
2.` sofia/templates/<;模板名称>;/实体.json`。此文件中定义了复杂的实体关系。
3.` sofia/templates/<;模板名称>;/数据`。模板的默认数据放在该目录中。

\一个步骤包含几个概念。**步骤的名称。**这是从命令行和其他步骤中引用的名称。它由类的名称定义。
2.**必需的实体。**步骤将使用的实体列表。必需的实体由类变量"in"定义。**提供的实体。**步骤将提供的实体列表。提供的实体由类变量"out"定义。**计算步骤。**还需要定义实际计算所需步骤的函数。传递给它的参数由给定依赖项的名称确定。函数由类成员"calculate"定义。

示例:
``python
from sofia.step import step

class getcodonusage(step):

out=['codon_usage']

def calculate(self,coding_sequence):
codon_usage={}
对于范围(0,len(编码序列),3)中的i:
密码子=编码序列[i:i+3]
如果密码子不在密码子用法中:
密码子用法[codon]=0
密码子用法[codon]+=1
返回密码子用法
`````

esource

资源实际上与步骤相同,但它们没有传入的实体,需要一些额外的详细信息来将它们与提供的文件名匹配。

步骤声明的任何实体(in和out成员变量)都将自动创建。如果需要定义实体之间的复杂关系,则为此使用"entities.json"。

实体由以下键定义:对值:

**name**。这是框架用来标识它的实体的名称。名称的当前格式为下划线分隔的小写单词。
**这是可以认为与此实体等效的单个其他实体的名称。这种等效性不是双向的(例如,"变体"可以被视为"基因组位置",但"基因组位置"不能用作"变体"。
**has a**(可选)。这是此实体包含的一组其他实体。它被实现为一个ass数组关联数组描述如何访问包含的实体:
**name**。框架用于标识子实体的名称。
**key**。python对象用来访问子实体的键。
**type**。需要对子实体的访问类型。如果它是一个对象的attibute,那么这个值应该是'attr'。如果它是字典中的键,则该值应为"item"。
**description**(可选)。"sofia info"命令使用的实体的描述。

示例:
``json

[
{
"name":"genomic_feature",
"is_a":"genomic_interval",
"has_a":[
{"name":"gene_id","key":"name","type":"attr"}
],
"description":转录DNA的模型。这包括所有可供选择的转录本。"
}
]
```


设计理念
----



*应尽可能少地依赖于库。


>用户必须尽可能少地更改资源数据。

*实际上,所有文件都可以按原样使用。但是,强烈建议对文件进行索引,因为这样会大大加快框架的速度。默认情况下,支持使用[htslib][htslib]进行索引。

该工具应易于扩展。

*默认状态不是一刀切的解决方案。不同的群体有不同的需求。然而,它应该很容易扩展以适应新类型的资源和步骤。



标准化(变体注释)
氖。主要转录本被定义为最长的转录本(编码核苷酸)。

模板试图在显示编码和氨基酸变化时遵循[人类基因组变异学会][hgvs]制定的指南。然而,我们偏离了指导方针,只使用1个字母的氨基酸编码。任何其他偏差都是无意的,应该引起我的注意。

模板在描述变量类型时也试图遵循[序列本体论][so]。任何偏差都是无意的,应该引起我的注意。



以下是我计划做的一些事情,但我总是乐于接受建议。

请参阅github的[问题][问题]页面,了解即将进行的改进,以提出建议和错误提交。

[python]:https://www.python.org/downloads/"download python 2.7"
[hgvs]:http://www.hgvs.org/mutnomen/"人类基因组变异协会"
[so]:http://www.sequence ontology.org/"序列本体论"
[issues]:https://github.com/childsish/sofia/issues"待办事项"
[google group]:https://groups.google.com/forum/!论坛/按需工作流
[vbox]:https://www.virtualbox.org/wiki/downloads
[mint]:http://www.linuxmint.com/download.php



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

推荐PyPI第三方库


热门话题
java JPanel不会对键绑定做出反应   当时间大于零时,不得在UI线程上调用java Await   JTextArea的java线程安全。追加   Java用户输入的字和行计数器   java以spreedsheat格式将数据保存到文件中   java构造函数的意义是什么?   java findViewById返回null,尽管组件的ID存在   java如何向按钮添加图像   java如何中断ExecutorService的线程   java如何将属性(例如枚举)绑定到不同类型的组件属性(例如每个枚举的映像)?   随机森林分类器的java实现   html使用java连接到一个站点并发布,HTTP状态代码200   从类访问属性时发生java编译错误   Java自动填充ArrayList,搜索更好的选项