r/bioinformatics 1d ago

technical question Is bioinformatics migrating fully to python? (and various other questions from a beginner)

Hi everyone. I am new to bioinformatics in general. I am a biochem currently doing a bioengineering phd (still in pre-candidature). I had some snippets of bioinformatics during my undergrad but nothing beyond BLAST and docking. Never had formal programming formation, just side projects and AI-guided R coding for small data analysis and graphs.

For what I want to do for my thesis I really need to learn omics analysis properly, specially transcriptomics. During self-learning, I stumbled upon this amazing resource (https://www.sc-best-practices.org/) on single cell transcriptomics, so I have been following it as my starting point and learning cool stuff, thank you to the authors of it!

Anyways, since I've already had some experience with R, I decided to try and learn python bioinformatics as an excuse to learn python too. In the interoperability section of the book I mentioned the authors state

"A common question from new analysts is which ecosystem to focus on (referring to Bioconductor, Seurat or the Scverse). While it makes sense to start with one, and a successful analysis can be performed in any ecosystem, competent analysts should be familiar with all three and comfortable moving between them. This allows analysts to always use the best-performing tools, regardless of their implementation. Analysts who are not comfortable switching ecosystems often default to familiar packages, even when better alternatives exist elsewhere"

Which makes sense and sounds logical good advice. But then, doing exercises on public GEO datasets on bulk RNA-seq as practice, still with the mindset of sticking to python as an excuse to learn it, i stumbled upon an article (Colange et al. 2025 here) of a project that migrates a lot of tools of R to the scverse. In there, authors rationale is that python is the new default language everyone learns and they create the library InMoose to migrate or directly replace, for example, DESeq2. Furthermore, besides direct drop-in replacement tools, the authors frame python as the future choice (at least, as part of the rationale).

So, as a guy who is just starting, I wanted to ask people with experience in bioinformatics (you all) either developers or tool-users:

1) Do you marry an ecosystem like scverse or Bioconductor and just work in there for comfort? Or do you switch frequently depending on the needs?

2) For people who doesn't come from an informatics background, how long did it take for you to learn your niche and what were your best resources/helpers?

3) Do you think python will ever replace R in data analysis?

4) What is your opinion on AI-guided learning? (as for me, I use gemini to solve questions or create graphics presets but sometimes by seeing other people's codes I realize that it mashes up some concepts or methods from various pipelines into a coherent-resulting graph that I am not always sure if they make sense)

5) Do you create your own pipelines/portfolio to analyze data? Or you just tweak existing pipelines?

I appreciate any answer to any of those questions, thanks for your time in at least reading

110 Upvotes

53 comments sorted by

93

u/liitle-mouse-lion 1d ago

Neither is universally better.

R is often better for statistics first work, especially experimental design, specialist modelling, visualisation, and bioinformatics through Bioconductor. Python is usually better when the analysis needs to become reusable software, such as pipelines, APIs, applications, automation, or machine learning systems.

A decent rule of thumb: use R for analysing data, and Python for building systems that analyse data. In practice, many scientific projects benefit from both. Python as the main platform, with R used for specialist methods and validation against established packages.

11

u/lispwriter 1d ago

Yeah I’ve always worked in this way. Python is where I’d go when I need to process raw data into something that can be analyzed. Then I’d move to R for everything else.

10

u/Epistaxis PhD | Academia 1d ago

A decent rule of thumb: use R for analysing data, and Python for building systems that analyse data.

Yeah it's a flow: raw data goes through binary programs, then through Python scripts, then finally into R.

2

u/Randebuu_ 1d ago

I will follow your advice, thanks!

70

u/sid5427 1d ago

my 2 cents here - I mostly used R for all my analysis during my Phd - mainly bulk transcriptomics and then multiomics and GRNs. R tools worked perfectly for them and using R studio was very intuitive. However later on when I graduated and moved to a professional setting starting working in the single cell world especially multiome single cell. Then later onto doing atlas level work where we are integrating 100s of scRNA/multiome datasets - python became pretty much default. Mainly because python seems to scale well and lots of packages designed for parallel computation. R might have such packages but the python ecosystem seems a lot more accessible. To be fair to R - I still think it's figure making packages are much better than what's in Python.

39

u/Educational_Call_797 1d ago

R is still top tier for statistics.

1

u/Randebuu_ 1d ago

Amazing 2 cents thank you!

1

u/Confident_Bee8187 19h ago

R with BioConductor is always accessible, and I barely go it with.

48

u/padakpatek 1d ago

No. Bioinformatics is more than just single cell analysis

2

u/Randebuu_ 1d ago

I agree, it was just an example using what i have closer at the moment as a beginner. Multiomics is the most relevant for my thesis (cardiac development) and its what being mass produced at atlas level. Still appreciate any insights from outside my box

-4

u/Spare-Association714 1d ago

I use mainly linux. For compatibility. Throw a python wrapper on it and call it a day

10

u/Laprablenia 1d ago

Just use whatever language available at the moment, do not stick to one or the other. Bioinformatics is not a experimental lab with only two equipments.

17

u/KillAllTrolls 1d ago

Hey, great questions. I’m a PhD student in cancer biology, and have been doing bioinformatics on the side. I would say I’m a wet lab scientist dabbling in the dry side
1. I first started with python and scverse and other packages, and then started using R just to be cool and it seems like that’s what a lot of people use. I’ve started to get a sense for when projects/analysis needs R or Python.
2. I had no coding experience until the past year. I’ve been learning for the past year now, and still feel pretty overwhelmed most of the time, but it’s important to understand what they step you are doing actually does
3. I think python will become dominant at some point in the next 15 years. As datasets start to become larger, and ML models become more popular, python will overtake it. R and the Seurat ecosystem is heavily limited by speed and dataset size (dGC matrix in R means limits of ~16,000 genes for 1.4million cells)
4. I think ai guided learning is great. I honestly don’t know how people ever learned to code pre-ai at a productive pace. However, I would caution blindly trusting AI. I use Claude, and even these frontier models struggle with nuance and basic ordering of steps (despite still being very powerful). One example is im annotating cell types in multiple scRNA-seq datasets to merge as a reference for spatial deconvolution. AI has repeatedly misplaced the Seurat function JoinLayers at the wrong spot in my pipeline four times, despite explicit instructions and the internet discussing where/when to place this function. Many times AI will diagnose an issue in your code, and solve it in a very complicated ways despite an easy solution existing
5. All of the above. I use a mix of myself, AI tools, workflows from other labs (when exists), GitHub issues for repositories have become a favorite place of mine lately.

Best of luck.

2

u/Lvl20_Magikarp 1d ago

I’m a PhD student in chemistry with an interest in oncology and chemi/bioinformatics. Can I DM you?

2

u/Confident_Bee8187 19h ago

As datasets start to become larger, and ML models become more popular, python will overtake it. R and the Seurat ecosystem is heavily limited by speed and dataset size

I kept hearing the same thing for the past years, while in reality, both tools will choke with large datasets. Mainly because both of them are interpreted, and the reason why both can scale particularly because you are allowed to wrapped shared binaries into either Python or R then let the execution happens on either of them while the heavy lifting happens on the compiled shared binaries. Most of all, most of ML libraries in the web shares the same thing: using "low-level" languages as the core implementation, then wrap them inside either of them. Maybe Python is faster than R but both still can't be simply used on bulky tasks and have to rely on faster languages.

1

u/Randebuu_ 1d ago

Thanks for sharing your experience! Same with pre-ai era idk how people did it xD. Gad to know feeling overwhelmed is a step of the way and best of luck with your phd!

6

u/icy_end_7 1d ago

Not a PhD,

  1. I use whatever's better for the usecase. I'm a dev; very familiar with Python, so for ML and dev, I use Python and others. For mutational analyses and pipelines, I use R. For my thesis, I've used both + bash.
  2. Probably not. I've heard of PhD students doing their dissertation in R. I like ggplot alot.
  3. Fine as long as you're the one coding. It does take time. I've never had good results with AI for making workflow diagrams; I find it helpful to make those in tikz... I think most people use biorender for diagrams; I use figma/Illustrator because I'm very familiar with those.
  4. Both. Depends on whether I'm passing time or need to get things done.

Suggestion: Learn to use Linux and git (push your code + dissertation here, you wont lose your work even if your laptop gets stolen; this actually happened to two people I know; both lost their work), and LaTeX if you aren't using those already. Maybe snakemake/nextflow later. I'd also ask you to use some form of conventional commits so you save your sanity.

3

u/Randebuu_ 1d ago

LaTeX has been on the to-do for a while but never had the chance. Thank you for the insights!

1

u/anudeglory PhD | Academia 22h ago

LaTeX

I don't find this common at all in bioinformatics/biology, sure a few people might use Overleaf but the reality is that it is much much more popular in maths and physics.

So I would not prioritise LaTeX over learning BASH, R, Python, git or nextflow etc.

6

u/khaldakke 1d ago

The different packages mostly have feature parity. Statisticians who develop traditional stats/ML methods seem biased to R, popular packages are ported soon enough usually. DL methods are in python.

Sometimes the different mindsets/backgrounds manifest in implementation differences like the log2FC calcs in scanpy vs seurat.

  1. You're not married to an ecosystem, your understanding of the methods is easily transferrable.

  2. The learning never stops.

  3. The advantage R holds in statistics heavy datascience is community and established ecosystems. Python has that same advantage in just about every other niche. I doubt one would meaningfully overtake the other, it's mostly preference. I'm still holding out hope that somehow julia or another modern language takes over the community.

  4. Learning from AI is hard, it usually takes over too much of the process. I often use it to get an overview of a niche and then dive in myself.

  5. Mostly own pipelines and occasionally methods.

2

u/Randebuu_ 1d ago

Thank you for the insights!

16

u/bio_nerdette 1d ago

Not sure why you're thinking python and r are equivalent. Python for analysis and data processing, R for stats and plots, more generally speaking. There's lots of overlap of course, but r was created by statisticians, which is why it has that infuriating 1- base indexing and other annoying quirks. They both have things they're great for and for the most part it'll depend on what tool and package you're working with. There's rarely a need to build anything from scratch anymore. They've both also been around for quite a while now. 

9

u/khaldakke 1d ago

1 base indexing is dominant across math / science focused languages, and is more intuitive in that context.

11

u/bio_nerdette 1d ago

But not in programming, which is always zero, so it's a bit annoying to have an outlier that doesn't work with any of your scripts. 

3

u/sixtyorange PhD | Academia 1d ago

Some well-respected scientific programming languages are also 1-indexed, though, like Fortran (which is still in use, esp. in libraries that run "under the hood"). Lua is also a popular modern 1-based scripting language.

1

u/bio_nerdette 1d ago edited 1d ago

Fortran. Wow, that's a bit of a relic. I haven't heard much about it since they stopped teaching it in the early 2000's. Yeah some ancient frameworks were built with it, though you won't come across it much outside those legacy systems in the wild. Ah and apparently the strict indexing was only the early iterations, you could use zero base starting with Fortran 77. Didn't know that, but just checked myself. 

You can get pendantic and find exceptions to anything, but must programming languages are still going to use 0- base indexing. Those of us that started with those (especially with CS backgrounds) are going to be more comfortable with that. 

1

u/Randebuu_ 1d ago

I always thought of python+pandas+etc overlapping with R, besides some memory managing stuff, both are high level, interpreted and based on C (whatever that means). And if that overlap goes beyond by having equivalent libraries and pipelines, I think the question of where are their use cases is fair coming from just inexperience

4

u/bio_nerdette 1d ago

" based on C (whatever that means)"

Sorry I'm gonna go sit down and laugh to myself for a while. Never mind the tears. Apparently I must be getting old. 

6

u/Harold_v3 1d ago

I am at the moment trying to develop scRNA-seq packages in both R and python and man I really dislike developing in R over python. Now that could be that I am just used to working in python, but I find things in R like some functions returning tables or lists and not one or the other, stack traces that don't actually go to the issue, and poor documentation to be the biggest problems using R. However, many of the tools in R are not replicated well in python though that is changing. If I were you I would make sure you learn both and be able to use tools from one in the other. I think Python will dominate in industry from a production standpoint and that might take over in academic development but R is still very good the tool sets for statistical modeling and institutional momentum for using R means that new tools will continue to be developed in R. Maybe AI can translate functions from R to python and vice versa but when I've done that it still takes a lot of work to clean up the code. AI guided learning is great...especially for more common patterns and practices, but it helps me out regularly but can be really unreliable and even frustrating as the limits of what AI can do aren't always clear. When I've written things in R and just asked claude for a python version, there were lots of bugs and even outright glaring syntact errors. I think using a agents to iterate code might help but I haven't tried to yet because I want to conserve tokens or I am just preserving my ego. The moral of the story is, learn both R, python and others as much as possible because the more flexible your tool set the better off you will be.

1

u/Randebuu_ 1d ago

Thanks for the insights, good luck with those packages! I hope i can cite you someday

1

u/PadisarahTerminal 1d ago

The base R functions are a mess but tidyverse is pretty consistent and pretty easy to use for non development purposes. What do you think of that? R is also much better for interactive work. Jupyter notebooks are a mess and not scalable.

1

u/Harold_v3 1d ago

So I honestly have not used the tidyverse much. The thought when I took on the packages we are developing was that minimizing dependancies was a goal. Maybe my opinion on the tidyverse as a dependency and not a standard installation is something I should reconsider. I mean using tools in R is often really nice and I don’t want to say R is better or worse…but developing tools in R can be maddening. But going back to your point of using python for larger project development and R for smaller one off analysis and experimentation. That’s great, use the right tool for the job. If R works for what you need awesome. I would just make sure you learn enough python, that if you need to expand the project in a way that is really robust, python is a solid tool for that.

3

u/tobsecret 1d ago

I'd recommend starting with python but being open to using R if you need a package from there. Python bc it just gives you more options later on both in academia and in industry. R bc some types of analyses only have complete packages in R. 

1

u/Randebuu_ 1d ago

Thank you! It was more or less what I had understood so far but it means a lot coming from someone!

3

u/Caeduin 1d ago

I’ve seen these posts for years now, but its especially funny in a post-llm era.

You can very easily do both to taste. Think about python and R as “finger” languages and terminal/shell as a “wrist” language. You use the wrist to articulate the fingers usefully. You make glue/plumbing where need be to make everything else flow. This is a pattern which becomes usefully unavoidable the more you work with terminal-native tools and/or orchestration software staged from terminal, not to mention version control like Git.

In the modern era especially, these are not mutually exclusive.

1

u/Randebuu_ 1d ago

Cool analogy, thanks!

5

u/Dr_Calculon 1d ago

Python has become the go to for data mining in general not just bio. R has historically had a great developer community though

1

u/Randebuu_ 1d ago

Noted! I will prefer python to build GEO data mining scripts. Thanks!

3

u/CameraSpiritual7751 1d ago

I am a postdoc bioinformatician with experience in epigenomics, but now only work in genomics/proteomics (immunopeptidomics). I only seriously started coding properly during my latter half of the PhD (molecular biology).

I use python and R interchangeably. If I only need to do statistics, I mainly use R because the ecosystem is already there and you can get pretty far pretty fast. It has about everything you would ever need in normal biological analysis settings. I sometimes turn to Python when I want to have a change once in a while. There are some IDEs that are pretty powerful and very customizable (Spyder for example gets you very close Rstudio feel). You can spend alot of time to make your personal optimized environment, But does need at least some time to setup and get familiar with.

For tool/pipeline development I use Python. I cant be sure that everything I would need exists in R. Since python is a scripting language you can spend alot of time optimizing for performance (which I do like). Likewise for non-standard activity (e.g. web-scraping and machine learning) I also tend to go with python for the same reasons. If I really need extreme performance I then turn to Rust.

Nowadays I do use AI very frequently. It does simple and common tasks very well for example plotting and transforming data. Since I am hopping between languages frequently I never botherd learning ggplot syntax and just let AI do it for me nowadays. I just check the AI code, which I do very fast. Similarly, I also use AI for new functions, but I view it more as "giving me an working example" and looking through the code, I can often immediately understand whats going on and "learn it". One thing that AI is superior is that it knows what exists already out there so you dont have to invent the wheel twice.

R is not going away anytime soon, so get familiar with R. It will also be easy for you to learn python.

1

u/Randebuu_ 1d ago

Oooo thank you for your insights and good luck with your research! I usually work on jupyter because thats close to the RStudio feel I like, so I might give spyder a go too! And thank you for your insights on AI usage, have been doing similar!

2

u/Confident_Bee8187 19h ago

jupyter because thats close to the RStudio

Which Jupyter? If it's a notebook, then not even close - one is just a file while the other is an IDE.

7

u/Solidus27 1d ago

With AI, I think any one language has less dominance. It is easier to interconvert between languages so language hegemony doesn’t really make sense

2

u/anudeglory PhD | Academia 22h ago

Found the meat proxy!

3

u/Final-Ad4960 1d ago

R is just easier to use. Python is more versatile and can do anything that R can do but you need to put more time in it. At this time learning both is the most sensible option.

3

u/jourmungandr 1d ago

I've been using Rust a bit for really performance critical stuff.

1

u/PadisarahTerminal 1d ago

R has a lot of advantages and has a much bigger presence in pharma than python. I wonder why? If it's also way more established in biology then python as well.

1

u/FamousWorth 1d ago

Python mainly for testing and UI but C, C++, Rust and R are still often faster so parts can be rendered in those languages for speed

1

u/boredoo 18h ago

It depends on what you work on. But definitively, R is not going anywhere, and neither is Python. Learn both. Coding agents have made it almost trivial to move between them.

1

u/the_internet_nobody 12h ago

No, something else will come along, there'll never be a "full" migration. When I started bioperl was bigger than biopython. For a while it looked like Ruby might be the future. Some stuff is also secretly in C wrapped in another language...

1

u/XLizanoX 7h ago

I working with R for statistic analysis, and python for bioinformatics-cheminformatics analysis.

The two are complementary; I use Python for APIs like UniProt and PubChem, although it can also be done in R. For molecules, SMILES, and chemical properties, I prefer Python. I also notice that deep learning is widely used in Python. I use R for statistics, PCA, PLS-DA, heatmaps, and so on.

0

u/Grisward 1d ago

If your career path may take you to the industry job market, frankly python is the more powerful and versatile skill (for the bots and HR filtering), and there are a lot of “python shops” in larger groups that only look for python expertise. You do have to be good at python, or it turns into a negative.

Python is what Java used to be, the most widely used larger team development language in this space. It’s not the language that makes it fast tbh, but you can slot into an organization with python skills, call C/C++/Rust for speed, and industry seems happy with that.

For speed, it’s Rust. Make python and R bindings if needed, the speed comes from Rust.

For the majority of data analysis, visualizations, and (most) statistical approaches, use R. “Analysis” is an overloaded term — I mean after pre-processing/processing, when data are smaller. (You can do decent chunks in python here and there, but it’s not a well-travelled path.)

You can have a nice career only doing R, analyzing all manner of data types and platforms, making beautiful publication-quality figures. (Also, you can’t have any career if you need python skills to get hired. Ymmv.)

My advice would be to lean into whatever you choose. Neither language helps you if you’re not good at it. If you only do R, do R and don’t claim to be great at python. If you do python, it probably needs to be quite good python, or it will turn into a negative. In this way, frankly R might be more forgiving.

I say this not really writing much python whatsoever. I for sure use python tools frequently, but I’m calling it and not writing python in detail.

I do write and use a ton of R, and lean way into deep, skilled analysis with extra attention to figures that show the quality of data and analysis.

-4

u/idliOP 1d ago

linux/WSL has equal weightage I'd say.. when it comes to genomics side of the domain.

-5

u/Top_Fisherman9619 1d ago

If you're using R, it may be time for a colonoscopy