-
Notifications
You must be signed in to change notification settings - Fork 3
biohub.biocircuit
本插件目主要继承15年的igem项目BioBLESS。BioBLESS提供了五个服务:设计电路、设计基因回路、分析、模拟和获取DNA序列。本插件沿用了其中设计电路、设计基因回路两个部分和分析的部分功能,应该也会加入DNA序列部分。
BioBLESS前后端耦合较密切,为了方便前端测试,目前对BioBLESS源码并未做太大改动。后续可能会继续修改。
- 由给定真值表给出表达式(利用espresso库)
- 由表达式给出对应的数字电路有向图
- 提供可用的门
- 由门列表计算稳定度分数
- 提供api
Note:下列文件目前均位于biohub/biocircuit/文件夹
保存有所有可用门的全部信息,后期可以加入前后端公用文件夹供前后端使用。gate_lizhi.json的具体含义见gate_lizhi.json简介
由gate_lizhi.json生成,含一个列表d_gate,包含后端需要的门信息。
相当于上面两个文件的接口。
提供两个变量,GatesJsonFile指示gate_lizhi.json的绝对路径,GatesPyFile指示biogate.py的绝对路径。
提供一个函数,update_d_gate()由gate_lizhi.json生成或更新biogate.py。初次运行时会根据给定路径自动更新。
用于编译espresso为espresso.so,直接python compile_espresso.py
即可。初次运行不会自动编译。支持windows(已测试windows64)、linux(已测试arch & ubuntu)、OS X(未测试)。
主要功能在frontend/src/core中实现。推测大致功能为:
- 通过用户给出的真值表从后端得到逻辑电路并绘制
- 实现增加、删除门与线的功能
- 通过用户的逻辑电路绘制对应的生物回路
- 实现一些动画功能
- 通过用户输入或默认值得到各个bbk的dna序列
- 通过逻辑电路从后端得到score
- 通过各个bbk的dna序列得到整个circuit的dna序列
register name: api:biocircuit
base url: /api/biocircuit/
为了前端测试,api和BioBLESS基本一样。
支持请求:GET
信息格式:json
register name: biocircuit-build
url: ^biocircuit/(?P.+)/$
url内参数: string: 真值表,必须是2^n位字符串,1和0表示True与False,其他表示未定结果。
response:
若成功:status code=200, 返回值为一个列表,每一项为一个字典,表示一个可用circuit,格式如下:
- nodes: 一个列表,每一项为一个字符串,表示input或一个门
- arcs: 一个列表,每一项为一个字典,表示circuit中一条有向弧。字典中有from、to两个键,对应的值为对应顶点在nodes列表中的索引值。
- score: 分数
若失败:status code=400, 返回值{
- status: 'failed'
- detail: 错误信息
}
示例:
GET /api/biocircuit/biocircuit/011-/
返回:
[{"arcs":[{"to":2,"from":0},{"to":2,"from":1}],"score":4.5,"nodes":["INPUT","INPUT","OR0"]},{"arcs":[{"to":2,"from":0},{"to":2,"from":1}],"score":9,"nodes":["INPUT","INPUT","OR1"]}]
支持请求:POST
register name: biocircuit-score
url: ^score/$
参数:{
- nodes: 一个字典,包含circuit中所有节点
}
response:
若成功: status code=200, 返回值为一个列表,包含gate_lizhi.json全部内容。
若失败:status code=400, 返回值{
- status: 'failed'
- detail: 错误信息
}
支持请求:GET
register name: biocircuit-gates
url: ^gates/$
返回值:
若成功: status code=200,
若失败:status code=400, {
- status: 'failed'
- detail: 错误信息
}
一个列表,每一项为一个字典,表示一个可用的门。字典格式如下:{
-
id: 门的id,如OR0,AND3
-
parts: 一个字典,表示门包含的bbk们。格式:{
- id: 门包含的bbk的id。为一个列表,其中每一项为一个包含promoter、RBS、coding(>=1个)和terminator的id的列表。
- type: 一个字典,说明每个id对应的bbk的种类。
}
-
input: 输入的id
-
output: 输出的id
-
map: 一个列表,指示各个部分相互作用。每一项为一个字典,表示一个event,格式:{
- id: 事件id
- id1: 事件诱发物
- id2: 事件作用物
- type: 字符串,表示事件类型。
- trans: 转录
- inh: 禁止
- act: 活化
- lock: 锁定
- key: 关键因素(?)
- rep: 抑制
}
-
type: 门的其他资料
}
-
d表示dna序列,如d5
-
p表示protein,如p100
-
e表示event,如e2