@classmethod<EOL><INDENT>def search(cls, gravityspy_id, howmany=<NUM_LIT:10>,<EOL>era='<STR_LIT>', ifos='<STR_LIT>', remote_timeout=<NUM_LIT:20>):<DEDENT>
from astropy.utils.data import get_readable_fileobj<EOL>import json<EOL>from six.moves.urllib.error import HTTPError<EOL>from six.moves import urllib<EOL>base = '<STR_LIT>' +'<STR_LIT>'<EOL>map_era_to_url = {<EOL>'<STR_LIT>': "<STR_LIT>",<EOL>'<STR_LIT>': "<STR_LIT>",<EOL>'<STR_LIT>': "<STR_LIT>",<EOL>'<STR_LIT>': "<STR_LIT>",<EOL>'<STR_LIT>': "<STR_LIT>",<EOL>}<EOL>parts = {<EOL>'<STR_LIT>': howmany,<EOL>'<STR_LIT>': gravityspy_id,<EOL>'<STR_LIT>': map_era_to_url[era],<EOL>'<STR_LIT>': "<STR_LIT:{}>".format("<STR_LIT:U+002CU+0020>".join(<EOL>map(repr, [ifos[i:i+<NUM_LIT:2>] for i in range(<NUM_LIT:0>, len(ifos), <NUM_LIT:2>)]),<EOL>)),<EOL>'<STR_LIT>': '<STR_LIT>',<EOL>}<EOL>search = urllib.parse.urlencode(parts)<EOL>url = '<STR_LIT>'.format(base, search)<EOL>try:<EOL><INDENT>with get_readable_fileobj(url, remote_timeout=remote_timeout) as f:<EOL><INDENT>return GravitySpyTable(json.load(f))<EOL><DEDENT><DEDENT>except HTTPError as exc:<EOL><INDENT>if exc.code == <NUM_LIT>:<EOL><INDENT>exc.msg += '<STR_LIT>'<EOL>raise<EOL><DEDENT><DEDENT>
perform restful API version of search available here:
        https://gravityspytools.ciera.northwestern.edu/search/

        Parameters
        ----------
        gravityspy_id : `str`,
            This is the unique 10 character hash that identifies
            a Gravity Spy Image

        howmany : `int`, optional, default: 10
            number of similar images you would like

        Returns
        -------
        `GravitySpyTable` containing similar events based on
        an evaluation of the Euclidean distance of the input image
        to all other images in some Feature Space