Mercurial > repos > jfallmann > aresite2
changeset 2:9b1beb18b477 draft
Deleted selected files
author | jfallmann |
---|---|
date | Wed, 01 Feb 2017 09:57:17 -0500 |
parents | 6e02034384c7 |
children | 755662977150 |
files | aresite2.py aresite2.xml |
diffstat | 2 files changed, 0 insertions(+), 172 deletions(-) [+] |
line wrap: on
line diff
--- a/aresite2.py Wed Feb 01 09:55:11 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ -# A simple tool to connect to the AREsite server and retrieve feature -# information using the AREsite REST Interface. -# Parts of this code are from https://toolshed.g2.bx.psu.edu/repos/earlhaminst/ensembl_get_feature_info -from __future__ import print_function - -import json -import optparse -import sys -import urllib -import urllib2 -import time -import requests -from six.moves.urllib.parse import urljoin - -usage = "usage: %prog [options] arg1 arg2" -parser = optparse.OptionParser(usage=usage) -parser.add_option('-g', '--gene', help='Gene ID to search for') -parser.add_option('-m', '--motif', help='Motif to look for', default='ATTTA', type=str) -parser.add_option('-s', '--species', type='choice', - choices=['Homo_sapiens', 'Mus_musculus', 'Danio_rerio', 'Drosophila_melanogaster', 'Caenorhabditis_elegans'], default='Homo_sapiens', - help='Specify the species to investigate') -options, args = parser.parse_args() - -if options.gene is None: - raise Exception('- Specify the gene you want to look for!') - -if "," in options.motif : - raise Exception('- Please only search for single motifs at once') - -class AREsiteRestClient(object): - def __init__(self, server='http://rna.tbi.univie.ac.at/AREsite2/api/', reqs_per_sec=1): - self.server = server - self.reqs_per_sec = reqs_per_sec - self.req_count = 0 - self.last_req = 0 - - def perform_rest_action(self, endpoint, hdrs=None, params=None): - if hdrs is None: - hdrs = {} - - if 'Content-Type' not in hdrs: - hdrs['Content-Type'] = 'application/json' - - if params: - endpoint += '?' + urllib.urlencode(params) - - data = None - - # check if we need to rate limit ourselves - if self.req_count >= self.reqs_per_sec: - delta = time.time() - self.last_req - if delta < 1: - time.sleep(1 - delta) - self.last_req = time.time() - self.req_count = 0 - - try: - request = urllib2.Request(self.server + endpoint, headers=hdrs) - response = urllib2.urlopen(request) - content = response.read() - if content: - data = json.loads(content) - self.req_count += 1 - - except urllib2.HTTPError, e: - # check if we are being rate limited by the server - if e.code == 429: - if 'Retry-After' in e.headers: - retry = e.headers['Retry-After'] - time.sleep(float(retry)) - self.perform_rest_action(endpoint, hdrs, params) - else: - sys.stderr.write('Request failed for {0}: Status code: {1.code} Reason: {1.reason}\n'.format(endpoint, e)) - - return data - - def get_motifs(self, species, gene, motifs): - query = str('?query={0}&species={1}&list={2}'.format(gene, species, motifs)) - if query: - aresite = self.perform_rest_action( - query - ) - return aresite - return None - -def run(species, gene, motifs): - client = AREsiteRestClient() - aresite = client.get_motifs(species, gene, motifs) - if aresite: - - mots = aresite["exact_motifs"] - starts = aresite["motif_starts"] - ends = aresite["motif_ends"] - chrs = aresite["chromosomes"] - strands = aresite["strands"] - transcripts = aresite["transcripts"] - genes = aresite["genes"] - evh = aresite["hur_evidence"] - evt = aresite["ttp_evidence"] - eva = aresite["auf_evidence"] - anno = aresite["annotation"] - - aresite = zip(chrs,starts,ends,mots,anno,strands,genes,transcripts,evh,evt,eva) - - def getKey(item): - return item[1] - - aresite = sorted(aresite, key=getKey) - -# outfile = 'AREsite2_Rest_{0}_{1}_{2}.bed'.format(motifs,gene,species) -# f = open(outfile, 'w') - - for i in range(len(aresite)): - # f.write("\t".join(aresite[i])+"\n") - print ("\t".join(aresite[i])+"\n") - - -if __name__ == '__main__': - run(options.species, options.gene, options.motif)
--- a/aresite2.xml Wed Feb 01 09:55:11 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -<tool id="AREsite2_REST" name="Get motifs from AREsite2" version="0.1.2"> - <description>AREsite2 REST Interface</description> - <requirements> - <requirement type="package" version="2.12.4">requests</requirement> - <requirement type="package" version="1.10.0">six</requirement> - </requirements> - <command> -<![CDATA[ -python $__tool_directory__/aresite2.py --g $gene --m "$motif" --s $species_selector -> $AREsite2_REST_out -]]> - </command> - - <inputs> - <param name="gene" type="text" label="Gene ID to search for" help="Try e.g. cxcl2" /> - <param name="species_selector" type="select" label="Select species"> - <option value="Homo_sapiens" selected="true"></option> - <option value="Mus_musculus"></option> - <option value="Danio_rerio"></option> - <option value="Drosophila_melanogaster"></option> - <option value="Caenorhabditis_elegans"></option> - </param> - <param name="motif" type="text" label="Motif to search for" help="Choose a single motif, e.g. ATTTA" /> - </inputs> - - <outputs> - <data name="AREsite2_REST_out" label="AREsite2_Rest_${motif}_${gene}_${species_selector}" type="text" format="bed" /> - </outputs> - - <tests> - <test> - <param name="species" value="Homo_sapiens" /> - <param name="motif" value="ATTTA" /> - <param name="gene" value="Cxcl2" /> - <output name="outputFile" file="AREsite2_Rest_ATTTA_cxcl2_Homo_sapiens.bed" /> - </test> - </tests> - - <help> -<![CDATA[ -**What it does** - -Retrieve motif information in BED format from AREsite2 using its REST API. - -]]> - </help> - <citations> - <citation type="doi">10.1093/nar/gkv1238</citation> - </citations> -</tool>