写在前面
- 目前各种组学培训开展的如火如荼,却鲜有生物信息学数据库搭建的相关教程和学习流程。原因有以下几个:
1.学习数据库的搭建付出多,回报少。有这功夫应该可以把大部分组学知识学会;
2.搭建数据库的综合性较强,一般培训机构能力有限,不足以开展相关培训,或受众面较窄,人家不愿意开,毕竟人家想赚钱。就像python培训一抓一大把,但C++培训却很少有,基本一个道理;
3.完全可以外包给专业做数据库的公司,不过很贵,其实外包给计算机专业的大学生是最划算的,一般1万以下就能搞定一个简单的数据库
4.完全可以找合作,导师没必要让自己实验室的学生从零开始学
5.学生不愿意学......
- 因此,导致目前在生信领域搭建数据库的教程几乎没有(印象中有一个:
shengxinbaodian
),学习路线也没有,我当初学习的时候反正是一头雾水。经历了自学的阶段之后,我总结的一份在B站上的学习路线,供大家参考,如有错误还望指正。 - 总体分为前端、后端、数据库
2022年12月29日更新:生物信息学可视化功能如何实现,附在文末了
一、前端
- 用
1-3
天了解前端三件套HTML+CSS+JS
的基本语法,HTML+CSS真的没必要深入去学,啥时候用到啥时候查用法就行,但要明白基本语法。JS真的有必要多花点时间,下面再单独介绍。
HTML+CSS+JS视频推荐:《老杜最新HTML+CSS+JavaScript基础到精通视频教程全套完整版》。他讲课诙谐幽默,简单易通,很好。
- 用
- 用1-2周的时间学习前端JavaScript库(或者叫做框架),因为原生js对我们生信人来说太复杂了,这里只推荐三个别人封装好的js库:Vue或React或jQurey,学习之前先每个了解一下,找到自己最感兴趣的,然后三选一(选了一个千万不要再学其他的了,一点用没有,他们之间没有任何关系!)。虽然我当初学的是jQuery,但目前我推荐学习Vue,并且不推荐学习jQuery,感觉自己浪费了很多时间。
jQurey视频推荐:《「李南江」jQuery+Ajax从放弃到知根知底 - JQ基础+案例实战》。简单粗暴,我超喜欢他的上课风格。
Vue视频推荐:《黑马程序员vue前端基础教程-4个小时带你快速入门vue》。没有废话,就是干货,很精炼。
React视频推荐:React可能比Vue难一点,而且一般应用于大型项目,实在想学就去B站自己挑一门课吧,这里就不推荐了。
- 用1-2周的时间学习前端JavaScript库(或者叫做框架),因为原生js对我们生信人来说太复杂了,这里只推荐三个别人封装好的js库:Vue或React或jQurey,学习之前先每个了解一下,找到自己最感兴趣的,然后三选一(选了一个千万不要再学其他的了,一点用没有,他们之间没有任何关系!)。虽然我当初学的是jQuery,但目前我推荐学习Vue,并且不推荐学习jQuery,感觉自己浪费了很多时间。
- 学完上面这些,当你真正去搭建前端的时候没必要从头开始,因为有很多东西别人已经做好了,你直接用模板即可,应该需要1-2天左右。下面举几个例子:
如果你学习了jQurey,那么《Semantic UI官网》《视频教程》和《Bootstrap官网》《视频教程》就可以上手了,但没必要全学会,知道是个什么东西,需要哪些组件现用现查即可。
如果你学习了Vue,那么《Element UI官网》《视频教程》就可以上手了,但没必要全学会,知道是个什么东西,需要哪些组件现用现查即可。
如果你学习了React,那么《Ant UI官网》《视频教程》就可以上手了,但没必要全学会,知道是个什么东西,需要哪些组件现用现查即可。
再次强调,以上这些内容,现用现查,毕竟你的时间很宝贵
- 学完上面这些,当你真正去搭建前端的时候没必要从头开始,因为有很多东西别人已经做好了,你直接用模板即可,应该需要1-2天左右。下面举几个例子:
二、数据库
- 先别急着学习后端,推荐先用1周时间把数据库的知识学完或者了解后现用现查都可以,因为后端大概率是要操纵数据库的(虽然目前有很多后端框架封装好了数据库,但还是很必要去学习,一方面加深理解,另一方面也可以有策略提高运行速度),这里只推荐两种数据库:MySQL数据库和PostgreSql数据库
MySQL数据库视频教程:《MySQL基础入门-mysql教程-数据库实战》。我推荐一个我认为最好的,那必须是老杜的课程。
PostgreSql数据库视频教程:《【小马技术】PostgreSql 关系型数据库入门》。像这位博主所说的,随着mysql被orcal收购,感觉命运不会太好,自行把握把。我目前还是要选得话还是MySQL。
三、后端
- 这就要看你喜欢那门语言了,有以下一些选择
Python:Django或Flask都是不错的后端框架,用于生物信息学的搭建完全足够,另外需要着重关注的一点是,目前随着机器学习或者深度学习的火热,python又被”炒“起来了,如果你想做这方面,尽量用python,这样就可以完美融合数据库的算法模型了。
Django视频推荐:《【2021最新】手把手教你用 Python 做网站页面开发》
Flask视频推荐:《黑马程序员-6节课入门Flask框架web开发》
R:Shiny想必大家都听过,因为其方便快捷,可视化丰富被大家所喜爱,但有个问题你必须考虑的就是他是单线程的,如果生信的数据量比较庞大,响应速度确实会有所影响。目前应该还没有相关课程,生信技能树那个可以看,不过自己去官网学应该更快。
Shiny官网教程:《Hello Shiny!》。一步一步跟着做,很快的
生信技能树教程:《「生信技能树」shiny网页工具》。属于直播回放,虽然不系统,课程时长也长,但依旧有很多值得借鉴的点,对于了解Shiny足够了,但要深入去学,还需要自己去官网,因此我建议先2倍速刷一遍视频(别跟着敲,浪费时间),然后再去官网学。
Perl, Java, PHP等:也有很多生信人选择Perl的,但不太推荐学Java和PHP,除了搭建数据库,基本上不会用到其他功能了,”性价比低“,不做推荐,自己去B站上找课学吧。
四、附:生物信息学可视化
- 除了最基本的前后端,数据库之外,生物信息学中往往需要引入各种各样的插件来实现具体的功能和可视化,如最常见的BLAST和基因组浏览功能JBroswer,要更好的实现类似的功能,需要我们去了解如何将功能模块嵌入到我们自己的网站中,一般流程就是直接引入JS,CSS,然后根据功能要求进行配置。
另外就是数据的可视化,这里有两种区别,即动态和静态的。 - 1.静态
思路就是在后端接受到请求后,利用后端的原生代码进行绘画,然后将绘图结果传给前端。如请求基因A在人各个组织器官中的表达量,要求以柱形图的形式展现,后端接收后,利用自带的绘图代码(如python中的matplotlib,或R中ggplot之类的)继续绘画产生PNG或PDF文件,然后将该文件发给前端,前端进行解析与渲染,呈现给用户。
然而,这样做的弊端是1.前端无法交互;2.清晰度差;3.传输浪费流量,加载慢;4.浪费自己的绘图算力。所以,目前主流的是下面的动态做法。 - 2.动态
思路是在后端接受到请求后,直接从数据库中检索数据,然后将数据发给前端,然后前端利用js进行绘画。因此这里就需要寻找合适的js来实现可视化,下面给大家推荐一些Echarts, Plotly, D3。引入的一般流程是:引入对应的JS,然后配置参数,设置好数据接口即可。
值得注意的是:通常数据接口要和Axios同步使用,直接传输JSON数据,好处就是打开页面不加载figure,点击特定按钮或者出发特定事件后再动态调用后端数据进行绘图,加快页面加载速度。
五、网站的部署
- 不用特别在意,网站搭建出来,这些都是小事,自己探索一下吧。不过,你感觉你想的域名太火热,可以先把域名申请了,免得到时候网站开发出来,发现域名被占用了就难受了。
写在后面
- 以上基本上就是搭建生物信息学数据库的整个流程了,大概1个多月的时间就可以搞定,然后就可以着手搭建了,如果你搭建成功表发表了自己的数据库,欢迎在下方留言。我欢迎大家去看一下我本科和别人合作搭建的数据库BrassicaEDB
- 哦,对了,有三句话忘记说了!