def islofarhdf5(filename): """returns True if filename is a hdf5 container""" if not os.path.isfile(filename): return False if filename[-2:].lower() != 'h5': return False try: casacore_image(filename) except RuntimeError: return False return True
def paths_to_fits(paths): """ paths (tuple): list of paths to a astronomical image which can be opened with casacore returns: tuple: of HDUlist objects """ for path in paths: try: i = casacore_image(path) except RuntimeError: logging.error("can't open image {}".format(path)) yield else: with NamedTemporaryFile() as temp_file: i.tofits(temp_file.name) fits = fits_open(temp_file.name) yield cPickle.dumps(fits[0].data), str(fits[0].header)
def image_to_mongodb(filename, hostname, port, db): """Copy a file into mongodb""" try: import pymongo import gridfs except ImportError: msg = "Could not import MongoDB modules" logger.error(msg) warnings.warn(msg) return False try: connection = pymongo.MongoClient(host=hostname, port=port) gfs = gridfs.GridFS(connection[db]) if gfs.exists(filename=filename): logger.debug("File already in database") else: # This conversion should work whether the input file # is in FITS or CASA format. # temp_fits_file is removed automatically when closed. temp_fits_file = NamedTemporaryFile() i = casacore_image(filename) i.tofits(temp_fits_file.name) new_file = gfs.new_file(filename=filename) with open(temp_fits_file.name, "r") as f: new_file.write(f) new_file.close() logger.info("Saved local copy of %s on %s"\ % (os.path.basename(filename), hostname)) except Exception, e: msg = "Failed to save image to MongoDB: %s" % (str(e), ) logger.error(msg) warnings.warn(msg) return False
def image_to_mongodb(filename, hostname, port, db): """Copy a file into mongodb""" try: import pymongo import gridfs except ImportError: msg = "Could not import MongoDB modules" logger.error(msg) warnings.warn(msg) return False try: connection = pymongo.MongoClient(host=hostname, port=port) gfs = gridfs.GridFS(connection[db]) if gfs.exists(filename=filename): logger.debug("File already in database") else: # This conversion should work whether the input file # is in FITS or CASA format. # temp_fits_file is removed automatically when closed. temp_fits_file = NamedTemporaryFile() i = casacore_image(filename) i.tofits(temp_fits_file.name) new_file = gfs.new_file(filename=filename) with open(temp_fits_file.name, "r") as f: new_file.write(f) new_file.close() logger.info("Saved local copy of %s on %s"\ % (os.path.basename(filename), hostname)) except Exception, e: msg = "Failed to save image to MongoDB: %s" % (str(e),) logger.error(msg) warnings.warn(msg) return False