Exemple #1
0
    def index(self):

        # Attempt to retrieve search parameters
        self.random['imnumber'] = 16
        images = []

        # Get random images ; parse out thumbnails ; construct plate-IFUs
        imfiles = None
        try:
            imfiles = get_random_images(num=self.random['imnumber'],
                                        release=self._release)
        except (MarvinError, AssertionError) as e:
            self.random['error'] = 'Error: could not get images: {0}'.format(e)
        else:
            urls = [i.url for i in imfiles]
            images = buildImageDict(urls)

        # if image grab failed, make placeholders
        if not imfiles:
            images = buildImageDict(imfiles,
                                    test=True,
                                    num=self.random['imnumber'])

        # Add images to dict
        self.random['images'] = images

        return render_template('random.html', **self.random)
Exemple #2
0
    def index(self):

        # Attempt to retrieve search parameters
        form = processRequest(request=request)
        self.random['imnumber'] = 16
        images = []

        # Get random images ; parse out thumbnails ; construct plate-IFUs
        imfiles = None
        try:
            imfiles = getRandomImages(as_url=True,
                                      num=self.random['imnumber'],
                                      mode='local',
                                      release=self._release)
        except MarvinError as e:
            self.random['error'] = 'Error: could not get images: {0}'.format(e)
        else:
            images = buildImageDict(imfiles)

        # if image grab failed, make placeholders
        if not imfiles:
            images = buildImageDict(imfiles,
                                    test=True,
                                    num=self.random['imnumber'])

        # Add images to dict
        self.random['images'] = images

        return render_template('random.html', **self.random)
Exemple #3
0
    def postagestamp(self, page):
        ''' Get the postage stamps for a set of query results in the web '''

        postage = {}
        postage['error'] = None
        postage['images'] = None

        pagesize = 16  # number of rows (images) in a page
        pagenum = int(page)  # current page number
        searchvalue = current_session.get('searchvalue', None)
        if not searchvalue:
            postage[
                'error'] = 'No query found! Cannot generate images without a query.  Go to the Query Page!'
            return render_template('postage.html', **postage)

        sort = current_session.get('query_sort', 'cube.mangaid')
        offset = (pagesize * pagenum) - pagesize
        q, res = doQuery(searchfilter=searchvalue,
                         release=self._release,
                         sort=sort,
                         limit=10000)
        plateifus = res.getListOf('plateifu')
        # if a dap query, grab the unique galaxies
        if q._isdapquery:
            plateifus = list(set(plateifus))

        # only grab subset if more than 16 galaxies
        if len(plateifus) > pagesize:
            plateifus = plateifus[offset:offset + pagesize]

        # get images
        imfiles = None
        try:
            imfiles = getImagesByList(plateifus,
                                      as_url=True,
                                      mode='local',
                                      release=self._release)
        except MarvinError as e:
            postage['error'] = 'Error: could not get images: {0}'.format(e)
        else:
            images = buildImageDict(imfiles)

        # if image grab failed, make placeholders
        if not imfiles:
            images = buildImageDict(imfiles, test=True, num=pagesize)

        # Compute page stats
        totalpages = int(
            res.totalcount // pagesize) + int(res.totalcount % pagesize != 0)
        page = {
            'size': pagesize,
            'active': int(page),
            'total': totalpages,
            'count': res.totalcount
        }

        postage['page'] = page
        postage['images'] = images
        return render_template('postage.html', **postage)
Exemple #4
0
    def get(self, plateid):
        ''' Retrieve info for a given plate id '''

        # validate the input
        args = av.manual_parse(self, request)

        self.plate['plateid'] = args.get('plateid')
        pinputs = {
            'plate': plateid,
            'mode': 'local',
            'nocubes': True,
            'release': self._release
        }
        try:
            plate = mPlate(**pinputs)
        except MarvinError as e:
            self.plate['plate'] = None
            self.plate['drpver'] = self._drpver
            self.plate[
                'error'] = 'Could not grab Plate for id {0}: {1}'.format(
                    plateid, e)
        else:
            self.plate['plate'] = plate
            self.plate['drpver'] = plate._drpver
            tmpfile = plate._getFullPath(url=True)
            self.plate['sasurl'] = plate.platedir

        # Get images for plate
        imfiles = None
        try:
            imfiles = getImagesByPlate(plateid=plateid,
                                       as_url=True,
                                       mode='local',
                                       release=self._release)
        except MarvinError as e:
            self.plate[
                'error'] = 'Error: could not get images for plate {0}: {1}'.format(
                    plateid, e)
        else:
            # thumbs = [imfiles.pop(imfiles.index(t)) if 'thumb' in t else t for t in imfiles]
            # plateifu = ['-'.join(re.findall('\d{3,5}', im)) for im in imfiles]
            images = buildImageDict(imfiles)

        # if image grab failed, make placeholders
        if not imfiles:
            images = buildImageDict(imfiles, test=True, num=29)

        # Add images to dict
        self.plate['images'] = images

        return render_template('plate.html', **self.plate)
 def test_realimages(self, release):
     imfiles = getImagesByPlate(plateid='8485',
                                as_url=True,
                                mode='local',
                                release=release)
     images = buildImageDict(imfiles)
     names = [im['name'] for im in images]
     assert images
     assert '8485-1901' in names
     assert 'https://data.sdss.org/sas/mangawork/manga/spectro/redux/' in images[
         0]['image']
 def test_noimages(self):
     images = buildImageDict(None, num=5)
     assert not images
 def test_placeholder(self):
     images = buildImageDict(None, test=True, num=5)
     assert len(images) == 5
     assert images[0]['name'] == '4444-0000'
     assert 'placehold.it' in images[0]['image']