-
Notifications
You must be signed in to change notification settings - Fork 3
biohub.biobrick
{
part_id: Number, // igem 官方库中的 id,绘制 ruler 时可能有用
part_name: String,
ac: { // Accessibility Compatibility
10: Boolean,
12: Boolean,
21: Boolean,
23: Boolean,
25: Boolean,
1000: Boolean
},
ruler: {
seq_features: Array of {
type: String,
first: Number,
last: Number,
label: Number,
reverse: Number // 0 or 1
},
sub_parts: Array of {
id: Number,
short_name: String,
nick_name: String,
icon_url: URL
},
part_id: Number // 同 上一个 part_id
},
document: {
text: Markdown,
digest: String
},
weight: Float, // 排序权值
part_type: String,
author: String,
part_status: String,
sample_status: String,
uses: Number,
group_name: String,
experience_status: String,
twin_num: String,
parameters: Array of Array of String,
short_desc: String,
description: String,
status: String,
creation_date: Date,
works: String,
nickname: String,
categories: String,
sequence: String,
// biohub forum 相关字段
rates: Number, // 投票数
rate_score: String of Float, // 分数
stars: Number,
watches: Number,
}
{
part_type: String,
part_name: String,
uses: Number,
rates: Number,
rate_score: String of Float,
stars: Number,
watches: Number,
short_desc: String
}
由 URL 参数决定为 DetailBrick
或 ShortBrick
。
NOTICE igem 的官方数据库提供了 Biobrick 的大量信息,但仍有部分字段需通过爬虫获取,爬虫触发的时机为访问单个 brick 的详情时。若此前某 brick 未爬虫,部分字段取值会置
null
。可能为null
的字段为group_name
,experience_status
,twin_num
,parameters
,rates
,rate_score
,stars
,watches
。
-
q
用于查询的 Query Statement。
Query Statement 由 用空格分割的 Query Clause 组成。Query Clause 有以下几种:
-
<keyword>
,将<keyword>
用于short_desc
的模糊搜索 -
n:<keyword>
,将<keyword>
用于part_name
的模糊搜索 -
t:<keyword>
,将<keyword>
用于part_type
的模糊搜索 -
h:
,将关键词用<span class="highlight">
和</span>
括起来高亮
未来可根据需求加入更多维度的查询。
同种 Query Clause 用 OR
连接,不同种之间用 AND
连接。
例子:bio n:000 t:regu t:dna h:
对应的伪 SQL (只是解释逻辑,后端不使用 SQL)为:
SELECT * FROM biobricks
WHERE (short_desc LIKE '%bio%')
AND (part_name LIKE '%000%')
AND (part_type LIKE '%regu%' OR part_type LIKE '%dna%');
并将关键词高亮。
- 200 ->
Page<ShortBrick>
- 404
- 200 ->
Page<DetailBrick>
json。
{
score: Float, // 0 <= score <= 5
}
- 400
- 403
- 200 ->
String = 'OK'
- 400 ->
String = 'Fail'
(没有做过前置操作,如unwatch
前没有watch
) - 403
- 200 ->
String = 'OK'
- 200 ->
Page<User>
-
detail
若出现此参数,则用DetailBrick
返回。默认用ShortBrick
返回。
- 200 ->
Brick
为了方便更新数据库,igem 的官方数据被独立存在于一个 database igem
中,biohub
通过建立虚拟表与其交互。
安装流程:
$ mysql -u<username> -p -e "CREATE DATABASE IF NOT EXISTS igem;"
$ mysql -u<username> -p igem < biobricks.sql
$ biohub/biobrick/bin/updateparts.py -u <username> -pw <password> # 初次过滤及数据采集
$ biohub/manage.py migrate # 建立虚拟表
$ biohub/manage.py refreshweight # 更新权值
$ biohub/manage.py update_index # 建立 ElasticSearch 的索引
$ biohub/manage.py installjob # 建立/更新刷表的定时任务
为了实现各种功能并减小数据库的负担, search 使用 elasticsearch 后端,将大量数据存储为 index 以提供搜索服务。
search 只有在正确安装 elasticsearch 的情况下才可以使用。elasticsearch 要求 <=2.x(3.x不被支持)。推荐按照 elasticsearch 官网方式安装。
安装 elasticsearch 之后,需要在 http://127.0.0.1:9200/ 运行 elasticsearch。这也是 elasticsearch 的默认端口。由于 elasticsearch 运行端口自由度很高,将来可以考虑将程序内 elasticsearch 端口设置作为可自定义的设置项。