0
$\begingroup$

Dear bioinformaticians,

I could find two python APIs to mine ENSEMBL genome databases. There is a pyensembl which is more popular and then there is genomepy which is less popular. Following is my experience with both.

1. pyensembl:

pyensembl is a fast and powerful API to mine ENSEMBL genome databases. I have been using it for a while and in my experience it works very well. The name of the package may make you believe that it is developed/maintained by ENSEMBL. That is not true. Still, being an open source package with a realistic potential to be the default API for mining ENSEMBL genome databases.

However, there are some issues related to it's development that users may find disconcerting.

For example, documentation. I could only find a comprehensive api documentation for release 0.8.10. Current release is 1.1. Not even release notes are available. Therefore users have to rely on few lines of documentation that is available in the README.md.

Also, as far as I know, it is not peer reviewed even though it is an excellent analysis resource.

2. genomepy

genomepy loads all of the genome files into the RAM, making it immediately unusable, especially if you are working with larger genome such as human genome.

So my question is: Is there any other better python API for working with ENSEMBL genomes?

$\endgroup$
3
  • $\begingroup$ "That makes you slightly worried about it's reliability." You have the source code, you can see what it does and you can copy and modify as you wish. Why do you think it is unreliable? You can improve the documentation and suggest changes, but it looks like it is documented well with docstrings although the documentation has not been rebuild in a pdf format in a couple of years. $\endgroup$
    – llrs
    Commented Jul 31, 2018 at 14:28
  • $\begingroup$ @Llopis I agree with both points. (1) I just wonder why it is not published. It is is a very useful resource. I will remove the reliabilitypart from my question. Thanks. (2) Conventionally, for contributing (making pull requests), a potential contributor has to understand the code and to understand the code, the he/she has to go through the documentation (preferably the latest one). So that's why I feel documentation is an important issue. May be I will build the documentation myself and contribute. $\endgroup$
    – user345394
    Commented Jul 31, 2018 at 14:48
  • 1
    $\begingroup$ If we wrote papers on every tool we create we'd never have time to do anything productive. That and the limited benefit of actually submitting a paper on a tool/package is the reason that most never get published in that way. $\endgroup$
    – Devon Ryan
    Commented Aug 15, 2018 at 7:49

2 Answers 2

4
$\begingroup$

The correct API for Ensembl is the Ensembl REST API which is updated and maintained by Ensembl, and language agnostic.

$\endgroup$
2
  • $\begingroup$ Hi @Emily_Ensembl, I wonder if there is a easy-to-learn kind of tutorial on Ensembl REST API. I want to use it to carry out general tasks such as (1) converting gene ids to symbol and other way around and (2) fetching a genome sequences of a particular species (assembly and ensembl release) within specific coordinates. $\endgroup$
    – user345394
    Commented Apr 10, 2019 at 18:34
  • 1
    $\begingroup$ We've got an online course here. $\endgroup$ Commented Apr 11, 2019 at 15:32
6
$\begingroup$

Now there's another option, the ensembl_rest module, a thin wrapper around the Ensembl REST API to simplify its usage and make it more pythonic. You can find the documentation here.

To clarify things, I'm the creator and maintainer, but still think it's a legitimate alternative.

$\endgroup$
1
  • $\begingroup$ This looks pretty neat and actually a lot more cleaner than the default python option in the EnsEMBL page. Great work! $\endgroup$
    – Ram RS
    Commented Jul 7, 2019 at 2:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.