Skip to content

biohub.biocircuit

shirley-wu edited this page Aug 20, 2017 · 4 revisions

插件简介

本插件目主要继承15年的igem项目BioBLESS。BioBLESS提供了五个服务:设计电路、设计基因回路、分析、模拟和获取DNA序列。本插件沿用了其中设计电路、设计基因回路两个部分和分析的部分功能,应该也会加入DNA序列部分。

BioBLESS前后端耦合较密切,为了方便前端测试,目前对BioBLESS源码并未做太大改动。后续可能会继续修改。

代码实现简介

后端:

功能:

  1. 由给定真值表给出表达式(利用espresso库)
  2. 由表达式给出对应的数字电路有向图
  3. 提供可用的门
  4. 由门列表计算稳定度分数
  5. 提供api

特殊文件

Note:下列文件目前均位于biohub/biocircuit/文件夹

gate_lizhi.json

保存有所有可用门的全部信息,后期可以加入前后端公用文件夹供前后端使用。gate_lizhi.json的具体含义见gate_lizhi.json简介

biogate.py

由gate_lizhi.json生成,含一个列表d_gate,包含后端需要的门信息。

biogate_man.py

相当于上面两个文件的接口。

提供两个变量,GatesJsonFile指示gate_lizhi.json的绝对路径,GatesPyFile指示biogate.py的绝对路径。

提供一个函数,update_d_gate()由gate_lizhi.json生成或更新biogate.py。初次运行时会根据给定路径自动更新。

compile_espresso.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序列

api

register name: api:biocircuit

base url: /api/biocircuit/

为了前端测试,api和BioBLESS基本一样。

biocircuit

支持请求: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"]}]

score

支持请求:POST

register name: biocircuit-score

url: ^score/$

参数:{

  • nodes: 一个字典,包含circuit中所有节点

}

response:

若成功: status code=200, 返回值为一个列表,包含gate_lizhi.json全部内容。

若失败:status code=400, 返回值{

  • status: 'failed'
  • detail: 错误信息

}

gates

支持请求:GET

register name: biocircuit-gates

url: ^gates/$

返回值:

若成功: status code=200,

若失败:status code=400, {

  • status: 'failed'
  • detail: 错误信息

}

gate_lizhi.json

数据结构

一个列表,每一项为一个字典,表示一个可用的门。字典格式如下:{

  • 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: 门的其他资料

}

Note: 某个门的各个id释义

  • d表示dna序列,如d5

  • p表示protein,如p100

  • e表示event,如e2