How to build a bioinformatics server
3
0
Entering edit mode
6.4 years ago
sunyp.imcas ▴ 10

Dear all,

Do you have experience of build a bioinformation server? I mean a website where people can submit a DNA sequence and get a certain analysis result about this sequence. The server treats this sequence by automatically calling different softwares such as python and alignment software (mafft, etc.) sequentially, and finally return the result and shows it on the website. I am new in bioinformatics and have no idea how to do this. Could anyone give me some tutorials or hints of how to finish this job? I will appreciate any help.

Best regards.

sequence • 6.9k views
ADD COMMENT
1
Entering edit mode

That smells like a bachelor's or master's degree project !

ADD REPLY
0
Entering edit mode

It might be a bachelor's or master's degree project for in computation science.

ADD REPLY
0
Entering edit mode

Are you saying that this is your project?

ADD REPLY
0
Entering edit mode

Why would you want to do this if I may ask?

ADD REPLY
1
Entering edit mode

I do it partly for fun.

ADD REPLY
0
Entering edit mode

This is something Galaxy does. As to what hardware you can run it on it would simply be dependent on your budget.

ADD REPLY
0
Entering edit mode

Not just web servers, but there are already blockchain protocols soon to be emerging. Example: https://www.genomes.io/wp-content/uploads/2018/03/The-genomes.io-Whitepaper-V-1.1.4.pdf

ADD REPLY
17
Entering edit mode
6.4 years ago
liux.bio ▴ 360

In the last year, I developed a web server - ExpressVis - for analyzing and exploring expression profiling data. Here is my experience.

Overview

According to your needs, the application should include a back-end (a server) and a front-end. The back-end receives a request from the front-end, then load data from the database and process the data, and finally send the result to the front-end. The front-end (website) presents the result. The back-end and front-end are developed separately. enter image description here

Back-end

In the back-end, a web server, like Apache or Nginx, receives and process requests from the front-end. Based on types of the requests, the web server responds directly, or calls a software or a script, whose results are sent to the web server and then sent to the front-end. enter image description here

The software or scripts should be managed by a server (framework). In python, there are multiple frameworks, like Flask and Django. Here, I use Django as an example (I used django in my service). Django can call a software or script in a app (specifically, views.py in a app).

enter image description here

In a web service, Representational State Transfer (Rest) is widely-used. Using Rest APIs, the front-end can send a request to the server without refreshing the website. In django, you can use django rest frame work to build Rest APIs. Combining Django and Django rest frame work is awesome.

enter image description here

Front-end

To develop front-end, some knowledge about html, css and js are required. In recent years, many front-end frameworks emerged, like Angular and React. You can choose one of them, which will save much time.

Some notes

To develop a web server, one must learn multiple programming languages or frameworks. For example, in front-end, one should learn basic techniques, including html, css and js. To develop efficiently, one should use some frameworks, like bootstrap and angular. Learning these techniques will take much time. As for me, before developing ExpressVis, I had some experiences in R and python, but knew nothing in developing a website. Developing ExressVis took me one half a year. Before developing a web service, you should decide if it is worth. In my opinion, there is a critical need to develop web servers for bioinformatics tools. Web servers make a bioinformatics tool accessible to more biologists. Now, I like to put some common scripts in web service and use them in the website; it saves much time.

Learning steps

When I developed ExpressVis, I spent much time learning the techniques and more time choosing frame works. If you decide to go ahead, here are learning steps I suggest:

  • Learn js, html and CSS. Js is the key
  • While learning js, learn django (or other frame work you like).
  • After knowing some knowledge about js, begin to learn Angular (or other frame work you like).
  • Combine Django and Angular, and develop the app locally.
  • Learn Nginx (or apache). Learn how to deploy the app.
  • Congratulations
ADD COMMENT
0
Entering edit mode

while learning JS, learn django

Those 2 are not even remote related in learning patterns. Why combine them?

Combine Django and Angular

Why Angular? Isn't Bootstrap a much leaner, much more beginner friendly framework?

ADD REPLY
0
Entering edit mode

First one

For the first question. I agree with you, Js and Django are different. But I think we can learn two techniques at the same time.

Second one

As for combining Django and Angular. I mean that when we develop the app, we use Angular to develop front-end and use Django develop the backend. Angular sends request to Django directly. Angular has its own server, but using Django as the server could test Rest APIs in Django. Here is the architecture of the dictionaries.


-project

---DjangoService

----app1

----app2

----.....

---AngularClient

----angularApp1

----angularApp2

----.....


Anyway, maybe this is just my personal preference.

Third one

Angular and Bootstrap are not comparable. Angular should be compared with React or Vue.js. Based on the introduction of Bootstrap, Bootstrap is to 'Build responsive, mobile-first projects on the web with the world's most popular front-end component library.' Based on the introduction of Angular, Angular is to "Learn one way to build applications with Angular and reuse your code and abilities to build apps for any deployment target". In my project, I used Angular to build components and used Bootstrap for responsive behaviors; both are my favorite. Honestly, I can not tell the difference between Angular and Bootstrap clearly. Here is a link to describe the difference.

ADD REPLY
0
Entering edit mode

Thank you for explaining that. Further discussion on this would only stray off topic, so I'll dig up information on my own. Thank you once again.

ADD REPLY
0
Entering edit mode

one half year means half a year , right?

ADD REPLY
0
Entering edit mode

Probably, yeah. I don't think that timeline is of any importance though, people have different learning speeds.

ADD REPLY
2
Entering edit mode
6.4 years ago

If you have already an R package for the analysis task available and you just want to have some web-interface to make it accessible, a quick alternative might be the development of a Shiny app.

Anyway, for larger and more complex projects, I recommend liux.bio's answer

ADD COMMENT
0
Entering edit mode
5.5 years ago

You can also use Dash. Check out this gallery

https://dash.plot.ly/dash-bio

ADD COMMENT

Login before adding your answer.

Traffic: 1150 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6