Introduction Last updated: 2024-07-26

Representational state transfer (REST has been employed throughout the software industry and is now a widely accepted set of guidelines for creating stateless, reliable web APIs in Genomics and Biological Data Resources. REST can be defined as a software architectural style that has been created to guide the design the architecture for the World Wide Web. . The goal of REST is to increase performance, scalability, simplicity, modifiability, visibility, portability, and reliability.

To allow genomic access to the ReMap ChIP-seq catalogue we designed a simple REST API.

A Simple Wget example:

Fetching ChIP-seq peaks in human (hg38) on chr1:xxxx-yyyy coordinates. USCS link to region embed here

wget -q --header='Content-type:application/json' 'http://remap-rest.univ-amu.fr/api/V1/get_peaks/2022/hg38/all/chr1:100000-150000' 

About ReMap

ReMap is a large scale integrative analysis of DNA-binding experiments for Homo sapiens, Mus musculus, Drosophila melanogaster and Arabidopsis thaliana transcriptional regulators. The catalogues are the results of the manual curation of ChIP-seq, ChIP-exo, DAP-seq from public sources (GEO, ENCODE, ENA).

ReMap has been the first large scale integrative initiative with dedicated curation and uniform data processing pipeline to reveal the complex architecture of the human regulatory landscape. The core foundation of the ReMap project rely on the manual curation and annotation of experiments metadata. Each experiment metadata introduced in ReMap has been assessed and manually curated to ensure correct target and biotype annotation

Want to know more about ReMap ? Read our papers

Data types

The ReMap database provides three majors atlases, the main catalog containing all binding regions, a non-redundant set and a CRMs atlas. Indeed, to show a discrete repertoire of binding regions in the genome, the redundant binding regions are merged for identical TRs resulting in a multi-cell, multi-tissue regulatory map of non-redundant binding regions. ReMap provides non-redundant binding regions (NR peaks) for each target, a unique feature not seen in other databases. This gives an accurate genomic location of peaks regardless of biotypes, in a multicell manner. The CRM atlas has been improved with a new methodology that relies on detecting peak density along the genome, reinforcing the identification of regulatory hotspots by the integration of ChIP-seq from various cells, antibodies, and laboratories.

The three datatypes in ReMap:
  • All peaks : Contains all peaks, for all datasets, across many biotypes and experimental conditions
  • Non Redundant peaks : Also called NR peaks, here redundancy has been removed
  • Cis Regulatory Modules : One CRM is a clusters of many NR peaks

Why a REST API ?

Language agnostic access to ReMap
By creating a REST API for ReMap we aimed for a language agnostic way to access the ReMap ChIP-seq peaks.
  • The ReMap REST query the to ReMap ChIP-seq catalogue based on genomic coordinates.
  • The REST API aim to provide a stable service, only limited by the network latenc and is a read only service.
  • Our API allows access to previous ReMap releases.
  • It allows filtering on specific Transcriptional Regulators and Biotype.
JSON ouput
The ReMap REST API returns data in JSON format, see JSON doc for further information, but :
  • JSON stands for JavaScript Object Notation.
  • JSON is a lightweight data-interchange format.
  • JSON is often used when data is sent from a server to a web page
  • Code for reading and generating JSON exists in many programming languages.

API overview

Listing of all endpoints

Endpoints Description
/get_peaks Return ReMap peaks given a genomic coordinate
/get_peaks/.../target Return ReMap peaks given a genomic coordinate and target name (eg. FOXA1)
/get_peaks/.../biotype Return ReMap peaks given a genomic coordinate and biotype (eg. MCF-7)
/get_peaks/.../target/.../biotype Return ReMap peaks given a genomic coordinate a target and a biotype (eg. FOXA1 and MCF-7)

Please note

In all get_peaks endpoints, the coordinates in this format chr:start-end are compulsory

You will also have to provide a genome assembly (example hg38)

As well as the ReMap datatype (example all peaks)

get_peaks

The get_peaks endpoint of the REST API retrieves ReMap peaks data for specified genomic coordniates. It requires the release number, genome assembly, data type, chromosome name, and start and end coordinates of the genomic region. For example, the URL http://remap-rest.univ-amu.fr/api/V1/get_peaks/2022/hg38/all/chr1:100000-150000 would request peaks for release 2022, assembly hg38, all data types, on chromosome 1 from position 100000 to 150000. This endpoint enables precise querying of ReMap peaks for various research applications.

Structure of the URL

http://remap-rest.univ-amu.fr/api/V1/get_peaks/{release}/{assembly}/{datatype}/{chr:start-end}

NameTypeDescriptionExample Values
release Num Release number 2022
assembly String Genome assembly hg38
datatype String all nr crm all
chr String Chromosome name chr1
start Num Start coordinate of the genomic region 1234567
end Num End coordinate of the genomic region 1244567

get_peaks/.../target/{target}

The get_peaks/.../target/{target} endpoint of the ReMap REST API allows users to retrieve genomic peak data filtered by specific transcription factor (TF) targets within a defined genomic region. The endpoint URL is structured to include parameters for the release number, genome assembly, data type, chromosome name, start and end coordinates, and target transcription factor(s). For instance, the URL http://remap-rest.univ-amu.fr/api/V1/get_peaks/2022/hg38/all/chr1:100000-150000/target/ESR1 fetches peaks for the transcription factor ESR1 in release 2022, assembly hg38, all data types, on chromosome 1 from position 100000 to 150000. This endpoint supports querying by single or multiple TF targets, enhancing the specificity of genomic data retrieval for research purposes.

Structure of the URL

http://remap-rest.univ-amu.fr/api/V1/get_peaks/{release}/{assembly}/{datatype}/{chr:start-end}/target/{target}

NameTypeDescriptionExample Values
release Num Release number 2022
assembly String Genome assembly hg38
datatype String all nr crm all
chr String Chromosome name chr1
start Num Start coordinate of the genomic region 1234567
end Num End coordinate of the genomic region 1244567
target String TF name, or list of TF names (eg: CTCF or CTCF;FOXA1;CEBPA) FOXA1

get_peaks/.../biotype/{biotype}

The get_peaks/.../biotype/{biotype} endpoint of the ReMap REST API allows users to retrieve genomic peak data filtered by specific cell line biotypes within a defined genomic region. The endpoint URL is structured to include parameters for the release number, genome assembly, data type, chromosome name, start and end coordinates, and cell line biotype(s). For example, the URL http://remap-rest.univ-amu.fr/api/V1/get_peaks/2022/hg38/all/chr1:100000-150000/biotype/U2OS fetches peaks for the U2OS cell line in release 2022, assembly hg38, all data types, on chromosome 1 from position 100000 to 150000. This endpoint supports querying by single or multiple cell line biotypes, facilitating targeted retrieval of genomic data for various research applications.

Structure of the URL

http://remap-rest.univ-amu.fr/api/V1/get_peaks/{release}/{assembly}/{datatype}/{chr:start-end}/biotype/{biotype}

NameTypeDescriptionExample Values
release Num Release number 2022
assembly String Genome assembly hg38
datatype String all nr crm all
chr String Chromosome name chr1
start Num Start coordinate of the genomic region 1234567
end Num End coordinate of the genomic region 1244567
biotype String Cell line name, or list of Cell names (eg: K562 or MCF-7;A589;K562) K562

get_peaks/.../target/{target}/biotype/{biotype}

The get_peaks/.../target/{target}/biotype/{biotype} endpoint of the ReMap REST API enables users to retrieve genomic peak data filtered by both specific transcription factor (TF) targets and cell line biotypes within a defined genomic region. The endpoint URL includes parameters for the release number, genome assembly, data type, chromosome name, start and end coordinates, TF target(s), and cell line biotype(s). For instance, the URL http://remap-rest.univ-amu.fr/api/V1/get_peaks/2022/hg38/all/chr1:100000-150000/target/ESR1/biotype/U2OS fetches peaks for the transcription factor ESR1 in the U2OS cell line, for release 2022, assembly hg38, all data types, on chromosome 1 from position 100000 to 150000. This endpoint supports querying by multiple TF targets and cell line biotypes, providing precise and targeted genomic data for advanced research needs.

Structure of the URL

http://remap-rest.univ-amu.fr/api/V1/get_peaks/{release}/{assembly}/{datatype}/{chr:start-end}/target/{target}/biotype/{biotype}

NameTypeDescriptionExample Values
release Num Release number 2022
assembly String Genome assembly hg38
datatype String all nr crm all
chr String Chromosome name chr1
start Num Start coordinate of the genomic region 1234567
end Num End coordinate of the genomic region 1244567
target String TF name, or list of TF names (eg: CTCF or CTCF;FOXA1;CEBPA) FOXA1
biotype String Cell line name, or list of Cell names (eg: K562 or MCF-7;A589;K562) K562

API documentation

API Core Documentation

Explore the documentation to the ReMap REST API, detailing all available endpoints, parameters, and response formats. This documentation is your go-to resource for integrating ReMap's genomic data into your applications. Click the button below to access the Core API Documentation in a new window.

Open Core API Documentation

API Live

Experience the interactive ReMap API Live Documentation, where you can test endpoints in real-time, see live responses, and explore the API's capabilities. Click the button below to open the API Live Documentation in a new window.

ReMap API Live

Section Item 3.3

Vivamus efficitur fringilla ullamcorper. Cras condimentum condimentum mauris, vitae facilisis leo. Aliquam sagittis purus nisi, at commodo augue convallis id. Sed interdum turpis quis felis bibendum imperdiet. Mauris

API clients

To help users integrate ReMap's REST API into their workflows, we provide example clients in various programming languages and tools. These examples demonstrate how to make requests and handle responses using Perl, Python (both Python 2 and 3), Java, R, Curl, and Wget. Each client showcases the simplicity and flexibility of interacting with the API, allowing you to retrieve and process genomic data efficiently. Whether you are scripting in Perl, building applications in Java, or using command-line tools like Curl and Wget, these examples will guide you through the process of accessing ReMap's rich genomic datasets.

Across the clients

This example retrieves peaks from the ReMap API for the specified genomic region on chromosome 5, focusing on the transcription factors CTCF and FOXA1. It uses data from the 2022 release and the hg38 genome assembly. The all datatype parameter indicates that all types of peak data are retrieved for these transcription factors in the given region.

Perl

Ah, Perl users! If you’re reading this, chances are you’ve got a few grey hairs and remember the Y2K bug like it was yesterday. Fear not, Perl is timeless, and so is our support for it. Make use of our Perl API client example and relive the glory days of Perl bioinformatics, now with genomic data from ReMap.


use strict;
use warnings;

use HTTP::Tiny;
use JSON;
use Data::Dumper;

# Initialize HTTP client
my $http = HTTP::Tiny->new();

# Define the server and endpoint
my $server = 'https://remap-rest.univ-amu.fr';
my $ext = '/api/V1/get_peaks/2022/hg38/all/chr5:100000-150000/target/CTCF;FOXA1';

# Perform the GET request
my $response = $http->get($server.$ext, {
  headers => { 'Content-Type' => 'application/json' }
});

# Check if the request was successful
if (!$response->{success}) {
  die "Failed to retrieve data: $response->{status} $response->{reason}\n";
}

# Decode the JSON response
my $content = $response->{content};
my $data = decode_json($content);

# Print the results
print Dumper($data);

Explanation:

  • HTTP::Tiny: This example uses the HTTP::Tiny module to make an HTTP GET request to the API.
  • Response Handling: The response is checked for success, and the content is decoded from JSON format.
  • Error Handling: If the request fails, an error message is printed with details on the failure.

Ensure that you have the necessary Perl modules installed via CPAN to run this script successfully.

Python

Attention Python enthusiasts! Whether you're a seasoned coder or just starting out, our Python API client example make it easy to interact with the ReMap API. Fetch genomic data seamlessly and integrate it into your projects with a few lines of Python code.

import requests

# Define the server and endpoint
server = "https://remap-rest.univ-amu.fr"
ext = "/api/V1/get_peaks/2022/hg38/all/chr5:100000-150000/target/CTCF;FOXA1"

# Perform the GET request
response = requests.get(server + ext, headers={"Content-Type": "application/json"})

# Check if the request was successful
if not response.ok:
    print(f"Failed to retrieve data: {response.status_code} {response.reason}")
    response.raise_for_status()

# Decode the JSON response
data = response.json()

# Print the results
import json
print(json.dumps(data, indent=2))

This script uses the requests library to make the GET request and the json library to print the formatted response. Make sure you have the requests library installed:

pip install requests

Java

Hello Java developers! Ready to bring some genomic data into your Java applications? Our Java API client examples make it straightforward to connect with the ReMap API. Dive in and see how easily you can fetch and integrate genomic information using Java.

 
import java.net.URL;
import java.net.URLConnection;
import java.net.HttpURLConnection;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.Reader;
import com.google.gson.*;

public class ReMapApiClient {
    public static void main(String[] args) throws Exception {
        String server = "http://localhost:8000/";
        String ext = "api/V1/get_peaks/2022/hg38/all/chr5:100000-150000/target/CTCF;FOXA1?format=json";
        URL url = new URL(server + ext);

        URLConnection connection = url.openConnection();
        HttpURLConnection httpConnection = (HttpURLConnection)connection;

        httpConnection.setRequestProperty("Content-Type", "application/json");

        InputStream response = connection.getInputStream();
        int responseCode = httpConnection.getResponseCode();

        if(responseCode != 200) {
            throw new RuntimeException("Response code was not 200. Detected response was "+responseCode);
        }

        String output;
        Reader reader = null;
        try {
            reader = new BufferedReader(new InputStreamReader(response, "UTF-8"));
            StringBuilder builder = new StringBuilder();
            char[] buffer = new char[8192];
            int read;
            while ((read = reader.read(buffer, 0, buffer.length)) > 0) {
                builder.append(buffer, 0, read);
            }
            output = builder.toString();
        }
        finally {
            if (reader != null) try {
                reader.close();
            }
            catch (IOException logOrIgnore) {
                logOrIgnore.printStackTrace();
            }
        }
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        JsonElement je = JsonParser.parseString(output);
        String prettyJsonString = gson.toJson(je);
        System.out.println(prettyJsonString);
    }
}

Explanation

  • URL Setup: The URL object is created with the base server URL and the specific API endpoint for fetching peak data.
  • Connection: An HttpURLConnection object is used to open a connection to the API endpoint and set the request property to application/json to specify the data format.
  • Response Handling: The response is read from the input stream. A BufferedReader is used to efficiently read the response data into a StringBuilder.
  • Response Code Check: The response code is checked to ensure it is 200 (HTTP OK). If not, an exception is thrown.
  • JSON Formatting: The response is parsed into a JSON object using Gson, and formatted into a pretty-printed JSON string for easier readability.
  • Error Handling: Includes handling for potential IOExceptions during reading and closing of the reader.

Ensure that you have the Gson library included in your project to use Gson for JSON parsing and pretty-printing.

R

If you're looking to incorporate genomic data into your R projects, our API client example are just what you need. With concise and effective R code, you can easily fetch and handle data from the ReMap API, streamlining your data analysis and visualization efforts.


# Load necessary libraries
library(httr)
library(jsonlite)

# Define the server and endpoint
server <- "http://localhost:8000"
endpoint <- "/api/V1/get_peaks/2022/hg38/all/chr5:100000-150000/target/CTCF;FOXA1"
url <- paste0(server, endpoint)

# Perform the GET request
response <- GET(url, add_headers(`Content-Type` = "application/json"))

# Check if the request was successful
if (status_code(response) != 200) {
  stop("Failed to retrieve data: HTTP error code ", status_code(response))
}

# Decode the JSON response
data <- fromJSON(content(response, "text"))

# Print the results
print(data)

Explanation:

  • httr and jsonlite: This example uses the httr package to make the HTTP GET request and the jsonlite package to handle JSON data.
  • Response Handling: The response is checked for a successful status code, and the JSON content is decoded.
  • Error Handling: If the request fails, an error message is generated with details on the failure.

Ensure you have the necessary R packages installed to run this script successfully.

Curl

For those who prefer working from the command line, curl provides a simple and effective way to interact with the ReMap API. Whether you’re testing endpoints or integrating API calls into your scripts, this straightforward curl example demonstrates how to fetch genomic data with just a single command. It’s quick, efficient, and perfect for rapid queries.


curl -X GET "http://localhost:8000/api/V1/get_peaks/2022/hg38/all/chr5:100000-150000/target/CTCF;FOXA1" -H "Content-Type: application/json"


Explanation:

  • curl Command: This example uses the curl command-line tool to make an HTTP GET request to the API endpoint.
  • Request Method: The -X GET option specifies that this is a GET request.
  • Headers: The -H "Content-Type: application/json" option sets the appropriate request header for JSON content.

Run this command in your terminal to fetch data from the ReMap API.

Wget

Finally an even more straightforward command-line approach, with wget, an excellent tool for interacting with the ReMap API. With just a single command, you can fetch genomic data and direct the output to your terminal or a file. It’s a handy option for quick data retrieval and integration into scripts or workflows..


wget -q --header="Content-Type: application/json" "http://localhost:8000/api/V1/get_peaks/2022/hg38/all/chr5:100000-150000/target/CTCF;FOXA1" -O -


Explanation:

  • wget Command: This example uses the wget command-line tool to make an HTTP GET request to the API endpoint.
  • Request Options: The -q option runs wget in quiet mode, and --header="Content-Type: application/json" sets the appropriate request header for JSON content.
  • Output: The -O - option directs wget to output the response to the terminal.

Use this command in your terminal to retrieve data from the ReMap API efficiently.

Integration with other APIs

The ReMap REST application programming interface, as well as others Resources with REST APIs can be used to query and access their data programmatically. This is the basement of interoperability

A few RESTfull resources that can be used with ReMap:
Databases Content Entry point Papers
JASPAR @UCSC Transcription Factor Binding Sites https://api.genome.ucsc.edu/ doi:10.1093/nar/gkac1072
ENCODE @UCSC Genes and Genomes https://rest.ensembl.org/ doi:10.1093/bioinformatics/btu613
Uniprot Proteins annotations https://www.ebi.ac.uk/proteins/api/doc doi:10.1093/nar/gkx237
JASPAR @UCSC Transcription Factor Binding Sites https://jaspar.genereg.net/api/ doi:10.1093/bioinformatics/btx804

With JASPAR

JASPAR API documentation :

U/a>

JASPAR API help :

With ENCODE from UCSCC

Perl Script Explanation: Fetching cCREs and ReMap Peaks

This page explains the Perl script which fetches cCREs from UCSC and retrieves ReMap peaks within those cCRE regions.

1. Setup and Initialization

First, we initialize the necessary Perl modules for HTTP requests and JSON handling:

use strict;
use warnings;
use LWP::UserAgent;
use JSON;

The script makes HTTP requests to APIs, so it uses the LWP::UserAgent module. JSON responses are parsed using the JSON module.

2. Defining the UserAgent

We define a UserAgent object which will handle the HTTP requests and set a timeout of 10 seconds. Additionally, SSL verification is disabled for testing purposes:

my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->ssl_opts(verify_hostname => 0, SSL_verify_mode => 0x00);

This is necessary to avoid SSL errors when connecting to the UCSC API over HTTPS.

3. Fetching cCREs from UCSC

The script fetches cCRE (candidate Cis-Regulatory Elements) data from the UCSC Genome Browser's API:

my $ucsc_url = "https://api.genome.ucsc.edu/getData/track?genome=hg38;track=encodeCcreCombined;chrom=chr1;start=1470000;end=1480000";

my $response = $ua->get($ucsc_url);

The URL is specifically designed to fetch cCRE data for chromosome 1 between positions 1,470,000 and 1,480,000. The response from this request will be in JSON format.

4. Handling the Response and Parsing JSON

If the request is successful, the JSON response is parsed, and the script checks if it contains the required cCRE data:

if ($response->is_success) {
    my $content = $response->decoded_content;
    my $ccres_json = decode_json($content);

    unless (exists $ccres_json->{encodeCcreCombined} && @{$ccres_json->{encodeCcreCombined}}) {
        die "No cCREs found in the response.";
    }

The JSON structure is decoded into a Perl hash, and the script checks if the key encodeCcreCombined exists, which holds the cCRE data.

5. Extracting cCRE Information

For each cCRE element in the response, the script extracts relevant fields such as chromosome, start, end, ucscLabel, and description. This information is printed to the console:

foreach my $ccre (@{$ccres_json->{encodeCcreCombined}}) {
    my $chrom = $ccre->{chrom};
    my $start = $ccre->{chromStart};
    my $end = $ccre->{chromEnd};
    my $ucsc_label = $ccre->{ucscLabel};
    my $description = $ccre->{description};

    print "\n\ncCRE: Chromosome: $chrom, Start: $start, End: $end\n";
    print "UCSC Label: $ucsc_label\n";
    print "Description: $description\n";
}

Each cCRE is printed with its coordinates, UCSC label, and description.

6. Fetching ReMap Peaks for Each cCRE

After extracting the cCRE data, the script constructs a URL to fetch ReMap peaks within each cCRE region:

my $remap_url = "http://localhost:8000/api/V1/get_peaks/2022/hg38/all/$chrom:$start-$end";
my $remap_response = $ua->get($remap_url);

This fetches the ReMap peaks data that overlap with the current cCRE. The start and end positions are dynamically set based on the cCRE coordinates.

7. Parsing and Formatting ReMap Peaks

For each ReMap peak, the script extracts fields such as chromosome, start, end, experiment, transcription factor (TF), and biotype. These are printed in BED format:

foreach my $peak (@{$remap_json->{peaks}}) {
    my $peak_chrom = $peak->{peakValues}{chrom};
    my $peak_start = $peak->{peakValues}{chromStart};
    my $peak_end = $peak->{peakValues}{chromEnd};
    my $experiment = $peak->{peakValues}{name}{data}{Experiment};
    my $tf = $peak->{peakValues}{name}{data}{TF};
    my $biotype = $peak->{peakValues}{name}{data}{Biotype};

    # Create BED format
    my $name = join(":", $experiment, $tf, $biotype);
    my $score = 1000;
    my $strand = ".";
    
    print "$peak_chrom\t$peak_start\t$peak_end\t$name\t$score\t$strand\n";
}

The output is printed in the following BED format: chrom, start, end, name, score, and strand. This is the standard format used for genomic data files.


#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use JSON;

my $verbose = 0;

# Initialize UserAgent for HTTP requests
my $ua = LWP::UserAgent->new;
$ua->timeout(10);

# Disable SSL verification (for testing purposes)
$ua->ssl_opts(verify_hostname => 0, SSL_verify_mode => 0x00);

# UCSC API endpoint for cCREs
my $ucsc_url = "https://api.genome.ucsc.edu/getData/track?genome=hg38;track=encodeCcreCombined;chrom=chr1;start=1470000;end=1480000";

# Fetch cCREs from UCSC
my $response = $ua->get($ucsc_url);
if ($response->is_success) {
    my $content = $response->decoded_content;
    my $ccres_json = decode_json($content);

    # Print cCREs data for debugging
    print "UCSC cCRE Data:\n" if $verbose;
    print to_json($ccres_json, { pretty => 1 }) if $verbose;

    # Check if cCREs data is available
    unless (exists $ccres_json->{encodeCcreCombined} && @{$ccres_json->{encodeCcreCombined}}) {
        die "No cCREs found in the response.";
    }

    # Loop through each cCRE and fetch ReMap peaks within this region
    foreach my $ccre (@{$ccres_json->{encodeCcreCombined}}) {
        my $chrom = $ccre->{chrom};
        my $start = $ccre->{chromStart};
        my $end = $ccre->{chromEnd};
        my $ucsc_label = $ccre->{ucscLabel};
        my $description = $ccre->{description};

        # Print extracted values along with ucscLabel and description
        print "\n\ncCRE: Chromosome: $chrom, Start: $start, End: $end\n";
        print "UCSC Label: $ucsc_label\n";
        print "Description: $description\n";

        # Prepare ReMap API URL
        my $remap_url = "http://localhost:8000/api/V1/get_peaks/2022/hg38/all/$chrom:$start-$end";

        print "ReMap API URL: $remap_url\n";  # Debug URL

        # Fetch ReMap peaks within cCRE
        my $remap_response = $ua->get($remap_url);
        if ($remap_response->is_success) {
            my $remap_content = $remap_response->decoded_content;
            my $remap_json = decode_json($remap_content);

            # Print fetched ReMap peaks for debugging
            print "ReMap Peaks Data:\n" if $verbose;
            print to_json($remap_json, { pretty => 1 }) if $verbose;

            # Check if ReMap peaks data is available
            unless (exists $remap_json->{peaks} && @{$remap_json->{peaks}}) {
                warn "No peaks found in the ReMap response for cCRE: $chrom:$start-$end";
                next;
            }

            # Loop through each ReMap peak within the cCRE region
            foreach my $peak (@{$remap_json->{peaks}}) {
                my $peak_chrom = $peak->{peakValues}{chrom};
                my $peak_start = $peak->{peakValues}{chromStart};
                my $peak_end = $peak->{peakValues}{chromEnd};
                my $experiment = $peak->{peakValues}{name}{data}{Experiment};
                my $tf = $peak->{peakValues}{name}{data}{TF};
                my $biotype = $peak->{peakValues}{name}{data}{Biotype};

                # Create BED format (chrom, start, end, name, score, strand)
                my $name = join(":", $experiment, $tf, $biotype);
                my $score = ".";  # Default score (can be adjusted based on your needs)
                my $strand = ".";  # Strand information (set as '.' if unknown)

                # Print the BED formatted line
                print "$peak_chrom\t$peak_start\t$peak_end\t$name\t$score\t$strand\n";
            }

        } else {
            warn "Failed to fetch ReMap data: " . $remap_response->status_line;
        }
    }
} else {
    die "Failed to fetch UCSC cCRE data: " . $response->status_line;
}

With Uniprot

Uniprot documentation : https://www.uniprot.org/help/programmatic_access

Uniprot RESTfull Github : https://github.com/ebi-uniprot/uniprot-rest-api

Uniprot help : https://www.uniprot.org/help/api_queries

Benchmarks

Explore our comprehensive benchmarks for our REST API, designed to accommodate varying query parameters such as the number of genomic regions and genomic size, crucial for efficiently handling the extensive dataset of 180 million peaks in the human genome, ensuring seamless and optimized querying experience.

Benchmarks by number of regions

In our benchmark section, we put our API through its paces by gradually ramping up the number of genomic regions queried. This hands-on testing helps us understand how our API performs under different workloads, giving scientists and bioinformaticians valuable insights into its speed and reliability across various scenarios. By simulating real-world usage, we ensure that our API can handle the demands of large-scale genomic analyses, empowering researchers with the tools they need for their studies.

Advise

At the light of our benchmark, we stronlgy advise to query our catalogue by batch of maximum XXXX coordinates.

Benchmarks by size of regions

In another part of our benchmarking, we explore the API's performance as we increase the size of the genomic regions being queried. This analysis helps us understand how the API handles larger genomic segments, offering scientists and bioinformaticians practical insights into its scalability and efficiency. By simulating different genomic contexts, we ensure that our API remains reliable and responsive, even when dealing with extensive genomic data sets, thus providing researchers with robust tools for their analyses.

Advise

At the light of our benchmark, we stronlgy advise to query our catalogue with cooridnates no larger than XX Kb / 0.X Mb as it will impact the speed or your query. Query many shorter regions will be fatser one large region.

Benchmark conclusion

Vivamus efficitur fringilla ullamcorper. Cras condimentum condimentum mauris, vitae facilisis leo. Aliquam sagittis purus nisi, at commodo augue convallis id. Sed interdum turpis quis felis bibendum imperdiet. Mauris pellentesque urna eu leo gravida iaculis. In fringilla odio in felis ultricies porttitor. Donec at purus libero. Vestibulum libero orci, commodo nec arcu sit amet, commodo sollicitudin est. Vestibulum ultricies malesuada tempor.

Citing

If your use the ReMap REST API please cite xxxx et al. (URL).

To cite the ReMap data usage, please cite the latest (or corresponding) ReMap paper XXXX et al. (URL) .

References

If your use the ReMap REST API please cite xxxx et al. (URL).

To cite the ReMap data usage, please cite the latest ReMap paper Hammal, F. et al. Nucleic Acids Research, Volume 50, Issue D1, 7 January 2022.

Licensing

The ReMap catalogues (2022, 2020, 2018, 2015) are under CC BY-NC 4.0 international license, while ReMap-REST, ReMapEnrich, ReMap-Pipeline, are under GNU GPLv3 licence.

ReMap is a database of transcriptional regulators peaks derived from curated ChIP-seq, ChIP-exo, DAP-seq experiments in Human, Mouse, Fruit Fly and Arabidopsis Thaliana. The current ReMap version is the 2022 (4rth) release.

Contact us

We are here to assist you with any questions, queries, or issues you may encounter while using the ReMap REST API. Whether you need further information, have a specific request, or wish to report a bug, please don't hesitate to get in touch with us. Your feedback is invaluable and helps us improve ReMap usage.

How to Reach Us:

remap-support@univ-amu.fr

Email: For general ReMap inquiries and API support, please email us at remap-support@univ-amu.fr.

Bug Reports: If you encounter any bugs or technical issues, please provide a detailed description of the problem, including any relevant URLs, error messages, and steps to reproduce the issue. This will help us resolve the matter more efficiently.

Feedback and Suggestions: We welcome your feedback and suggestions to enhance the ReMap REST API. Please share your thoughts and ideas with us.

Response Time: We aim to respond to all inquiries within 48 hours. However, response times may vary depending on the nature of the request and our current workload.

Thank you for using the ReMap REST API. We look forward to assisting you!