Skip to content
Snippets Groups Projects
Commit 60172e8e authored by Caillat Michel's avatar Caillat Michel
Browse files

Fixed the last (?) bugs

parent 787fd591
Branches
No related tags found
No related merge requests found
......@@ -24,6 +24,12 @@ import dask.array as da
import traceback
from datetime import datetime
import os
from matplotlib import pyplot as pp
def cmap2palette (palette_name):
x = pp.get_cmap(palette_name)
return [tuple(map(lambda x: int(round(x*255)), x(i)[0:3])) for i in range(x.N)]
class DataBlock:
# What is the FITS files root directory
......@@ -32,8 +38,44 @@ class DataBlock:
# What is the PNG files root directory
__PNGFilePrefix = ""
# What are the palette names
__palette_names = ["Greys", "RdYlBu", "hsv", "gist_ncar", "gist_rainbow", "gist_gray", "Spectral", "jet", "plasma", "inferno", "magma", "afmhot", "gist_heat"]
__palette = {palette_name: cmap2palette(palette_name) for palette_name in __palette_names}
__default_palette_name = "gist_rainbow"
# What are the transformation names ?
__transformation_names = ["minmax", "percent98"]
__default_transformation_name = "minmax"
# What are the video mode names ?
__video_mode_names = ["direct", "inverse"]
__default_video_mode_name = "direct"
# What are the rendering capabilities ?
__renderingCapabilities = {
"itts" : __transformation_names,
"default_itt_index" : 0,
"luts" : __palette_names,
"default_lut_index" : 2,
"vmodes" : __video_mode_names,
"default_vmode_index" : 0
}
#===========================================================================
# Class methods - Setters and getters
@classmethod
def getPaletteFromName(cls, name):
return DataBlock.__palette[name] if name in DataBlock.__palette_names else DataBlock.__palette[DataBlock.__default_palette_name]
@classmethod
def getDefaultPaletteName(cls):
return DataBlock.__default_palette_name
@classmethod
def getDefaults(cls):
return (DataBlock.__default_palette_name, DataBlock.__default_transformation_name, DataBlock.__default_video_mode_name)
@classmethod
def setFITSFilePrefix(cls, FITSFilePrefix):
......@@ -51,6 +93,10 @@ class DataBlock:
def getPNGFilePrefix(cls):
return DataBlock.__PNGFilePrefix
@classmethod
def getRenderingCapabilities(cls):
return DataBlock.__renderingCapabilities
#===========================================================================
# CTOR
#
......@@ -68,14 +114,16 @@ class DataBlock:
self.__cdelt = None
self.__timestamp = None # the last time a method was called on self
self.__logger.debug("A DataBlock has been just built")
#===========================================================================
#
# Public setters
#
# Set a timestamp on self
def setTimestamp(self, timestamp):
self.__timestamp = timestamp
def setTimestamp(self):
self.__timestamp = datetime.now()
#
# Given a FITS file path :
......@@ -205,15 +253,15 @@ class DataBlock:
return result
def __getSumOverSliceRectArea_0(self, sliceIndex, RAPix0=None, RAPix1=None, DECPix0=None, DECPix1=None):
self.__logger.debug("__getSumOnSliceRectArea_0 : entering")
self.__logger.debug("__getSumOverSliceRectArea_0 : entering")
with_dask=True
if with_dask:
x = (dask.array.nansum(self.__data[sliceIndex, DECPix0:DECPix1, RAPix0:RAPix1]) / self.__convert * self.__cdelt).compute().tolist()
else:
x = np.nansum(self.__data[sliceIndex, DECPix0:DECPix1, RAPix0:RAPix1]) / self.__convert * self.__cdelt
self.__logger.debug("__getSumOnSliceRectArea__0 : exiting")
return {"status": True, "message": "", "result": x}
self.__logger.debug("__getSumOverSliceRectArea__0 : exiting")
return x
def __getAverage_0(self, step, startZ=None, endZ=None, startY=None, endY=None, startX=None, endX=None):
self.__logger.debug("__getAverage_0 : entering")
......@@ -279,19 +327,19 @@ class DataBlock:
def __getPercentile(self, a, percent):
return np.nanpercentile(a, percent)
def __convertOneSlice2PNG(self, PNGPath, sliceIndex, sliceData, transformation_name=__default_transformation_name, palette_name=__default_palette_name, video_mode_name=__default_video_mode_name):
def __convertOneSlice2PNG(self, PNGPath, sliceIndex, sliceData, transformation_name, palette_name, video_mode_name):
self.__logger.debug("__convertOneSlice2PNG : entering")
self.__logger.debug("__convertOneSlice2PNG : exiting")
return self.__convertOneSlice2PNG_0(PNGPath, sliceIndex, sliceData, transformation_name, palette_name, video_mode_name)
def __convertOneSlice2PNG_0 (self, PNGPath, sliceData, transformation_name=__default_transformation_name, palette_name=__default_palette_name, video_mode_name=__default_video_mode_name):
def __convertOneSlice2PNG_0 (self, PNGPath, sliceData, transformation_name, palette_name, video_mode_name):
self.__logger.debug("__convertOneSlice2PNG_0 : entering")
img_f = np.zeros((sliceData.shape[1], sliceData.shape[0]), dtype=np.float32)
img_i = np.zeros((sliceData.shape[1], sliceData.shape[0]), dtype=np.uint8)
data_steps = {}
palette = getPaletteFromName(palette_name)
palette = DataBlock.getPaletteFromName(palette_name)
N = len(palette)
if transformation_name == "percent98" :
self.__logger.debug("A '%s' transformation will be applied " % transformation_name)
......@@ -365,7 +413,7 @@ class DataBlock:
self.__logger.debug("__convertOneSlice2PNG_0 : exiting")
return data_steps
def __convertSummedSliceRange2PNG(self, sliceIndex0, sliceIndex1, sliceData, transformation_name=__default_transformation_name, palette_name=__default_palette_name, video_mode_name=__default_video_mode_name):
def __convertSummedSliceRange2PNG(self, sliceIndex0, sliceIndex1, sliceData, transformation_name, palette_name, video_mode_name):
self.__logger.debug("__convertSummedSliceRange2PNG : entering")
PNGPath = "%s/%d-%d.%s.%s.%s.png" % (self.__PNGDir, sliceIndex0, sliceIndex1, transformation_name, palette_name, video_mode_name)
......@@ -486,22 +534,16 @@ class DataBlock:
# Public getters and accessors.
#
def getTimestamp(self):
return self.timestamp
return {"status": True, "message": "", "result": self.__timestamp}
def getHeader(self):
return self.__header
return {"status": True, "message": "", "result": json.dumps(dict(self.__header))}
def getDimensions(self):
return {"status": True, "message": "", "result": self.__data.shape}
def getSlice(self, sliceNumb, step, relFITSFilePath):
def getSlice(self, sliceNumb, step):
self.__logger.debug("getSlice : entering")
try:
sliceNumb = int(sliceNumb)
except TypeError:
sliceNumb = 0
self.__logger.debug( "Getting slice: %d of %s with shape %r" % (sliceNumb, self.__data.shape))
numDimensions = len(self.__data.shape)
......@@ -514,12 +556,8 @@ class DataBlock:
result = self.__data[sliceNumb, 0:self.__data.shape[1]:step, 0:self.__data.shape[2]:step]
else:
self.__logger.debug("Can't process data with such a shape : %r" % self.__data.shape);
# if res :
# self.sliceStats[sliceNumb] = {"min": np.nanmin(res), "max": np.nanmax(res)}
result[np.isnan(res)] = None
self.__logger.debug("getSlice : exiting")
return {"status": True, "message": "", "result": result.tolist()}
def getFreq(self, x=None, y=None, startZ=None, endZ=None):
......@@ -557,8 +595,7 @@ class DataBlock:
return result
def getAverageSpectrum(self, startY=None, endY=None, startX=None, endX=None, retFITS=False):
self.__logger.debug( "Getting frequency average.")
self.__logger.debug("getAverageSpectrum : entering")
startZ = 0
endZ = self.__data.shape[0]
if startX == None:
......@@ -580,8 +617,9 @@ class DataBlock:
if with_dask:
averageSpectrum = (dask.array.nansum(self.__data[:, startY:endY, startX:endX], (1,2)) / self.__convert * self.__cdelt).compute().tolist()
else:
averageSpectrum = np.nansum(self.__data[:, startY:endY, startX:endX], (1,2)) / self.__convert * self.__cdelt
averageSpectrum = np.nansum(self.__data[:, startY:endY, startX:endX], (1,2)) / self.__convert * self.__cdel
self.__logger.debug(f"Returning an averageSpectrum of {len(averageSpectrum)} values.")
self.__logger.debug(averageSpectrum)
if retFITS :
crds = self.__getFreqsAtiRAiDEC(startX, startY)
averageSpectrumFits = self.__createFITSSpectrumFromData(crds,self.__header["CUNIT3"], averageSpectrum, "Jy")
......@@ -589,14 +627,17 @@ class DataBlock:
else :
result = {"averageSpectrum": averageSpectrum, "averageSpectrumFits": None}
return {"status": True, "message": "", "result": result} #.tolist()}
result = {"status": True, "message": "", "result": result}
self.__logger.debug(f"*** {result}")
self.__logger.debug("getAverageSpectrum : exiting")
return result
def getSumOverSliceRectArea(self, sliceIndex, RAPix0=None, RAPix1=None, DECPix0=None, DECPix1=None):
self.__logger.debug("getSumOnSliceRectArea : entering")
if (len(self.__data.shape) == 2 and sliceIndex >= 1) or (len(self.__data.shape) == 3 and sliceIndex >= self.__data.shape[0]):
result = {"status": False, "message": "Invalid slice index '%d'." % (sliceIndex), "result": None }
else:
result = self.__getSumOverSliceRectArea_0(sliceIndex, RAPix0, RAPix1, DECPix0, DECPix1)
result = {"status": True, "message": "", "result": self.__getSumOverSliceRectArea_0(sliceIndex, RAPix0, RAPix1, DECPix0, DECPix1)}
self.__logger.debug("getSumOnSliceRectArea : exiting")
return result
......@@ -610,8 +651,8 @@ class DataBlock:
def getOneSliceAsPNG (self, sliceIndex, transformation_name, palette_name, video_mode_name):
self.__logger.debug("getOneSliceAsPNG : entering.")
self.__logger.debug("Video mode name = %s" % video_mode_name)
self.__logger.debug("sliceIndex = %r, relFITSFilePath = %r" % (sliceIndex, relFITSFilePath))
relPNGFileDir = ('.').join(relFITSFilePath.split('.')[:-1])
self.__logger.debug("sliceIndex = %r" % (sliceIndex))
relPNGFileDir = ('.').join(self.__relFITSFilePath.split('.')[:-1])
absPNGFileDir = DataBlock.getPNGFilePrefix()+"/"+relPNGFileDir
transformation_name = self.__getForcedTransformationName(transformation_name)
......@@ -720,7 +761,7 @@ class DataBlock:
squaredData = self.__squareSliceData(summedSliceRangeData)
data_steps = self.__convertSummedSliceRange2PNG(sliceIndex0, sliceIndex1, squaredData, transformation_name, palette_name, video_mode_name)
h = self.__header[self.__relFITSFilePath]
h = self.__header
if "CDELT1" in h and "CDELT2" in h :
x = {"BITPIX": h["BITPIX"],
"NAXIS1": squaredData.shape[0],
......@@ -830,7 +871,7 @@ class DataBlock:
result = []
for i in range(start, end, step):
self.__logger.debug( "i: %d" % i)
result.append(self.degToHMSDMS(0, i, relFITSFilePath).split(" ")[1])
result.append(self.degToHMSDMS(0, i).split(" ")[1])
self.__logger.debug("rangeToDMS : exiting")
return {"status": True, "message": "", "result": result}
#
......
......@@ -24,10 +24,10 @@ import dask.array as da
import traceback
import DataBlock
from DataBlock import DataBlock
mpl.use('Agg') # to avoid problem when DISPLAY isn't defined.
from matplotlib import pyplot as pp
#from matplotlib import pyplot as pp
DataRoot = "dataroot"
FITSFilePrefix = DataRoot + '/FITS/'
......@@ -44,42 +44,40 @@ DataBlock.setFITSFilePrefix(FITSFilePrefix)
DataBlock.setPNGFilePrefix(PNGFilePrefix)
def __cmap2palette (name):
x = pp.get_cmap(palette_name)
return [tuple(map(lambda x: int(round(x*255)), x(i)[0:3])) for i in range(x.N)]
__palette_names = ["Greys", "RdYlBu", "hsv", "gist_ncar", "gist_rainbow", "gist_gray", "Spectral", "jet", "plasma", "inferno", "magma", "afmhot", "gist_heat"]
__palette = dict()
for palette_name in __palette_names:
__palette[palette_name] = __cmap2palette(palette_name)
__default_palette_name = "Greys"
def getPaletteFromName (name ):
return __palette[name] if name in __palette_names else __palette[__default_palette_name]
__transformation_names = ["minmax", "percent98"]
__video_mode_names = ["direct", "inverse"]
def getRenderingCapabilities():
return {
"itts" : __transformation_names,
"default_itt_index" : 0,
"luts" : __palette_names,
"default_lut_index" : 2,
"vmodes" : __video_mode_names,
"default_vmode_index" : 0
}
# def __cmap2palette (name):
# x = pp.get_cmap(palette_name)
# return [tuple(map(lambda x: int(round(x*255)), x(i)[0:3])) for i in range(x.N)]
#
# __palette_names = ["Greys", "RdYlBu", "hsv", "gist_ncar", "gist_rainbow", "gist_gray", "Spectral", "jet", "plasma", "inferno", "magma", "afmhot", "gist_heat"]
# __palette = dict()
# for palette_name in __palette_names:
# __palette[palette_name] = __cmap2palette(palette_name)
#
# __default_palette_name = "Greys"
#
# def getPaletteFromName (name ):
# return __palette[name] if name in __palette_names else __palette[__default_palette_name]
#
# __transformation_names = ["minmax", "percent98"]
#
# __video_mode_names = ["direct", "inverse"]
#
# def getRenderingCapabilities():
# return {
# "itts" : __transformation_names,
# "default_itt_index" : 0,
# "luts" : __palette_names,
# "default_lut_index" : 2,
# "vmodes" : __video_mode_names,
# "default_vmode_index" : 0
# }
#
#
# An implementation of the class used in the serverWsgi-ish server.
#
class DataManagerImpl :
__default_palette_name = "gist_rainbow"
__default_transformation_name = "minmax"
__default_video_mode_name = "direct"
__default_palette_name, __default_transformation_name, __default_video_mode_name = DataBlock.getDefaults()
#===========================================================================
# Private methods
......@@ -89,11 +87,15 @@ class DataManagerImpl :
# memory. If yes update the corresponding DataBlock's timestamp.
def __checkPresence(self, relFITSFilePath):
self.__logger.debug("__checkPresence : entering")
result = {"status": True, "message" : '', "result": None}
if relFITSFilePath in self.__dataBlocks:
self.__dataBlocks[relFITSFilePath].setTimestamp(datetime.now())
return {status: True, message : '', result: ''}
self.__dataBlocks[relFITSFilePath].setTimestamp()
else:
return {status: True, message: 'FITS file "{relFITSFilePath}" is not present in memory. Call "setData" first'}
result = {"status": False, "message": f'FITS file "{relFITSFilePath}" is not present in memory. Call "setData" first'}
self.__logger.debug("__checkPresence : exiting")
return result
def __convert_size(self, size_bytes):
if size_bytes == 0:
......@@ -140,7 +142,7 @@ class DataManagerImpl :
# Return the keys of the dataBlocks dictionary as if it was ordered by timestamp ( asc or desc)
#
def __getKeysOrderedByTimestamp (self, reverse=True):
return [x[0] for x in sorted({x: self.__dataBlocks[x]["timestamp"] for x in self.__dataBlocks.keys()}.items(), key=lambda kv[1], reverse)]
return [x[0] for x in sorted({x: self.__dataBlocks[x]["timestamp"] for x in self.__dataBlocks.keys()}.items(), key=lambda kv: kv[1], reverse=reverse)]
#===========================================================================
# Public methods.
......@@ -152,6 +154,7 @@ class DataManagerImpl :
self.__dataBlocks = dict()
self.__logger = logger
self.__logger.debug(f"An instance of DataManagerImpl is created")
#===========================================================================
# THE data selector.
......@@ -161,13 +164,14 @@ class DataManagerImpl :
#
def setData(self, relFITSFilePath):
self.__logger.debug("setData : entering")
absFITSFilePath = DataBlock.getFITSFilePrefix() + relFITSFilePath
self.__logger.debug(f"relFITSFilePath = {relFITSFilePath}")
result = None
if relFITSFilePath in self.__dataBlock :
if relFITSFilePath in self.__dataBlocks :
self.__logger.debug("File already opened: %s" % relFITSFilePath)
result = {"status": True, "message": "", "result":json.dumps(dict(self.__dataBlock[relFITSFilePath].header()))}
result = {"status": True, "message": "", "result":json.dumps(dict(self.__dataBlocks[relFITSFilePath].header()))}
else :
db = DataBlock(logger)
self.__logger.debug(f"loading {relFITSFilePath}")
db = DataBlock(self.__logger)
result = db.setData(relFITSFilePath)
if (result["status"]):
self.__dataBlocks[relFITSFilePath]=db
......@@ -188,13 +192,45 @@ class DataManagerImpl :
#===========================================================================
# Getters on a DataBlock identified by its relFITSFilePath ( i.e. the dictionary keys in __dataBlocks )
#
def getHeader(self, relFITSFilePath):
self.__logger.debug("getHeader : entering")
def getDimensions(self, relFITSFilePath, sessionID):
self.__logger.debug( "getDimensions : entering");
result = self.__checkPresence(relFITSFilePath)
if result["status"]:
result = self.__dataBlocks[relFITSFilePath].getDimensions()
self.__logger.debug( "getDimensions : exiting");
return {"status": True, "message": "", "result": result}
def getSlice(self, sliceNumb, step, relFITSFilePath):
self.__logger.debug("getSlice : entering")
if result["status"]:
result = self.__dataBlocks[relFITSFilePath].getSlice(sliceNumb, step)
self.__logger.debug("getSlice : entering")
return result
def getFreq(self, relFITSFilePath, x=None, y=None, startZ=None, endZ=None):
# y x ou x y
self.__logger.debug( "getFreq : entering")
result = self.__checkPresence(relFITSFilePath)
if result["status"]:
result = {"status": True, "message": "", "result": json.dumps(dict(self.__dataBlocks[relFITSFilePath].getHeader()))}
result = self.__dataBlocks[relFITSFilePath].getFreq(x, y, startZ, endZ)
self.__logger.debug( "getFreq : exiting")
return result
def getAverageSpectrum(self, relFITSFilePath, startY=None, endY=None, startX=None, endX=None, retFITS=False):
self.__logger.debug("getAverageSpectrum : entering")
result = self.__checkPresence(relFITSFilePath)
if result["status"]:
result = self.__dataBlocks[relFITSFilePath].getAverageSpectrum(startY, endY, startX, endX)
self.__logger.debug(f"** {result}")
self.__logger.debug("getAverageSpectrum : exiting")
return result
def getHeader(self, relFITSFilePath):
self.__logger.debug("getHeader : entering")
result = self.__checkPresence(relFITSFilePath)
if result["status"]:
result = self.__dataBlocks[relFITSFilePath].getHeader()
self.__logger.debug("getHeader : exiting")
self.__logger.debug("About to return %r" % result)
return result
......@@ -240,18 +276,11 @@ class DataManagerImpl :
self.__logger.debug("getPixelValueAtiFreqiRAiDEC : exiting")
return result
def getAverageSpectrum(self, relFITSFilePath, startY=None, endY=None, startX=None, endX=None, retFITS=False):
self.__logger.debug( "Getting frequency average.")
result = self.__checkPresence(relFITSFilePath)
if result["status"]:
result = self.__data[relFITSFilePath].getAverageSpectrum(startY, endY, startX, sliceIndex, retFITS)
return {"status": True, "message": "", "result": result}
def getSumOverSliceRectArea(self, relFITSFilePath, sliceIndex, RAPix0=None, RAPix1=None, DECPix0=None, DECPix1=None):
self.__logger.debug("getSumOnSliceRectArea : entering")
result = self.__checkPresence(relFITSFilePath)
if result["status"]:
result=self.__dataBlocks[relFITSFilePath].getPixelValueAtiFreqiRAiDEC(iFreq, iRA, iDEC)
result=self.__dataBlocks[relFITSFilePath].getSumOverSliceRectArea(sliceIndex, RAPix0, RAPix1, DECPix0, DECPix1)
self.__logger.debug("getSumOnSliceRectArea : exiting")
return result
......@@ -268,7 +297,7 @@ class DataManagerImpl :
self.__logger.debug("sliceIndex = %r, relFITSFilePath = %r" % (sliceIndex, relFITSFilePath))
result = self.__checkPresence(relFITSFilePath)
if result["status"]:
result = __dataBlocks[relFITSFilePath].getOneSliceAsPNG(sliceIndex, transformation_name, palette_name, video_mode_name)
result = self.__dataBlocks[relFITSFilePath].getOneSliceAsPNG(sliceIndex, transformation_name, palette_name, video_mode_name)
self.__logger.debug("getOneSliceAsPNG : exiting.")
return result
......@@ -319,7 +348,7 @@ class DataManagerImpl :
#
def renderingCapabilities(self) :
self.__logger.debug("renderingCapabilities: entering")
result = {"status": True, "message": "", "result": getRenderingCapabilities()}
result = {"status": True, "message": "", "result": DataBlock.getRenderingCapabilities()}
self.__logger.debug("renderingCapabilities: exiting")
return result
......@@ -330,8 +359,8 @@ class DataManagerImpl :
keys = self.__getKeysOrderedByTimestamp(reverse)
result = [
{"path": key,
"lastAccess": datetime.frometimestamp(self.__dataBlocks[key].getTimestamp()).strftime("%m/%d/%Y, %H:%M:%S")},
"size": self.__convert_size(os.path.getsize(FITSFilePrefix + "/" + key))
"lastAccess": datetime.frometimestamp(self.__dataBlocks[key].getTimestamp()).strftime("%m/%d/%Y, %H:%M:%S"),
"size": self.__convert_size(os.path.getsize(FITSFilePrefix + "/" + key))}
]
return {"status": True, message: "", "result": result}
......
......@@ -25,7 +25,7 @@ baseUrl = "/artemix"
logger = None
dm = None
import dataManager_michel as dataManager
import dataManager_michel_new as dataManager
#####################################################################
# #
......@@ -139,7 +139,7 @@ def degToHMSDMS():
dec = getFloatValue(request.GET['dec'])
sessionID = request.GET['sessionID']
response.content_type = "application/json; charset=utf-8"
return json.dumps(dm.degToHMSDMS(ra, dec, fileName, sessionID))
return json.dumps(dm.degToHMSDMS(ra, dec, fileName))
"""
......@@ -158,7 +158,7 @@ def rangeToHMS():
step = getIntValue(request.GET['step'])
response.content_type = "application/json; charset=utf-8"
return json.dumps(dm.rangeToHMS(start, end, step, fileName, sessionID))
return json.dumps(dm.rangeToHMS(start, end, step, fileName))
"""
Given a FITS filename and an interval of positive integers values and
......@@ -176,7 +176,7 @@ def rangeToDMS():
step = getIntValue(request.GET['step'])
response.content_type = "application/json; charset=utf-8"
return json.dumps(dm.rangeToDMS(start, end, step, fileName, sessionID))
return json.dumps(dm.rangeToDMS(start, end, step, fileName))
"""
Given fileName read corresponding the FITS file in memory
......@@ -185,10 +185,13 @@ def rangeToDMS():
@route( baseUrl+'/setData', name='setData', method='GET')
@enable_cors
def setData():
fileName = rebuildFilename(request.GET['fileName'])
logger.debug("setData : entering")
relFITSFilePath = rebuildFilename(request.GET['fileName'])
sessionID = request.GET['sessionID']
response.content_type = "application/json; charset=utf-8"
return json.dumps(dm.setData(fileName, sessionID))
result = dm.setData(relFITSFilePath)
logger.debug("setData : exiting")
return json.dumps(result)
"""
Given filename return the shape of the data cube contained
......@@ -202,7 +205,7 @@ def getDimensions():
sessionID = request.GET['sessionID']
response.content_type = "application/json; charset=utf-8"
return json.dumps(dm.getDimensions(fileName, sessionID))
return json.dumps(dm.getDimensions(fileName))
"""
Given a multidimensional array l
......@@ -246,13 +249,16 @@ def getPixelValueAtiFreqiRAiDEC():
@route( baseUrl+'/getSlice', name='getSlice', method='GET')
@enable_cors
def getSlice():
logger.debug("getSlice - wrapper : entering" )
fileName = rebuildFilename(request.GET['fileName'])
relFITSFilePath = rebuildFilename(request.GET['fileName'])
sessionID = request.GET['sessionID']
sliceNumb = int(request.GET['sliceNumb'])
step = int(request.GET['step'])
result = dm.getSlice(sliceNumb, step, fileName, sessionID)
result = dm.getSlice(sliceNumb, step, relFITSFilePath)
response.content_type = "application/json; charset=utf-8"
logger.debug("getSlice - wrapper : exiting" )
return json.dumps(result)
"""
......@@ -263,16 +269,19 @@ def getSlice():
@route( baseUrl+'/getFreq', name='getFreq', method='GET')
@enable_cors
def getFreq():
logger.debug("getFreq - wrapper : entering" )
fileName = rebuildFilename(request.GET['fileName'])
relFITSFilePath = rebuildFilename(request.GET['fileName'])
sessionID = request.GET['sessionID']
x = getIntValue(request.GET['x'])
y = getIntValue(request.GET['y'])
startZ = getIntValue(request.GET['startZ'])
endZ = getIntValue(request.GET['endZ'])
response.content_type = "application/json; charset=utf-8"
result = json.dumps(dm.getFreq(relFITSFilePath, x, y, startZ, endZ))
logger.debug("getFreq - wrapper : exiting" )
return json.dumps(dm.getFreq(fileName, sessionID, x, y, startZ, endZ))
return result
"""
Given two pairs -- startX,endX and startY,endY -- defining a rectangular area the RAxDEC plane
......@@ -291,6 +300,7 @@ def getFreq():
@route( baseUrl+'/getAverageSpectrum', name='getAverageSpectrum', method='GET')
@enable_cors
def getAverageSpectrum():
logger.debug("getAverageSpectrum - wrapper : entering" )
relFITSFilePath = rebuildFilename(request.GET['relFITSFilePath'])
sessionID = request.GET['sessionID']
......@@ -301,8 +311,10 @@ def getAverageSpectrum():
endX = getIntValue(request.GET['endX'])
retFITS = getBoolValue(request.GET['retFITS'])
response.content_type = "application/json; charset=utf-8"
result = json.dumps(dm.getAverageSpectrum(relFITSFilePath, startY, endY, startX, endX, retFITS))
logger.debug(f"* {result}")
logger.debug("getAverageSpectrum - wrapper : exiting" )
result = json.dumps(dm.getAverageSpectrum(relFITSFilePath, sessionID, startY, endY, startX, endX, retFITS))
return result
"""
......@@ -324,7 +336,7 @@ def getSumOverSliceRectArea():
sliceIndex = getIntValue(request.GET['sliceIndex'])
response.content_type = "application/json; charset=utf-8"
result = json.dumps(dm.getSumOverSliceRectArea(relFITSFilePath, sessionID, sliceIndex, RAPix0, RAPix1, DECPix0, DECPix1))
result = json.dumps(dm.getSumOverSliceRectArea(relFITSFilePath, sliceIndex, RAPix0, RAPix1, DECPix0, DECPix1))
return result
"""
......@@ -346,7 +358,7 @@ def getAverage():
endX = getIntValue(request.GET['endX'])
startZ = getIntValue(request.GET['startZ'])
endZ = getIntValue(request.GET['endZ'])
result = dm.getAverage(fileName, sessionID, step, startZ, endZ, startY, endY, startX, endX)
result = dm.getAverage(fileName, step, startZ, endZ, startY, endY, startX, endX)
response.content_type = "application/json; charset=utf-8"
return json.dumps(result)
......@@ -375,11 +387,15 @@ def createFits():
@route( baseUrl+'/getHeader', name='getHeader', method='GET')
@enable_cors
def getHeader():
fileName = rebuildFilename(request.GET['fileName'])
global logger
global dm
logger.debug("getHeader : entering")
relFITSFilePath = rebuildFilename(request.GET['fileName'])
logger.debug(f"relFITSFilePath = {relFITSFilePath}")
response.content_type = "application/json; charset=utf-8"
return json.dumps(dm.getHeader(fileName))
result = json.dumps(dm.getHeader(relFITSFilePath))
logger.debug("getHeader : exiting")
return result
"""
Given fileName
......@@ -390,11 +406,9 @@ def getHeader():
@enable_cors
def RADECRangeInDegrees():
fileName = rebuildFilename(request.GET['fileName'])
sessionID = request.GET['sessionID']
response.content_type = "application/json; charset=utf-8"
return json.dumps(dm.RADECRangeInDegrees(fileName, sessionID))
return json.dumps(dm.RADECRangeInDegrees(fileName))
"""
Given relFITSFilePath and sliceIndex
......@@ -421,7 +435,7 @@ def getOneSliceAsPNG():
lutName = body['lutName']
vmName = body['vmName']
sessionID = getIntValue(body['sessionID'])
ret = dm.getOneSliceAsPNG(sessionID, sliceIndex, relFITSFilePath, ittName,lutName, vmName)
ret = dm.getOneSliceAsPNG(sliceIndex, relFITSFilePath, ittName,lutName, vmName)
except Exception as e:
exc_type, exc_value, exc_traceback = sys.exc_info()
traceback.print_exc()
......@@ -454,7 +468,7 @@ def getSummedSliceRangeAsPNG():
lutName = body['lutName']
vmName = body['vmName']
sessionID = getIntValue(body['sessionID'])
ret = dm.getSummedSliceRangeAsPNG(sessionID, sliceIndex0, sliceIndex1, relFITSFilePath, ittName, lutName, vmName);
ret = dm.getSummedSliceRangeAsPNG(sliceIndex0, sliceIndex1, relFITSFilePath, ittName, lutName, vmName);
except Exception as e:
exc_type, exc_value, exc_traceback = sys.exc_info()
message = "%s ! %s" % (type(e), "".join(traceback.format_list(traceback.extract_tb(exc_traceback))))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment