Ejemplo n.º 1
0
def save_candidates_to_mongodb(candidates, collection, overwrite=False):
    """ Save a list of light curves to the given mongodb collection """

    for candidate in candidates:
        db_lightcurve = mongo.get_light_curve_from_collection(candidate.field_id, candidate.ccd_id, candidate.source_id, collection)
        if db_lightcurve != None and not overwrite:
            continue
        elif db_lightcurve != None and overwrite:
            collection.remove({"_id" : db_lightcurve["_id"]})

        try:
            ra, dec = candidate.ra, candidate.dec
        except AttributeError:
            logging.error("Candidate light curve has no 'ra' or 'dec' attributes!")
            continue

        microlensing_fit = {}
        microlensing_fit["tE"] = candidate.tE
        microlensing_fit["t0"] = candidate.t0
        microlensing_fit["u0"] = candidate.u0
        microlensing_fit["m0"] = candidate.m0
        microlensing_fit["chisqr"] = candidate.chisqr
        light_curve_document = mongo.light_curve_to_document(candidate, indices=candidate.indices, microlensing_fit=microlensing_fit, features=candidate.features)
        try:
            light_curve_document["tags"] += candidate.tags
        except AttributeError:
            pass
        mongo.save_light_curve_document_to_collection(light_curve_document, collection)

    return True
Ejemplo n.º 2
0
def ptfimage():
    """ Returns a JPG PTF image """
    if not request.args.has_key("source_id") or not request.args.has_key("field_id") or not request.args.has_key("ccd_id"):
        abort(404)
    
    light_curve = get_light_curve_from_collection(int(request.args["field_id"]), int(request.args["ccd_id"]), int(request.args["source_id"]), light_curve_collection)
    
    try:
        mjd = float(request.args["mjd"])
    except:
        mjd = light_curve.mjd[0]
    
    ra = light_curve.ra
    dec = light_curve.dec
    
    # http://kanaloa.ipac.caltech.edu/ibe/search/ptf/dev/process?POS=12.5432151118,40.1539468896&size=0.005&columns=pfilename&where=obsmjd=55398.33127
    url = "http://kanaloa.ipac.caltech.edu/ibe/search/ptf/dev/process?POS={0},{1}&SIZE={2}&columns=pfilename&where=obsmjd={3:.5f}".format(ra, dec, 10./3600., mjd)
    
    http_request = urllib2.Request(url)
    base64string = base64.encodestring("%s:%s" % (ptf_user, ptf_password)).replace('\n', '')
    http_request.add_header("Authorization", "Basic %s" % base64string)
    file = StringIO.StringIO(urllib2.urlopen(http_request).read())
    filename = np.genfromtxt(file, skiprows=4, usecols=[3], dtype=str)
    
    fits_image_url = os.path.join(app.config['IPAC_DATA_URL'], str(filename))
    
    http_request = urllib2.Request(fits_image_url + "?center={0},{1}&size=50px".format(ra,dec))
    base64string = base64.encodestring('%s:%s' % (ptf_user, ptf_password)).replace('\n', '')
    http_request.add_header("Authorization", "Basic %s" % base64string)
    
    try:
        f = StringIO.StringIO(urllib2.urlopen(http_request).read())
    except urllib2.HTTPError:
        flash("Error downloading image!")
        return 
    
    try:
        gz = gzip.GzipFile(fileobj=f, mode="rb")
        gz.seek(0)
        
        fitsFile = StringIO.StringIO(gz.read())
    except IOError:
        fitsFile = f
    
    fitsFile.seek(0)
    
    hdulist = pf.open(fitsFile, mode="readonly")
    
    image_data = hdulist[0].data
    scaled_image_data = (255*(image_data - image_data.min()) / (image_data.max() - image_data.min())).astype(np.uint8)
    
    image = Image.fromarray(scaled_image_data)
    
    output = StringIO.StringIO()
    image.save(output, format="png")
    #image.save(open("test.png", "w"), format="png")
    
    #contents = output.getvalue()
    #output.close()
    
    output.seek(0)
    
    #print 'Content-Type:image/png\n'
    return send_file(output, mimetype="image/png")