2
$\begingroup$

I am curious about what sort of programs people in my field of academia are using to graph their data. I am a master student in biochemistry, and have more or less only used excel (on rare occasions I have used the statistical program R).

I know my question is very general, but I would like to hear suggestions for programs that could be useful when I want to compute numbers or make good graphical representation (in the life science fields, e.g. microbiology, biochemistry, biotechnology, biophysical chemistry).

Also, are the other programs to create good graphic illustrations? I am currently using Inkscape to produce molecular illustrations, and I think this is one of the most typical programs to use?

$\endgroup$
7
  • 1
    $\begingroup$ The vast majority of people use R. A priori it is really what you want to learn to use. However, it depends on the kind of data you have. If you have loads of data or if you have certain specific data you might want to use specific software for big data visualization or do you own thing in C++ or some other language. If you are working with mathematical modelling Mathematica might be handy. The answer also depends on what kind of manipulation you have to do on your data. Again R is pretty handy for manipulating data quantity that are standard in Biology. $\endgroup$
    – Remi.b
    Apr 28, 2016 at 22:36
  • 2
    $\begingroup$ I'm voting to close this question as off-topic because 1) the question is too broad and 2) the question is about data visualization and is not specific to biology. $\endgroup$
    – Remi.b
    Apr 28, 2016 at 22:37
  • 2
    $\begingroup$ GraphPad Prism is very widely used. $\endgroup$
    – CKM
    Apr 28, 2016 at 22:46
  • 2
    $\begingroup$ Thank you for there answers. I will argue that this is specifically for biology. I mean, statistic and visualization of your data is a vital part of presenting everything you have. I can't post this question in a different stack exchange, because I'm interested to hear what programs people who study biochemistry, biotechnology and microbiology use. Therefore, I think this is highly relevant for the biology page. $\endgroup$ Apr 30, 2016 at 7:53
  • 1
    $\begingroup$ The answer I am looking for is just a simple list of suggestions of program (not programing languages) which are good. Although the answer below is a very good one, it not exactly what I am looking for. $\endgroup$ Apr 30, 2016 at 7:56

1 Answer 1

7
$\begingroup$

There is no standard software, programming language, or library used for computing and graphing biological data. The R language is commonly used for statistical work, but Python (in conjunction with the SciPy stack) and C++ also gets used a lot.

Before going further, I should point out you are asking two questions. One about computation and the other about presentation.

Computation:

You mentioned R. That is a programming language (with specialized software built around it). When it comes to programming language choice, the three most important factors are personal preference, available libraries, and the language already in use if you are joining a project with a pre-existing code-base. You might notice performance is not on this short list. The reason for this is that modern languages on modern hardware are efficient enough to, very often, make language choice irrelevant from a performance perspective. Most computational tasks suitable for R are also suitable for languages like Python and Julia.

R's strength is in its focus for statistical work. Whereas Python's standard library comes with many bells and whistles intended to ease the design of small to moderate sized pieces of software across many situations, R comes with many features focused specifically on easing the task of writing code for complicated statistical calculations. Due to it being so common in academia, R one language you are very likely to encounter in academic, computational work. That makes knowing it a helpful skill (whether you regularly use it or not). R, having such a strong suite of tools and large userbase, is also the basis for many third-party tools. One interesting example is Bioconductor

That being said, there are also advantages to using (or at least knowing) Python. It is one of the most common languages in programming in general. That means it has a diverse assortment of libraries designed for it by members of the community. When it comes to nonstatistical libraries, few languages have as many options. When it comes to statistical work, Python does not have as many options as R, but it does still have a lot. The SciPy stack, which includes the NumPy and Pandas libraries, is a big part of that. Another benefit that comes from Python's popularity in the programming world is that you will have an easier time finding programmers to help you on a large project if you decide to look for help outside of your field. (For example, far more computer science majors will know Python than R ...multiple times over.)

As far as the Julia language goes, it is still new. It is being developed as a competitor to R and Python, but it is not mature enough to be a serious contender just yet. However, since your question is about what people use, I would be remiss to ignore it. It may become a serious contender, but for right now, it is still trying to grow and prove its worth.

If performance becomes a serious issue, you would probably be forced to dump R, Python, or whatever very high level language you are using in favor of C or C++. Both are far more efficient than the so-called "batteries included" languages. C and C++ are system programming languages. They are often used in operating systems, databases, video games, and other large pieces of software which you would not want slowed down due to features being included which you did not explicitly program in. (C and C++ are also used in small projects, but I digress.) However, taking advantage of this efficiency requires some insight into how computers actually work. This is not a difficult task, and any good tutorial or book will cover such topics. Using C or C++ without this basic understanding will likely be counter productive, as doing so can lead to you inadvertently creating a program far slower than it needs to be, which could be an issue if performance is becoming a serious concern.

A non-performance benefit of C is the large library selection. As I mentioned above, few languages can compare to Python's library selection. C is definitely one of those few. Actually, C is essentially the lingua franca of libraries (due to its age, its dominant position, and aforementioned efficiency). This means you might find yourself needing to use some highly specialized library with no bindings to languages like Python or R. I have come across a few.

Presentation:

R is also a nice language for graphing data. It comes with a package known as ggplot2, which is responsible for this functionality. This is a common source of data visualizations. However, this does not mean you must use R if you want to create graphs that follow the norms of academia. First off, many people use other pieces of software for plotting. Secondly, there is the library for Python called matplotlib. It is fully featured and is capable imitating the visual appearance of ggplot. One of its built-in style sheets was included just for this purpose. Not surprisingly, matplotlib is the graphing library used in SciPy.

There are many other graphing/plotting libraries, and many of them are fairly language agnostic. Presentation is not often a deciding factor in what language to use for computation. However, if you found yourself needing to use a specific language for its presentation options, doing computations in one language and then feeding the results into another for presentation is not unheard of.

Software:

I include this as a third category because this is more complicated than deciding on programming language A or B or choosing a plotting utility. Non-computer scientists often confuse software with languages. You have to use software when writing a program in a given language, but all the work is done by the program you write. Large software suites, on the other hand, do work for you in many ways. They often come with some sort of quasi-programming language included, but that is only one part of a larger whole. While R comes with a number of software tools, Matlab and Mathematica are better example of this. Free, open source alternatives to these proprietary suites would be Octave and Scilab, although such open source software traditionally has not very competitive with the likes of Matlab. SciPy is a recent example of open source software closing the feature gap (which is a very good thing in terms of avoiding vendor lock).

Beyond that, it is hard to say what you would encounter or what is common. Most large software tools are proprietary. Different companies, universities, and individual projects will use different software, and you will not know what to expect until you you are recruited by a team.

This is why projects sticking to programming languages over large software is preferable in terms of ease of recruitment. Also, programming code can be published with papers a lot easier than describing how you used a piece of software (which is big if open data is important to you). That being said, it can not always be avoided. Many machines in biology require specialized software and many kinds of data are most easily manipulated with proprietary software. Do not worry about such situations. It, obviously, will not affect your current work from being presented in a standard way.

EDIT:

Sorry for the wall of text. The question was broad and this is a complicated issue. It was hard to summarize.

$\endgroup$

Not the answer you're looking for? Browse other questions tagged .