def process_magnitudes(self): job = self.analysis.astrometry_job submission = job.submission logger.info('-> Processing reference stars/magnitudes for submission %d' % \ (submission.subid)) coords = urllib.urlopen(self.analysis.coords_json_url).read() correlations = urllib.urlopen(self.analysis.astrometry_corr_fits_url).read() # Compute reference stars and their apparent magnitudes. ref_stars, unknown_stars = \ catalog.choose_reference_stars(self.image_fits_data, correlations, coords) name = '%d_%d_image_reference_stars.json' % (submission.subid, job.jobid) logger.info(' -> Uploading %s...' % name) if not args.dry_run: self.analysis.image_reference_stars = ref_stars self.analysis.image_reference_stars_json_url = \ s3_util.upload_to_s3(json.dumps(ref_stars, indent=2, use_decimal=True), \ self.get_upload_key_prefix(), name) logger.info('-> Uploaded reference stars for submission %d' % \ (submission.subid)) name = '%d_%d_image_unknown_stars.json' % (submission.subid, job.jobid) logger.info(' -> Uploading %s...' % name) if not args.dry_run: self.analysis.image_unknown_stars = unknown_stars self.analysis.image_unknown_stars_json_url = \ s3_util.upload_to_s3(json.dumps(unknown_stars, indent=2, use_decimal=True), \ self.get_upload_key_prefix(), name) logger.info('-> Uploaded unknown stars for submission %d' % \ (submission.subid)) # Get reference star standard magnitudes. standard_mags = catalog.get_standard_magnitudes_urat1(ref_stars) name = '%d_%d_catalog_reference_stars.json' % (submission.subid, job.jobid) logger.info(' -> Uploading %s...' % name) if not args.dry_run: self.analysis.catalog_reference_stars = standard_mags self.analysis.catalog_reference_stars_json_url = \ s3_util.upload_to_s3(json.dumps(standard_mags, indent=2, use_decimal=True), \ self.get_upload_key_prefix(), name) # Combine into single annotated point sources object. all_points = catalog.merge_known_with_unknown(standard_mags, unknown_stars) name = '%d_%d_annotated_point_sources.json' % (submission.subid, job.jobid) logger.info(' -> Uploading %s...' % name) if not args.dry_run: self.analysis.annotated_point_sources = all_points self.analysis.annotated_point_sources_json_url = \ s3_util.upload_to_s3(json.dumps(all_points, indent=2, use_decimal=True), \ self.get_upload_key_prefix(), name) logger.info('-> Uploaded annotated point sources for submission %d' % \ (submission.subid))
def upload_graph(lightcurve, img_graph): logger.info('-> Uploading tf graph for lightcurve %d' % (lightcurve.id)) upload_key_prefix = 'processed/lightcurve/%d' % (lightcurve.id) name = 'tf_graph.jpg' logger.info(' -> Uploading %s...' % name) return upload_to_s3(img_graph, upload_key_prefix, name)
def edit_lightcurve(user, imgs, lightcurve_id): lc = get_object_or_404(LightCurve, id=lightcurve_id, user=user) for img in imgs: url = s3_util.upload_to_s3(img.read(), 'raw', img.name) print 'Uploaded %s to s3 url: %s' % (img.name, url) UserUploadedImage(user=user, image_url=url, original_filename=img.name, lightcurve=lc).save() return lc
def process_submission(self, job): submission = self.submission logger.info('-> Uploading analysis for submission %d' % (submission.subid)) # TODO(ian): Move this to astropy_util.py original_display_url = astrometry_original_image_client.get_url( submission.subid) annotated_display_url = 'http://35.202.61.141:8081/annotated_display/%d' \ % (job.jobid) new_image_fits_url = 'http://35.202.61.141:8081/new_fits_file/%d' \ % (job.jobid) corr_url = 'http://35.202.61.141:8081/corr_file/%d' \ % (job.jobid) # Original name = '%d_%d_original.jpg' % (submission.subid, job.jobid) logger.info(' -> Uploading %s...' % name) if not args.dry_run: self.analysis.astrometry_original_display_url = \ s3_util.upload_to_s3_via_url(original_display_url, \ self.get_upload_key_prefix(), name) # Annotated jpg. name = '%d_%d_annotated.jpg' % (submission.subid, job.jobid) logger.info(' -> Uploading %s...' % name) if not args.dry_run: self.analysis.astrometry_annotated_display_url = \ s3_util.upload_to_s3_via_url(annotated_display_url, \ self.get_upload_key_prefix(), name) # CORR. name = '%d_%d_corr.fits' % (submission.subid, job.jobid) logger.info(' -> Uploading %s...' % name) if not args.dry_run: self.analysis.astrometry_corr_fits_url = \ s3_util.upload_to_s3_via_url(corr_url, \ self.get_upload_key_prefix(), name) # FITS. name = '%d_%d_image.fits' % (submission.subid, job.jobid) # TODO(ian): Process this raw fits data here using some util fn, rather # than processing it in point_source_extraction. self.image_fits_data = urllib.urlopen(new_image_fits_url).read() logger.info(' -> Uploading %s...' % name) if not args.dry_run: self.analysis.astrometry_image_fits_url = \ s3_util.upload_to_s3(self.image_fits_data, \ self.get_upload_key_prefix(), name) logger.info('-> Uploaded analysis for submission %d' % (submission.subid))
def upload_image(request): if request.method == 'POST': img = request.FILES['image'] # Data is read just once to avoid rewinding. img_data = img.read() url = s3_util.upload_to_s3(img_data, 'raw', img.name) submission = process_astrometry_online(url) # Redirect to submission viewing page. return redirect('view_submission', subid=submission.subid) return render_to_response('upload_image.html', {}, context_instance=RequestContext(request))
def create_new_lightcurve(user, imgs): date = datetime.datetime.today().strftime('%Y-%m-%d') lc = LightCurve(user=user, name='%s %s' % (user.username, date)) lc.save() for img in imgs: url = s3_util.upload_to_s3(img.read(), 'raw', img.name) print 'Uploaded %s to s3 url: %s' % (img.name, url) UserUploadedImage(user=user, image_url=url, original_filename=img.name, lightcurve=lc).save() return lc
def save_submission_results(self, job, result): submission = self.submission logger.info('-> Uploading results for submission %d' % (submission.subid)) annotated_display_url = 'http://nova.astrometry.net/annotated_display/%d' \ % (job.jobid) new_image_fits_url = 'http://nova.astrometry.net/new_fits_file/%d' \ % (job.jobid) corr_url = 'http://nova.astrometry.net/corr_file/%d' \ % (job.jobid) # Timestamp is added to name automatically. upload_key_prefix = 'processed/%d' % (submission.subid) # Annotated jpg. name = '%d_%d_annotated.jpg' % (submission.subid, job.jobid) logger.info(' -> Uploading %s...' % name) if not args['dry_run']: result.astrometry_annotated_display_url = \ s3_util.upload_to_s3_via_url(annotated_display_url, \ upload_key_prefix, name) # CORR. name = '%d_%d_corr.fits' % (submission.subid, job.jobid) logger.info(' -> Uploading %s...' % name) if not args['dry_run']: result.astrometry_corr_fits_url = \ s3_util.upload_to_s3_via_url(corr_url, \ upload_key_prefix, name) # FITS. name = '%d_%d_image.fits' % (submission.subid, job.jobid) fits_image_data = urllib.urlopen(new_image_fits_url).read() logger.info(' -> Uploading %s...' % name) if not args['dry_run']: result.astrometry_image_fits_url = \ s3_util.upload_to_s3(fits_image_data, \ upload_key_prefix, name) logger.info('-> Uploaded results for submission %d' % (submission.subid)) # Point source extraction processing. self.process_fits_image(fits_image_data, job, result, upload_key_prefix)