{"id":17835646,"url":"https://github.com/bebatut/enasearch","last_synced_at":"2026-03-09T19:14:57.616Z","repository":{"id":48037962,"uuid":"86495579","full_name":"bebatut/enasearch","owner":"bebatut","description":"A Python library for interacting with ENA's API","archived":false,"fork":false,"pushed_at":"2021-08-10T13:34:47.000Z","size":1714,"stargazers_count":24,"open_issues_count":12,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-17T13:55:06.430Z","etag":null,"topics":["api","api-client","ena"],"latest_commit_sha":null,"homepage":"http://bebatut.fr/enasearch","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bebatut.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"docs/contributing.html","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-03-28T18:49:28.000Z","updated_at":"2026-01-08T12:17:23.000Z","dependencies_parsed_at":"2022-08-12T17:20:17.869Z","dependency_job_id":null,"html_url":"https://github.com/bebatut/enasearch","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/bebatut/enasearch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bebatut%2Fenasearch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bebatut%2Fenasearch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bebatut%2Fenasearch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bebatut%2Fenasearch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bebatut","download_url":"https://codeload.github.com/bebatut/enasearch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bebatut%2Fenasearch/sbom","scorecard":{"id":229819,"data":{"date":"2025-08-11","repo":{"name":"github.com/bebatut/enasearch","commit":"7c1e2806a81a58f86da4145834ea7200514b281b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/19 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 27 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T04:38:45.150Z","repository_id":48037962,"created_at":"2025-08-17T04:38:45.150Z","updated_at":"2025-08-17T04:38:45.150Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30308954,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T17:35:44.120Z","status":"ssl_error","status_checked_at":"2026-03-09T17:35:43.707Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","api-client","ena"],"created_at":"2024-10-27T20:24:05.817Z","updated_at":"2026-03-09T19:14:57.592Z","avatar_url":"https://github.com/bebatut.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"ENASearch\n=========\n\n.. image:: https://travis-ci.org/bebatut/enasearch.svg?branch=master\n    :target: https://travis-ci.org/bebatut/enasearch\n.. image:: https://badge.fury.io/py/enasearch.svg\n    :target: https://badge.fury.io/py/enasearch\n.. image:: https://anaconda.org/bioconda/enasearch/badges/installer/conda.svg\n    :target: https://anaconda.org/bioconda/enasearch\n.. image:: https://codecov.io/gh/bebatut/enasearch/branch/master/graph/badge.svg\n  :target: https://codecov.io/gh/bebatut/enasearch\n.. image:: https://landscape.io/github/bebatut/enasearch/improve_code_health/landscape.svg?style=flat\n    :target: https://landscape.io/github/bebatut/enasearch/improve_code_health\n    :alt: Code Health\n\nENASearch is a Python library for interacting with `ENA \u003chttp://www.ebi.ac.uk/ena/browse/programmatic-access\u003e`_'s API.\n\nContext\n-------\n\nThe `European Nucleotide Archive (ENA) \u003chttps://www.ebi.ac.uk/ena\u003e`_ is a database with a comprehensive record of nucleotide sequencing information (raw sequencing data, sequence assembly information and functional annotation). The data contained in ENA can be accessed manually or programmatically via `REST URLs \u003chttp://www.ebi.ac.uk/ena/browse/programmatic-access\u003e`_. However, building HTTP-based REST requests is not always straightforward - a user friendly, high-level access is needed to make it easier to interact with ENA programmatically.\n\nWe developed ENASearch, a Python library to search and retrieve data from ENA database. It also allows for rich querying support by accessing different fields, filters or functions offered by ENA. ENASearch can be used as a Python package, through a command-line interface or inside Galaxy.\n\n\nUsage\n-----\n\nENASearch can be used via command-line:\n\n.. code-block:: bash\n\n    $ enasearch --help\n    Usage: enasearch [OPTIONS] COMMAND [ARGS]...\n\n      The Python library for interacting with ENA's API\n\n    Options:\n      --version   Show the version and exit.\n      -h, --help  Show this message and exit.\n\n    Commands:\n      get_analysis_fields       Get the fields extractable for an analysis.\n      get_display_options       Get the list of possible formats to display...\n      get_download_options      Get the options for download of data from...\n      get_filter_fields         Get the filter fields of a result to build a...\n      get_filter_types          Return the filters usable for the different...\n      get_results               Get the possible results (type of data).\n      get_returnable_fields     Get the fields extractable for a result.\n      get_run_fields            Get the fields extractable for a run.\n      get_sortable_fields       Get the fields of a result that can sorted.\n      get_taxonomy_results      Get list of taxonomy results.\n      retrieve_analysis_report  Retrieve analysis report from ENA.\n      retrieve_data             Retrieve ENA data (other than taxon).\n      retrieve_run_report       Retrieve run report from ENA.\n      retrieve_taxons           Retrieve data from the ENA Taxon Portal.\n      search_data               Search data given a query.\n\n    $ enasearch search_data --help\n    Usage: enasearch search_data [OPTIONS]\n\n      Search data given a query.\n\n      This function\n\n      - Extracts the number of possible results for the query - Extracts the all\n      the results of the query (by potentially running several times the search\n      function)\n\n      The output can be redirected to a file and directly display to the\n      standard output given the display chosen.\n\n    Options:\n      --free_text_search      Use free text search, otherwise the data warehouse\n                              is used\n      --query TEXT            Query string, made up of filtering conditions,\n                              joined by logical ANDs, ORs and NOTs and bound by\n                              double quotes; the filter fields for a query are\n                              accessible with get_filter_fields and the type of\n                              filters with get_filter_types  [required]\n      --result TEXT           Id of a result (accessible with get_results)\n                              [required]\n      --display TEXT          Display option to specify the display format\n                              (accessible with get_display_options)  [required]\n      --download TEXT         Download option to specify that records are to be\n                              saved in a file (used with file option, list\n                              accessible with get_download_options)\n      --file PATH             File to save the content of the search (used with\n                              download option)\n      --fields TEXT           Fields to return (accessible with\n                              get_returnable_fields, used only for report as\n                              display value) [multiple or comma-separated]\n      --sortfields TEXT       Fields to sort the results (accessible with\n                              get_sortable_fields, used only for report as display\n                              value) [multiple or comma-separated]\n      --offset INTEGER RANGE  First record to get (used only for display different\n                              of fasta and fastq\n      --length INTEGER RANGE  Number of records to retrieve (used only for display\n                              different of fasta and fastq\n      -h, --help              Show this message and exit.\n\nIt can also be used as a Python library:\n\n.. code-block:: python\n\n    \u003e\u003e\u003e import enasearch\n    \u003e\u003e\u003e enasearch.retrieve_data(\n            ids=\"A00145\",\n            display=\"fasta\",\n            download=None,\n            file=None,\n            offset=0,\n            length=100000,\n            subseq_range=\"3-63\",\n            expanded=None,\n            header=None)\n    [SeqRecord(seq=Seq('GAAGGAAGGTCTTCAGAGAACCTAGAGAGCAGGTTCACAGAGTCACCCACCTCA...GCC', SingleLetterAlphabet()), id='ENA|A00145|A00145.1', name='ENA|A00145|A00145.1', description='ENA|A00145|A00145.1 B.taurus BoIFN-alpha A mRNA : Location:3..63', dbxrefs=[])]\n\nThe information extracted from ENA can be in several formats: HTML, Text, XML, FASTA, FASTQ, ... XML outputs are transformed in a Python dictionary using xmltodict and the FASTA and FASTQ into SeqRecord objects using `BioPython \u003chttp://biopython.org/wiki/Biopython\u003e`_.\n\n\nInstallation\n------------\n\nENASearch can be installed with pip:\n\n.. code-block:: bash\n\n    $ pip install enasearch\n\nor with conda:\n\n.. code-block:: bash\n\n    $ conda install -c bioconda enasearch\n\nTests\n-----\n\nENASearch comes with tests:\n\n.. code-block:: bash\n\n    $ make test\n\nThese tests are automatically run on `TravisCI \u003chttps://travis-ci.org/bebatut/enasearch\u003e`_ for each Pull Request.\n\nDocumentation\n-------------\n\nDocumentation about ENASearch is available online at `http://bebatut.fr/enasearch \u003chttp://bebatut.fr/enasearch\u003e`_\n\nTo update it:\n\n1. Make the changes in `src/docs`\n2. Generate the doc with \n\n  .. code-block:: bash\n\n    $ make doc\n\n3. Check it by opening the `docs/index.html \u003cdocs/index.html\u003e`_ file in a web browser\n4. Propose the changes via a Pull Request\n\nGenerate the data descriptions\n------------------------------\n\nTo run, ENASearch needs some data from ENA to describe how to query ENA. \nCurrently, such information is manually extracted into CSV files in the `data` directory. Python objects are generated from these CSV files with\n\n.. code-block:: bash\n\n    $ python src/serialize_ena_data_descriptors.py\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbebatut%2Fenasearch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbebatut%2Fenasearch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbebatut%2Fenasearch/lists"}