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)
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)
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)
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']