What Programming Language Is Best To Learn For Getting Into Web-Based Bioinformatics?
5
13
Entering edit mode
14.3 years ago
Kak9699 ▴ 130

I'm thinking of working on bioinformatics programs that are web-based. What languages would I need for that? I think I would need HTML/PHP/SQL and then something to write the scripts in. Sound right?

EDIT: I know HTML well enough and a little CSS(err...not that much). I have learned some Python and liked it enough.

EDIT: To answer the follow-up comment, yes, I would be looking to deploy an application on servers to be accessible via the web. I also have ideas to work in some sort of data sharing/collaboration function. Everything is still very much a semi-murky idea in my head at the moment. :) Sorry I can't be more specific!

programming webservice • 8.7k views
ADD COMMENT
2
Entering edit mode

Since the responses are excellent, let me add a clarifying question. What do you want to achieve? Do you want to deploy applications and make them accessible via the web? Or something else?

ADD REPLY
0
Entering edit mode

What kind of programs do you want to write?

ADD REPLY
0
Entering edit mode

@Vlinxify I'm thinking about a program that could work with simulating evolution on a whole genome scale(now that 454 sequencing is gaining popularity). I know genetic programming can do something like this, but need to read up more on it. What sort of bioinformatics questions are you looking at?

ADD REPLY
0
Entering edit mode

FYI, http://www.sequenceserver.com is an example of a simple bioinformatics web app (wrapper) that uses ruby and ruby's built in sinatra web frontend.

ADD REPLY
29
Entering edit mode
14.3 years ago
Neilfws 49k

You have lots of choices. Web applications are examples of dynamic websites: basically, this means that the page content is rendered - well, dynamically, in response to user requests. Those requests could be anything from terms to search a database to input parameters for an external program.

Your choices are:

  • Do you need a database "back end" and if so which one

    • MySQL is a popular choice but there are many others (SQLite, PostgreSQL, the newer "NoSQL" options such as MongoDB)
    • Life will be easier if you also use an ORM; basically, a library to interact with the database and return objects that represent the rows - Sequel is an example for Ruby
  • Choice of programming language

    • PHP, Ruby (on Rails), Python, Perl and Java are all used extensively for web development; even R can be employed using the RApache module
  • Do you want to use a web framework?

    • This is a toolkit to make web programming easier; popular choices are Rails (Ruby), CakePHP (PHP), Catalyst (Perl) and Django (Python)
    • Some people prefer to code "from scratch", using for example Perl's CGI.pm
  • Do you need to call "external" bioinformatics applications, e.g. ClustalW?

    • In this case, it will help if your language has a bioinformatics library with modules that can run programs and parse the output; e.g. Bioperl, BioPython, BioRuby
    • and you'll need to install other software on your server
    • Be aware that calling programs via a web interface has security implications
  • Does the site need to look pretty/do fancy dynamic visual effects?

    • In which case you need to be familiar with CSS and Javascript; the latter can provide nice tools such as charting libraries (e.g. Highcharts)

If you are new to these tools, I recommend the web tutorials at w3schools.com. Whatever tools you use, basic familiarity with HTML, particularly forms, is essential.

I'd also recommend looking at how other people have implemented web-based bioinformatics tools. Good examples include EMBOSS Explorer (rather old now but still works) and GBrowse (Bioperl-based genome browser).

ADD COMMENT
0
Entering edit mode

+1 for such a modular answer :)

ADD REPLY
0
Entering edit mode

Wow...so well organized and presented. I love it! Very helpful the way you break the site components down into categories.

ADD REPLY
8
Entering edit mode
14.3 years ago
Paulo Nuin ★ 3.7k

Well, how can I put this in simple terms? I would start with something in the Python(Django/Pylons)/Ruby(Rails)/Perl(Perl) triad. These tree are faster (maybe not Perl) and more secure than PHP and generate - let's call it - more modern sites. I understand that maybe Django and Rails are not purely devoted to scientific applications, but if you are looking to something more powerful and faster to program I would go to:

Django (or Pylons, my preferred) with Python and BioPython

Ruby on Rails with a Ruby backend and BioRuby

or the best supported for bioinformatics applications in pure Perl with BioPerl

You cannot go wrong with those. PHP is a nice - maybe OK - language, but it's becoming a little bit passe nowadays, so if you're starting try to either go the modern way or go the most supported way. Each one has its own pitfalls and peaks.

EDIT - The three initial answers were posted at the same time, from different continents. I guess I win by a nose ... hair.

ADD COMMENT
0
Entering edit mode

Yeah true Paulo. +1 for additional thoughts on PHP.

ADD REPLY
0
Entering edit mode

I would definitely prefer to go the modern route versus the safer route. Django's tagline, "The Web framework for perfectionists with deadlines," made me chuckle as it describes me pretty well. Haha.

ADD REPLY
4
Entering edit mode
14.3 years ago

I would recommend a combination of HTML, CSS, Java Script(interface), SQL (database) and MVC (web app) based on your language of choice. You may also follow the related questions discussed in BioStar on database front-end and CMS for bioinformatics.

The choice of language largely depends on personal preference and familiarity with a particular language. I developed a variety of bioinformatics web apps based on sequence, structure and protein-protein interaction data using Perl. Personally I prefer LAMP stack as in Linux, Apache, MySQL and Perl. These days its a common trend to replace the MySQL with a serverless / NoSQL based database and Perl is generously replaced by Python / Ruby pointing to the MVC, object-oriented approach, ease of coding etc. I never had a single reason to switch to these languages because of a feature that is exclusive to it. I still believe, Perl has got it all, may be it is not marketing it well. Several times I humbly pointed my Python / Ruby friends to to take a look at Perl based MVCs or Parrot/Perl6/Rakudo for higher oops capabilities, ease of coding etc. In my experience, Perl is as good as any scripting language for bioinformatics web development. If you look at Bio-* projects, BioPerl is undoubtedly the winner with the largest number of modules.

Java based web development is also common in bioinformatics: PDB is a finest example. AFAIK, NCBI apps are largely based on their C++ libraries and EBI is based on a mix of Java and Perl.

ADD COMMENT
0
Entering edit mode

Hmm...I'm familiar with Python, but my non-biology major friends (the CS ones) tell me that Python is not respected language. Apparently, they're talking nonsense as it would seem many here have mentioned it.

ADD REPLY
4
Entering edit mode
14.3 years ago

Many good anwsers here. My two cents:

If you just want to generate a web interface for a command line program, have a look at Pise: A Web interface generator for molecular biology programs in Unix. Bioinformatics. 2001 Jan;17(1):73-82. Letondal C.

Nobody cited Java ? have a look at the Java Servlets

The good old way: CGI programming

ADD COMMENT
0
Entering edit mode

Pise is succeeded by Mobyle. I mentioned Java with an example of PDB :) !

ADD REPLY
2
Entering edit mode
14.3 years ago
Will 4.6k

If your looking to work off of an existing framework I would suggest taking a look at the Galaxy Bioinformatics framework. It has many of the features needed for "analysis webpages" built in ... stuff like User login and histories, data management, sharing and commenting. It also has a large collection of analysis tools built in. You would just need to extend it with your things.

Galaxy is written in Python/Pylons btw.

ADD COMMENT
1
Entering edit mode

Nice suggestion on Galaxy as a framework to utilize. The back end of Galaxy is built on a Pylons-like stack.

ADD REPLY
0
Entering edit mode

Thanks for the reply! I don't know if I will be working off an existing framework just yet, but it's good to know that Galaxy is based on Python. A big plus!

ADD REPLY
0
Entering edit mode

@Brad: I stand corrected.

ADD REPLY

Login before adding your answer.

Traffic: 1630 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