GET homology/id/:species/:id

Retrieves homology information (orthologs) by species and Ensembl gene id

Parameters

Required

NameTypeDescriptionDefaultExample Values
id String An Ensembl stable ID - ENSG00000157764
species String Species name/alias - homo_sapiens
human

Optional

NameTypeDescriptionDefaultExample Values
aligned Boolean Return the aligned string if true. Otherwise, return the original sequence (no insertions) 1 -
callback String Name of the callback subroutine to be returned by the requested JSONP response. Required ONLY when using JSONP as the serialisation method. Please see the user guide. - randomlygeneratedname
cigar_line Boolean Return the aligned sequence encoded in CIGAR format 1 -
compara String Name of the compara database to use. Multiple comparas exist on a server for separate species divisions vertebrates vertebrates
format Enum(full, condensed) Layout of the response full -
sequence Enum(none, cdna, protein) The type of sequence to bring back. Setting it to none results in no sequence being returned protein -
target_species String Filter by species. Supports all species aliases - human
bos_taurus
target_taxon Integer Filter by taxon - 9606
10090
type Enum(orthologues, paralogues, projections, all) The type of homology to return from this call. Projections are orthology calls defined between alternative assemblies and the genes shared between them. Useful if you need only one type of homology back from the service all -

Example Requests

/homology/id/human/ENSG00000157764?content-type=application/json


use strict;
use warnings;

use HTTP::Tiny;

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

my $server = 'https://rest.ensembl.org';
my $ext = '/homology/id/human/ENSG00000157764?';
my $response = $http->get($server.$ext, {
  headers => { 'Content-type' => 'application/json' }
});

die "Failed!\n" unless $response->{success};


use JSON;
use Data::Dumper;
if(length $response->{content}) {
  my $hash = decode_json($response->{content});
  local $Data::Dumper::Terse = 1;
  local $Data::Dumper::Indent = 1;
  print Dumper $hash;
  print "\n";
}

import requests, sys

server = "https://rest.ensembl.org"
ext = "/homology/id/human/ENSG00000157764?"

r = requests.get(server+ext, headers={ "Content-Type" : "application/json"})

if not r.ok:
  r.raise_for_status()
  sys.exit()

decoded = r.json()
print repr(decoded)

import requests, sys

server = "https://rest.ensembl.org"
ext = "/homology/id/human/ENSG00000157764?"

r = requests.get(server+ext, headers={ "Content-Type" : "application/json"})

if not r.ok:
  r.raise_for_status()
  sys.exit()

decoded = r.json()
print(repr(decoded))

require 'net/http'
require 'uri'

server='https://rest.ensembl.org'
path = '/homology/id/human/ENSG00000157764?'

url = URI.parse(server)
http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(path, {'Content-Type' => 'application/json'})

response = http.request(request)

if response.code != "200"
  puts "Invalid response: #{response.code}"
  puts response.body
  exit
end


require 'rubygems'
require 'json'
require 'yaml'

result = JSON.parse(response.body)
puts YAML::dump(result)

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;


public class EnsemblRest {

  public static void main(String[] args) throws Exception {
    String server = "https://rest.ensembl.org";
    String ext = "/homology/id/human/ENSG00000157764?";
    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();
        }
    }

    System.out.println(output);
  }
}

library(httr)
library(jsonlite)
library(xml2)

server <- "https://rest.ensembl.org"
ext <- "/homology/id/human/ENSG00000157764?"

r <- GET(paste(server, ext, sep = ""), content_type("application/json"))

stop_for_status(r)

# use this if you get a simple nested list back, otherwise inspect its structure
# head(data.frame(t(sapply(content(r),c))))
head(fromJSON(toJSON(content(r))))


curl 'https://rest.ensembl.org/homology/id/human/ENSG00000157764?' -H 'Content-type:application/json'

wget -q --header='Content-type:application/json' 'https://rest.ensembl.org/homology/id/human/ENSG00000157764?'  -O -

/homology/id/human/ENSG00000157764?compara=vertebrates;content-type=text/xml


use strict;
use warnings;

use HTTP::Tiny;

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

my $server = 'https://rest.ensembl.org';
my $ext = '/homology/id/human/ENSG00000157764?compara=vertebrates';
my $response = $http->get($server.$ext, {
  headers => { 'Content-type' => 'text/xml' }
});

die "Failed!\n" unless $response->{success};


print "$response->{content}\n";

import requests, sys

server = "https://rest.ensembl.org"
ext = "/homology/id/human/ENSG00000157764?compara=vertebrates"

r = requests.get(server+ext, headers={ "Content-Type" : "text/xml"})

if not r.ok:
  r.raise_for_status()
  sys.exit()


print r.text

import requests, sys

server = "https://rest.ensembl.org"
ext = "/homology/id/human/ENSG00000157764?compara=vertebrates"

r = requests.get(server+ext, headers={ "Content-Type" : "text/xml"})

if not r.ok:
  r.raise_for_status()
  sys.exit()


print(r.text)

require 'net/http'
require 'uri'

server='https://rest.ensembl.org'
path = '/homology/id/human/ENSG00000157764?compara=vertebrates'

url = URI.parse(server)
http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(path, {'Content-Type' => 'text/xml'})

response = http.request(request)

if response.code != "200"
  puts "Invalid response: #{response.code}"
  puts response.body
  exit
end


puts response.body

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;


public class EnsemblRest {

  public static void main(String[] args) throws Exception {
    String server = "https://rest.ensembl.org";
    String ext = "/homology/id/human/ENSG00000157764?compara=vertebrates";
    URL url = new URL(server + ext);

    URLConnection connection = url.openConnection();
    HttpURLConnection httpConnection = (HttpURLConnection)connection;
    
    httpConnection.setRequestProperty("Content-Type", "text/xml");
    

    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();
        }
    }

    System.out.println(output);
  }
}

library(httr)
library(jsonlite)
library(xml2)

server <- "https://rest.ensembl.org"
ext <- "/homology/id/human/ENSG00000157764?compara=vertebrates"

r <- GET(paste(server, ext, sep = ""), content_type("text/xml"))

stop_for_status(r)


print(content(r))


curl 'https://rest.ensembl.org/homology/id/human/ENSG00000157764?compara=vertebrates' -H 'Content-type:text/xml'

wget -q --header='Content-type:text/xml' 'https://rest.ensembl.org/homology/id/human/ENSG00000157764?compara=vertebrates'  -O -

/homology/id/human/ENSG00000157764?sequence=cdna;target_taxon=10090;content-type=application/json;target_species=bos_taurus;type=orthologues


use strict;
use warnings;

use HTTP::Tiny;

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

my $server = 'https://rest.ensembl.org';
my $ext = '/homology/id/human/ENSG00000157764?sequence=cdna;target_taxon=10090;type=orthologues;target_species=bos_taurus';
my $response = $http->get($server.$ext, {
  headers => { 'Content-type' => 'application/json' }
});

die "Failed!\n" unless $response->{success};


use JSON;
use Data::Dumper;
if(length $response->{content}) {
  my $hash = decode_json($response->{content});
  local $Data::Dumper::Terse = 1;
  local $Data::Dumper::Indent = 1;
  print Dumper $hash;
  print "\n";
}

import requests, sys

server = "https://rest.ensembl.org"
ext = "/homology/id/human/ENSG00000157764?sequence=cdna;target_taxon=10090;type=orthologues;target_species=bos_taurus"

r = requests.get(server+ext, headers={ "Content-Type" : "application/json"})

if not r.ok:
  r.raise_for_status()
  sys.exit()

decoded = r.json()
print repr(decoded)

import requests, sys

server = "https://rest.ensembl.org"
ext = "/homology/id/human/ENSG00000157764?sequence=cdna;target_taxon=10090;type=orthologues;target_species=bos_taurus"

r = requests.get(server+ext, headers={ "Content-Type" : "application/json"})

if not r.ok:
  r.raise_for_status()
  sys.exit()

decoded = r.json()
print(repr(decoded))

require 'net/http'
require 'uri'

server='https://rest.ensembl.org'
path = '/homology/id/human/ENSG00000157764?sequence=cdna;target_taxon=10090;type=orthologues;target_species=bos_taurus'

url = URI.parse(server)
http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(path, {'Content-Type' => 'application/json'})

response = http.request(request)

if response.code != "200"
  puts "Invalid response: #{response.code}"
  puts response.body
  exit
end


require 'rubygems'
require 'json'
require 'yaml'

result = JSON.parse(response.body)
puts YAML::dump(result)

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;


public class EnsemblRest {

  public static void main(String[] args) throws Exception {
    String server = "https://rest.ensembl.org";
    String ext = "/homology/id/human/ENSG00000157764?sequence=cdna;target_taxon=10090;type=orthologues;target_species=bos_taurus";
    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();
        }
    }

    System.out.println(output);
  }
}

library(httr)
library(jsonlite)
library(xml2)

server <- "https://rest.ensembl.org"
ext <- "/homology/id/human/ENSG00000157764?sequence=cdna;target_taxon=10090;type=orthologues;target_species=bos_taurus"

r <- GET(paste(server, ext, sep = ""), content_type("application/json"))

stop_for_status(r)

# use this if you get a simple nested list back, otherwise inspect its structure
# head(data.frame(t(sapply(content(r),c))))
head(fromJSON(toJSON(content(r))))


curl 'https://rest.ensembl.org/homology/id/human/ENSG00000157764?sequence=cdna;target_taxon=10090;type=orthologues;target_species=bos_taurus' -H 'Content-type:application/json'

wget -q --header='Content-type:application/json' 'https://rest.ensembl.org/homology/id/human/ENSG00000157764?sequence=cdna;target_taxon=10090;type=orthologues;target_species=bos_taurus'  -O -

/homology/id/human/ENSG00000157764?type=orthologues;content-type=text/xml;format=condensed


use strict;
use warnings;

use HTTP::Tiny;

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

my $server = 'https://rest.ensembl.org';
my $ext = '/homology/id/human/ENSG00000157764?type=orthologues;format=condensed';
my $response = $http->get($server.$ext, {
  headers => { 'Content-type' => 'text/xml' }
});

die "Failed!\n" unless $response->{success};


print "$response->{content}\n";

import requests, sys

server = "https://rest.ensembl.org"
ext = "/homology/id/human/ENSG00000157764?type=orthologues;format=condensed"

r = requests.get(server+ext, headers={ "Content-Type" : "text/xml"})

if not r.ok:
  r.raise_for_status()
  sys.exit()


print r.text

import requests, sys

server = "https://rest.ensembl.org"
ext = "/homology/id/human/ENSG00000157764?type=orthologues;format=condensed"

r = requests.get(server+ext, headers={ "Content-Type" : "text/xml"})

if not r.ok:
  r.raise_for_status()
  sys.exit()


print(r.text)

require 'net/http'
require 'uri'

server='https://rest.ensembl.org'
path = '/homology/id/human/ENSG00000157764?type=orthologues;format=condensed'

url = URI.parse(server)
http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(path, {'Content-Type' => 'text/xml'})

response = http.request(request)

if response.code != "200"
  puts "Invalid response: #{response.code}"
  puts response.body
  exit
end


puts response.body

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;


public class EnsemblRest {

  public static void main(String[] args) throws Exception {
    String server = "https://rest.ensembl.org";
    String ext = "/homology/id/human/ENSG00000157764?type=orthologues;format=condensed";
    URL url = new URL(server + ext);

    URLConnection connection = url.openConnection();
    HttpURLConnection httpConnection = (HttpURLConnection)connection;
    
    httpConnection.setRequestProperty("Content-Type", "text/xml");
    

    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();
        }
    }

    System.out.println(output);
  }
}

library(httr)
library(jsonlite)
library(xml2)

server <- "https://rest.ensembl.org"
ext <- "/homology/id/human/ENSG00000157764?type=orthologues;format=condensed"

r <- GET(paste(server, ext, sep = ""), content_type("text/xml"))

stop_for_status(r)


print(content(r))


curl 'https://rest.ensembl.org/homology/id/human/ENSG00000157764?type=orthologues;format=condensed' -H 'Content-type:text/xml'

wget -q --header='Content-type:text/xml' 'https://rest.ensembl.org/homology/id/human/ENSG00000157764?type=orthologues;format=condensed'  -O -

/homology/id/human/ENSG00000157764?content-type=text/x-orthoxml%2Bxml


use strict;
use warnings;

use HTTP::Tiny;

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

my $server = 'https://rest.ensembl.org';
my $ext = '/homology/id/human/ENSG00000157764?';
my $response = $http->get($server.$ext, {
  headers => { 'Content-type' => 'text/x-orthoxml+xml' }
});

die "Failed!\n" unless $response->{success};


print "$response->{content}\n";

import requests, sys

server = "https://rest.ensembl.org"
ext = "/homology/id/human/ENSG00000157764?"

r = requests.get(server+ext, headers={ "Content-Type" : "text/x-orthoxml+xml"})

if not r.ok:
  r.raise_for_status()
  sys.exit()


print r.text

import requests, sys

server = "https://rest.ensembl.org"
ext = "/homology/id/human/ENSG00000157764?"

r = requests.get(server+ext, headers={ "Content-Type" : "text/x-orthoxml+xml"})

if not r.ok:
  r.raise_for_status()
  sys.exit()


print(r.text)

require 'net/http'
require 'uri'

server='https://rest.ensembl.org'
path = '/homology/id/human/ENSG00000157764?'

url = URI.parse(server)
http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(path, {'Content-Type' => 'text/x-orthoxml+xml'})

response = http.request(request)

if response.code != "200"
  puts "Invalid response: #{response.code}"
  puts response.body
  exit
end


puts response.body

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;


public class EnsemblRest {

  public static void main(String[] args) throws Exception {
    String server = "https://rest.ensembl.org";
    String ext = "/homology/id/human/ENSG00000157764?";
    URL url = new URL(server + ext);

    URLConnection connection = url.openConnection();
    HttpURLConnection httpConnection = (HttpURLConnection)connection;
    
    httpConnection.setRequestProperty("Content-Type", "text/x-orthoxml+xml");
    

    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();
        }
    }

    System.out.println(output);
  }
}

library(httr)
library(jsonlite)
library(xml2)

server <- "https://rest.ensembl.org"
ext <- "/homology/id/human/ENSG00000157764?"

r <- GET(paste(server, ext, sep = ""), content_type("text/x-orthoxml+xml"))

stop_for_status(r)


print(content(r))


curl 'https://rest.ensembl.org/homology/id/human/ENSG00000157764?' -H 'Content-type:text/x-orthoxml+xml'

wget -q --header='Content-type:text/x-orthoxml+xml' 'https://rest.ensembl.org/homology/id/human/ENSG00000157764?'  -O -

/homology/id/human/ENSG00000157764?target_taxon=10090;type=orthologues;content-type=text/x-orthoxml%2Bxml


use strict;
use warnings;

use HTTP::Tiny;

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

my $server = 'https://rest.ensembl.org';
my $ext = '/homology/id/human/ENSG00000157764?target_taxon=10090;type=orthologues';
my $response = $http->get($server.$ext, {
  headers => { 'Content-type' => 'text/x-orthoxml+xml' }
});

die "Failed!\n" unless $response->{success};


print "$response->{content}\n";

import requests, sys

server = "https://rest.ensembl.org"
ext = "/homology/id/human/ENSG00000157764?target_taxon=10090;type=orthologues"

r = requests.get(server+ext, headers={ "Content-Type" : "text/x-orthoxml+xml"})

if not r.ok:
  r.raise_for_status()
  sys.exit()


print r.text

import requests, sys

server = "https://rest.ensembl.org"
ext = "/homology/id/human/ENSG00000157764?target_taxon=10090;type=orthologues"

r = requests.get(server+ext, headers={ "Content-Type" : "text/x-orthoxml+xml"})

if not r.ok:
  r.raise_for_status()
  sys.exit()


print(r.text)

require 'net/http'
require 'uri'

server='https://rest.ensembl.org'
path = '/homology/id/human/ENSG00000157764?target_taxon=10090;type=orthologues'

url = URI.parse(server)
http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(path, {'Content-Type' => 'text/x-orthoxml+xml'})

response = http.request(request)

if response.code != "200"
  puts "Invalid response: #{response.code}"
  puts response.body
  exit
end


puts response.body

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;


public class EnsemblRest {

  public static void main(String[] args) throws Exception {
    String server = "https://rest.ensembl.org";
    String ext = "/homology/id/human/ENSG00000157764?target_taxon=10090;type=orthologues";
    URL url = new URL(server + ext);

    URLConnection connection = url.openConnection();
    HttpURLConnection httpConnection = (HttpURLConnection)connection;
    
    httpConnection.setRequestProperty("Content-Type", "text/x-orthoxml+xml");
    

    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();
        }
    }

    System.out.println(output);
  }
}

library(httr)
library(jsonlite)
library(xml2)

server <- "https://rest.ensembl.org"
ext <- "/homology/id/human/ENSG00000157764?target_taxon=10090;type=orthologues"

r <- GET(paste(server, ext, sep = ""), content_type("text/x-orthoxml+xml"))

stop_for_status(r)


print(content(r))


curl 'https://rest.ensembl.org/homology/id/human/ENSG00000157764?target_taxon=10090;type=orthologues' -H 'Content-type:text/x-orthoxml+xml'

wget -q --header='Content-type:text/x-orthoxml+xml' 'https://rest.ensembl.org/homology/id/human/ENSG00000157764?target_taxon=10090;type=orthologues'  -O -

Resource Information

MethodsGET
Response formatsjson
xml
orthoxml
jsonp