Exemplo n.º 1
0
    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)
Exemplo n.º 3
0
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
Exemplo n.º 4
0
    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))
Exemplo n.º 5
0
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))
Exemplo n.º 6
0
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)