The ALTER API allows programmers to access ALTER's functionality in a programmatic way, through a RESTful Web Service. Using this service, the server can be accessed from multiple programming languages, allowing researchers to wire ALTER results to their experiments. At this time, the API offers an unique convert function with multiple parameters plus some reflexible functions to retrieve the input/output program and formats currently supported.
Like any RESTful Web Service, operations are performed via web queries with a well-defined URL structure. The server API is located at %%HOST%%/api/
PARAMETER | DESCRIPTION |
---|---|
autodetect | Autodetect input so/program/format |
inO | Input operating system |
inP | Input program |
inF | Input format |
outO | Output operating system |
outP | Output program |
outF | output format |
sequential (true|false) | Output in sequential form (ex: NEXUS, PHYLIP) |
match (true|false) | Replace each character with '.' if it matches with the one at the place in first input sequence |
lowercase (true|false) | Output sequences in lower case |
resNumbers (true|false) | Output residue numbers (only in ALN format) |
collapse (true|false) | Enable haplotype collapsing |
gapsAsMissing (true|false) | Treat gaps as missing data in haplotype collapsing |
countMissing (true|false) | Count missing data as differences when calculating sequence similarity on haplotype collapsing |
limit | Collapse sequences whose differences are less than this value |
# -*- coding: utf-8 -*-
import httplib, urllib
# input sequence
sequence='''
#NEXUS
BEGIN DATA;
dimensions ntax=4 nchar=673;
format missing=?
symbols="ABCDEFGHIKLMNOPQRSTUVWXYZ"
interleave datatype=PROTEIN gap= -;
matrix
M17718 ---------------------------MESGNVSSSLFGNVSTALRPEAR
X65879 ---------------------------MEYHNVSS-VLGNVSSVLRPDAR
M17730 ---------------------------MEPLCNAS------EPPLRPEAR
X65880 ---------------------------MDALCNAS------EPPLRPEAR
M17718 LSAET---RLLGWNVPPEELRHIPEHWL----------TYPEPPESMNYL
X65879 LSAES---RLLGWNVPPDELRHIPEHWL----------IYPEPPESMNYL
M17730 -SSGNGDLQFLGWNVPPDQIQYIPEHWL----------TQLEPPASMHYM
X65880 MSSGSDELQFLGWNVPPDQIQYIPEHWL----------TQLEPPASMHYM
M17718 LG------------------------TLYIFFTLMSMLGNGLVIWVFSAA
X65879 LG------------------------TLYIFFTVISMIGNGLVMWVFSAA
M17730 LG------------------------VFYIFLFCASTVGNGMVIWIFSTS
X65880 LG------------------------VFYIFLFFASTLGNGMVIWIFSTS
M17718 KSLRTPSNILVINLAFCDFMMMVKTPIFIYNSFHQGYA--LGHLGCQIFG
X65879 KSLRTPSNILVINLAFCDFMMMIKTPIFIYNSFHQGYA--LGHLGCQIFG
M17730 KSLRTPSNMFVLNLAVFDLIMCLKAP--IFNSFHRGFAIYLGNTWCQIFA
X65880 KSLRTPSNMFVLNLAVFDLIMCLKAPIFIYNSFHRGFA--LGNTWCQIFA
M17718 IIGSYTGIAAGATNAFIAYDRFNVITRPMEG--KMTHGKAIAMIIFIYMY
X65879 VIGSYTGIAAGATNAFIAYDRYNVITRPMEG--KMTHGKAIAMIIFIYLY
M17730 SIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMNIIIWLY
X65880 SIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMNIIIWLY
M17718 ATPWVVACYTETWGRFVPEGYLTSCTFDYLT--DNFDTRLFVACIFFFSF
X65879 ATPWVVACYTESWGRFVPEGYLTSCTFDYLT--DNFDTRLFVACIFFFSF
M17730 CTPWVVLPLTQFWDRFVPEGYLTSCSFDYLS--DNFDTRLFVGTIFFFSF
X65880 CTPWVVLPLTQFWDRFVPEGYLTSCSFDYLS--DNFDTRLFVGTIFLFSF
M17718 VCPTTMITYYYSQIVGHVF---------------SHEKALRDQAKKMNVE
X65879 VCPTTMITYYYSQIVGHVF---------------SHEKALRDQAKKMNVD
M17730 VCPTLMILYYYSQIVGHVF---------------SHEKALREQAKKMNVE
X65880 VVPTLMILYYYSQIVGHVF---------------NHEKALREQAKKMNVE
M17718 SLRSNVDKNKE---------------------------------------
X65879 SLRSNVDKSKE---------------------------------------
M17730 SLRSNVDKSKE---------------------------------------
X65880 SLRSNVDKSKE---------------------------------------
M17718 --------------------------------------------------
X65879 --------------------------------------------------
M17730 --------------------------------------------------
X65880 --------------------------------------------------
M17718 ------------TAEIRIAKAAITICFLFFCSWTPYGVMSLIGAFGDKTL
X65879 ------------AAEIRIAKAAITICFLFFASWTPYGVMSLIGAFGDKTL
M17730 ------------TAEIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDKSL
X65880 ------------TAEIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDKSL
M17718 ---LTPGATMIPACACKMVACIDPFVYAISHPRYRMELQKRCPWLALNEK
X65879 ---LTPGATMIPACTCKMVACIDPFVYAISHPRYRMELQKRCPWLAISEK
M17730 ---LTQGATMIPACTCKLVACIDPFVYAISHPRYRLELQKRCPWLGVNEK
X65880 ---LTPGATMIPACTCKLVACIEPFVYAISHPRYRMELQKRCPWLGVNEK
M17718 APE--SSAVASTSTTQEPQQTTAA--------------------------
X65879 APE--SRAAISTSTTQEQQQTTAA--------------------------
M17730 SGE--ISSAQSTTTQEQ-QQTTAA--------------------------
X65880 SGE--ASSAQSTTTQEQTQQTSAA--------------------------
M17718 --------------------------------------------------
X65879 --------------------------------------------------
M17730 --------------------------------------------------
X65880 --------------------------------------------------
M17718 -----------------------
X65879 -----------------------
M17730 -----------------------
X65880 -----------------------
;
end;
'''
# conversion parameters (NOTE: these are not all possible parameters. Please see
# the convert documentation, or take a look to the response, where all input parameters
# are reported (including those that were not present in the request)
params = urllib.urlencode({
'autodetect': 'false',
'inO': 'windows',
'inP': 'clustal',
'inF': 'NEXUS',
'gapsAsMissing': 'true',
'limit':0,
'outF':'aln',
'outO':'windows',
'outP':'general',
'sequence':sequence})
# Make the request
headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
conn = httplib.HTTPConnection("sing.ei.uvigo.es")
conn.request("POST", "/ALTER/api/convert", params, headers)
response = conn.getresponse()
data = response.read()
# print the data
print data
conn.close()
use strict;
use warnings;
use LWP 5.64;
my $sequence = <<END;
#NEXUS
BEGIN DATA;
dimensions ntax=4 nchar=673;
format missing=?
symbols="ABCDEFGHIKLMNOPQRSTUVWXYZ"
interleave datatype=PROTEIN gap= -;
matrix
M17718 ---------------------------MESGNVSSSLFGNVSTALRPEAR
X65879 ---------------------------MEYHNVSS-VLGNVSSVLRPDAR
M17730 ---------------------------MEPLCNAS------EPPLRPEAR
X65880 ---------------------------MDALCNAS------EPPLRPEAR
M17718 LSAET---RLLGWNVPPEELRHIPEHWL----------TYPEPPESMNYL
X65879 LSAES---RLLGWNVPPDELRHIPEHWL----------IYPEPPESMNYL
M17730 -SSGNGDLQFLGWNVPPDQIQYIPEHWL----------TQLEPPASMHYM
X65880 MSSGSDELQFLGWNVPPDQIQYIPEHWL----------TQLEPPASMHYM
M17718 LG------------------------TLYIFFTLMSMLGNGLVIWVFSAA
X65879 LG------------------------TLYIFFTVISMIGNGLVMWVFSAA
M17730 LG------------------------VFYIFLFCASTVGNGMVIWIFSTS
X65880 LG------------------------VFYIFLFFASTLGNGMVIWIFSTS
M17718 KSLRTPSNILVINLAFCDFMMMVKTPIFIYNSFHQGYA--LGHLGCQIFG
X65879 KSLRTPSNILVINLAFCDFMMMIKTPIFIYNSFHQGYA--LGHLGCQIFG
M17730 KSLRTPSNMFVLNLAVFDLIMCLKAP--IFNSFHRGFAIYLGNTWCQIFA
X65880 KSLRTPSNMFVLNLAVFDLIMCLKAPIFIYNSFHRGFA--LGNTWCQIFA
M17718 IIGSYTGIAAGATNAFIAYDRFNVITRPMEG--KMTHGKAIAMIIFIYMY
X65879 VIGSYTGIAAGATNAFIAYDRYNVITRPMEG--KMTHGKAIAMIIFIYLY
M17730 SIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMNIIIWLY
X65880 SIGSYSGIGAGMTNAAIGYDRYNVITKPMNR--NMTFTKAVIMNIIIWLY
M17718 ATPWVVACYTETWGRFVPEGYLTSCTFDYLT--DNFDTRLFVACIFFFSF
X65879 ATPWVVACYTESWGRFVPEGYLTSCTFDYLT--DNFDTRLFVACIFFFSF
M17730 CTPWVVLPLTQFWDRFVPEGYLTSCSFDYLS--DNFDTRLFVGTIFFFSF
X65880 CTPWVVLPLTQFWDRFVPEGYLTSCSFDYLS--DNFDTRLFVGTIFLFSF
M17718 VCPTTMITYYYSQIVGHVF---------------SHEKALRDQAKKMNVE
X65879 VCPTTMITYYYSQIVGHVF---------------SHEKALRDQAKKMNVD
M17730 VCPTLMILYYYSQIVGHVF---------------SHEKALREQAKKMNVE
X65880 VVPTLMILYYYSQIVGHVF---------------NHEKALREQAKKMNVE
M17718 SLRSNVDKNKE---------------------------------------
X65879 SLRSNVDKSKE---------------------------------------
M17730 SLRSNVDKSKE---------------------------------------
X65880 SLRSNVDKSKE---------------------------------------
M17718 --------------------------------------------------
X65879 --------------------------------------------------
M17730 --------------------------------------------------
X65880 --------------------------------------------------
M17718 ------------TAEIRIAKAAITICFLFFCSWTPYGVMSLIGAFGDKTL
X65879 ------------AAEIRIAKAAITICFLFFASWTPYGVMSLIGAFGDKTL
M17730 ------------TAEIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDKSL
X65880 ------------TAEIRIAKAAITICFLFFVSWTPYGVMSLIGAFGDKSL
M17718 ---LTPGATMIPACACKMVACIDPFVYAISHPRYRMELQKRCPWLALNEK
X65879 ---LTPGATMIPACTCKMVACIDPFVYAISHPRYRMELQKRCPWLAISEK
M17730 ---LTQGATMIPACTCKLVACIDPFVYAISHPRYRLELQKRCPWLGVNEK
X65880 ---LTPGATMIPACTCKLVACIEPFVYAISHPRYRMELQKRCPWLGVNEK
M17718 APE--SSAVASTSTTQEPQQTTAA--------------------------
X65879 APE--SRAAISTSTTQEQQQTTAA--------------------------
M17730 SGE--ISSAQSTTTQEQ-QQTTAA--------------------------
X65880 SGE--ASSAQSTTTQEQTQQTSAA--------------------------
M17718 --------------------------------------------------
X65879 --------------------------------------------------
M17730 --------------------------------------------------
X65880 --------------------------------------------------
M17718 -----------------------
X65879 -----------------------
M17730 -----------------------
X65880 -----------------------
;
end;
END
my $browser = LWP::UserAgent->new;
my $url = 'http://sing.ei.uvigo.es/ALTER/api/convert';
# Request. (NOTE: these are not all possible parameters. Please see
# the convert documentation, or take a look to the response, where all input parameters
# are reported (including those that were not present in the request)
my $response = $browser->post( $url,
[ 'autodetect'=> 'false',
'inO'=> 'windows',
'inP'=> 'clustal',
'inF'=> 'NEXUS',
'gapsAsMissing'=> 'true',
'limit'=>0,
'outF'=>'aln',
'outO'=>'windows',
'outP'=>'general',
'sequence'=>$sequence
]
);
die "$url error: ", $response->status_line unless $response->is_success;
die "Weird content type at $url -- ", $response->content_type unless $response->content_type eq 'text/plain';
print $response->content