def onPreProcessing(self):

        self.fitImageTableWidget.currentFileInfo.currentFolderLocation = self.rawFolderLocation + '/reduced'

        reducedPath = Path(
            self.fitImageTableWidget.currentFileInfo.currentFolderLocation)
        Path.mkdir(reducedPath, mode=0o777, exist_ok=True)

        darkFitFileList = self.darkFileList
        flatFitFileList = self.flatFileList

        grouped = self.combFileList.groupby(["OBJECT", "EXPTIME"])
        ngroup = grouped.ngroups
        i = 0
        for name, group in grouped:
            # Todo 체크창을 띄워서 OBJECT에 있는것중에 합칠것만 선택할수 있게 하자
            i = i + 1
            if name[0] not in ["cali", "flat", "comp_10", "comp_15"]:
                for fName in group['FILE-NAME']:

                    saveName = 'r_' + fName
                    savePath = reducedPath / saveName
                    print(self.rawFolderLocation + '/combine/' + fName)

                    objFileName = self.rawFolderLocation + '/combine/' + fName
                    objHdr, objData = openFitData(objFileName)
                    objEXPTIME = objHdr['EXPTIME']
                    darkFileName = self.rawFolderLocation + '/dark/' + f"cali_{objEXPTIME:.1f}.fit"
                    darkHdr, darkData = openFitData(darkFileName)
                    flatFileName = self.rawFolderLocation + '/flat/' + "masterFlat.fit"
                    flatHdr, flatData = openFitData(flatFileName)
                    reducedData = (objData - darkData) / flatData
                    reducedHdr = objHdr
                    reducedHdr['HISTORY'] = f"Dark Reduced by :{darkFileName}"
                    reducedHdr['HISTORY'] = f"Flat Reduced by :{flatFileName}"
                    reducedCCD = CCDData(data=reducedData,
                                         header=reducedHdr,
                                         unit="adu")
                    reducedCCD.write(savePath, overwrite=True)
                    self.step = i / ngroup * 100
                    self.onProgressChange()
#Todo comp image는 dark 안빼줘도 되는건가? flat도 안빼줘도 되는건가?
#일단 comp image는 combine folder에 넣자
        files = list(reducedPath.glob("*.fit"))
        fileInfo = fileOpener(files)
        fileInfo = np.hstack((fileInfo, np.zeros((fileInfo.shape[0], 1), str)))
        reducedFileList = pd.DataFrame(np.array(fileInfo),
                                       columns=[
                                           'FILE-NAME', 'DATE-OBS', 'EXPTIME',
                                           'IMAGETYPE', 'OBJECT', 'REMARKS'
                                       ])
        self.fitImageTableWidget.currentFileInfo.fitFileList = reducedFileList
        self.reducedFileList = reducedFileList
        self.fitImageTableWidget.tableEdit()
        self.isFinished = True
        self.preprocessingBtn.setEnabled(False)
        self.doneBtn.setEnabled(True)
    def onBiasSubstraction(self):
        self.fitImageTableWidget.currentFileInfo.currentFolderLocation = self.rawFolderLocation + '/dark'

        darkPath = Path(
            self.fitImageTableWidget.currentFileInfo.currentFolderLocation)
        Path.mkdir(darkPath, mode=0o777, exist_ok=True)

        darkFitFileList = self.fitImageTableWidget.currentFileInfo.fitFileList[
            self.fitImageTableWidget.currentFileInfo.fitFileList['IMAGETYPE']
            == 'Dark Frame']
        biasFitFileList = self.fitImageTableWidget.currentFileInfo.fitFileList[
            self.fitImageTableWidget.currentFileInfo.fitFileList['IMAGETYPE']
            == 'Bias Frame']
        #bias data 불러오기
        biasFileName = self.rawFolderLocation + '/combine/' + biasFitFileList[
            'FILE-NAME'].iloc[0]
        biasHdr, biasData = openFitData(biasFileName)

        #dark data 불러오기 및 빼기
        nlist = len(darkFitFileList)
        i = 0
        for darkFile in darkFitFileList['FILE-NAME']:
            savePath = darkPath / darkFile
            darkFileName = self.rawFolderLocation + '/combine/' + darkFile
            darkHdr, darkData = openFitData(darkFileName)
            data = darkData - biasData
            hdr = darkHdr
            hdr['HISTORY'] = 'BiasSub'
            subbedCCD = CCDData(data=data, header=hdr, unit="adu")
            subbedCCD.write(savePath, overwrite=True)
            self.step = i / nlist * 100
            self.onProgressChange()
        files = list(darkPath.glob("*.fit"))
        fileInfo = fileOpener(files)
        print(fileInfo)
        fileInfo = np.hstack((fileInfo, np.zeros((fileInfo.shape[0], 1), str)))
        darkFileList = pd.DataFrame(np.array(fileInfo),
                                    columns=[
                                        'FILE-NAME', 'DATE-OBS', 'EXPTIME',
                                        'IMAGETYPE', 'OBJECT', 'REMARKS'
                                    ])
        self.fitImageTableWidget.currentFileInfo.fitFileList = darkFileList
        self.darkFileList = darkFileList
        self.fitImageTableWidget.tableEdit()
        self.biasSubstractionBtn.setEnabled(False)
        self.darkSubstractionBtn.setEnabled(True)
Beispiel #3
0
    def onCalibnationFileOpen(self):
        filePath = QFileDialog.getOpenFileName(
            self, 'Open calibration file',
            './Spectroscopy_Example/20181023/combine/')[0]
        hdr, data = openFitData(filePath)
        self.selfImageCanvas.figure.clear()
        self.selfImageAx = self.selfImageCanvas.figure.add_subplot(111)
        zimshow(self.selfImageAx, data)
        self.selfImageCanvas.draw()

        self.imageWidth = int(data.shape[1])
        self.selfData = data
    def onDarkSubstraction(self):
        self.fitImageTableWidget.currentFileInfo.currentFolderLocation = self.rawFolderLocation + '/flat'

        flatPath = Path(
            self.fitImageTableWidget.currentFileInfo.currentFolderLocation)
        Path.mkdir(flatPath, mode=0o777, exist_ok=True)

        darkFitFileList = self.darkFileList
        flatFitFileList = self.combFileList[self.combFileList['IMAGETYPE'] ==
                                            'Flat Field']
        flatFileName = self.rawFolderLocation + '/combine/' + flatFitFileList[
            'FILE-NAME'].iloc[0]
        flatHdr, flatData = openFitData(flatFileName)
        darkFileName = self.rawFolderLocation + '/dark/' + darkFitFileList[
            'FILE-NAME'][darkFitFileList['EXPTIME'] ==
                         flatFitFileList['EXPTIME'].iloc[0]].iloc[0]
        darkHdr, darkData = openFitData(darkFileName)

        flatFile = flatFitFileList['FILE-NAME'].iloc[0]
        savePath = flatPath / 'masterFlat.fit'
        data = flatData - darkData
        hdr = flatHdr
        hdr['HISTORY'] = 'BiasSub'
        subbedCCD = CCDData(data=data, header=hdr, unit="adu")
        subbedCCD.write(savePath, overwrite=True)

        files = list(flatPath.glob("*.fit"))
        fileInfo = fileOpener(files)
        print(fileInfo)
        fileInfo = np.hstack((fileInfo, np.zeros((fileInfo.shape[0], 1), str)))
        flatFileList = pd.DataFrame(np.array(fileInfo),
                                    columns=[
                                        'FILE-NAME', 'DATE-OBS', 'EXPTIME',
                                        'IMAGETYPE', 'OBJECT', 'REMARKS'
                                    ])
        self.fitImageTableWidget.currentFileInfo.fitFileList = flatFileList
        self.flatFileList = flatFileList
        self.fitImageTableWidget.tableEdit()
        self.darkSubstractionBtn.setEnabled(False)
        self.preprocessingBtn.setEnabled(True)
    def __init__(self,
                 fileName,
                 regFactor=None,
                 identificationMethod=None,
                 savePath=None):
        super().__init__()
        self.FWHM = 2  #Todo add method for getting FHWM, gain, readoutnoise from image hdr
        self.fileName = fileName

        self.hdr, self.flux = openFitData(self.fileName)
        self.skyFit = linearSky
        self.objFit = gaussian
        self.apertureTracerOpen = False
        self.isXcutterPicked = False
        self.cropInfo = cropInfo(y0=0,
                                 y1=len(self.flux),
                                 x0=0,
                                 x1=len(self.flux[0]),
                                 filename=self.fileName)
        self.norm = znorm(self.flux)
        self.regFactor = regFactor
        self.identificationMethod = identificationMethod
        self.savePath = savePath
        self.initUI()
Beispiel #6
0
 def neonSpectrumDraw(self):
     filePath = './NeonArcSpectrum.fit'
     hdr, data = openFitData(filePath)
     self.standardSpectrumDraw(data=data, arc='Neon')
    def onCombine(self):
        # combine bias, dark(per exposure), flat(per expoure)
        self.fitImageTableWidget.currentFileInfo.currentFolderLocation = self.rawFolderLocation + '/combine'
        combPath = Path(
            self.fitImageTableWidget.currentFileInfo.currentFolderLocation)
        Path.mkdir(combPath, mode=0o777, exist_ok=True)

        grouped = self.rawFitFileList.groupby(["OBJECT", "EXPTIME"])
        ngroup = grouped.ngroups
        i = 0
        for name, group in grouped:
            # Todo 체크창을 띄워서 OBJECT에 있는것중에 합칠것만 선택할수 있게 하자
            # Todo 보고 관측 이미지 합칠 수 있으면 합치자(따로 이미지 align을 안해서 지금 단계에선 합쳐도 될까 싶다.)
            # 나중에 합칠거 생각해서 일단 /combine에 옮기고 합치는 과정만 나중에 추가해 주자
            if name[0] in ["cali", "flat", "comp_10", "comp_15"]:
                savePath = combPath / f"{name[0]}_{float(name[1]):.1f}.fit"
                ccds = []

                for fName in group['FILE-NAME']:
                    filename = self.rawFolderLocation + '/' + fName
                    hdr, data = openFitData(filename, fitInfo='SNUO')
                    if (self.fitImageTableWidget.currentFileInfo.flags.
                            isCropped):
                        ccds.append(
                            data[self.fitImageTableWidget.currentFileInfo.
                                 cropInfo.y0:self.fitImageTableWidget.
                                 currentFileInfo.cropInfo.y1,
                                 self.fitImageTableWidget.currentFileInfo.
                                 cropInfo.x0:self.fitImageTableWidget.
                                 currentFileInfo.cropInfo.x1])
                    else:
                        ccds.append(data)
                combined = np.median(ccds, axis=0)
                hdr["NCOMBINE"] = (len(ccds), "Number of images combined")
                combined_ccd = CCDData(data=combined, header=hdr, unit="adu")
                combined_ccd.write(savePath, overwrite=True)

            else:
                j = 0
                for fName in group['FILE-NAME']:
                    j = j + 1
                    savePath = combPath / f"{name[0]}_{float(name[1]):.1f}_{j}.fit"
                    filename = self.rawFolderLocation + '/' + fName
                    hdr, data = openFitData(filename, fitInfo='SNUO')
                    if (self.fitImageTableWidget.currentFileInfo.flags.
                            isCropped):
                        data = data[self.fitImageTableWidget.currentFileInfo.
                                    cropInfo.y0:self.fitImageTableWidget.
                                    currentFileInfo.cropInfo.y1,
                                    self.fitImageTableWidget.currentFileInfo.
                                    cropInfo.x0:self.fitImageTableWidget.
                                    currentFileInfo.cropInfo.x1]
                    ccd = CCDData(data=data, header=hdr, unit="adu")
                    ccd.write(savePath, overwrite=True)

            i = i + 1
            self.step = i / ngroup * 100
            self.onProgressChange()

        files = list(combPath.glob("*.fit"))
        fileInfo = fileOpener(files)
        print(fileInfo)
        fileInfo = np.hstack((fileInfo, np.zeros((fileInfo.shape[0], 1), str)))
        combFileList = pd.DataFrame(np.array(fileInfo),
                                    columns=[
                                        'FILE-NAME', 'DATE-OBS', 'EXPTIME',
                                        'IMAGETYPE', 'OBJECT', 'REMARKS'
                                    ])
        self.fitImageTableWidget.currentFileInfo.fitFileList = combFileList
        self.combFileList = combFileList
        self.fitImageTableWidget.tableEdit()
        self.fitImageTableWidget.currentFileInfo.flags.isReduced = True
        self.combineBtn.setEnabled(False)
        self.biasSubstractionBtn.setEnabled(True)