Пример #1
0
    def writeHDF5(self):

        def computeNuITD(fit_,gamma_,ri_):
            # nNu = 0
            # for mom in self.momAvg:
            #     dispListAvg = self.dispAvg[mTag]
            #     nNu += len(dispListAvg)

            nuArr = []
            for mom in self.momAvg:
                mTag = tags.momString(mom)
                dispListAvg = self.dispAvg[mTag]
                for z3 in dispListAvg:
                    dkey_ = (mTag,z3,gamma_)
                    nu = mom[2]*z3*self.unitMom # Ioffe-time, nu = Pz*z3*unitMom
                    nuArr.append([nu,self.mean[fit_][dkey_][ri_][0],self.mean[fit_][dkey_][ri_][1]])
            nuArr = np.array(nuArr,dtype=np.float64)
            return nuArr
        #---------------------------


        h5_file = h5py.File(self.info['HDF5 Output File'],'w')

        for fType in self.fitTypes.keys():
            for fit in self.fitTypes[fType]:

                # Write momentum and z3 dependence
                for mom in self.momAvg:
                    mTag = tags.momString(mom)
                    mh5Tag = tags.momH5(mom)
                    dispListAvg = self.dispAvg[mTag]

                    for z3 in dispListAvg:
                        dispTag = tags.disp(z3)
                        for gamma in self.gammaList:
                            insTag = tags.insertion(gamma)
                            dkey = (mTag,z3,gamma)

                            for ri in self.RI:    
                                group = '%s/%s/%s/%s/%s'%(fit,mh5Tag,dispTag,insTag,ri)
                                dset_name_bins = 'bins/' + group 
                                dset_name_mean = 'mean/' + group 

                                h5_file.create_dataset(dset_name_bins, data = self.bins[fit][dkey][ri])
                                h5_file.create_dataset(dset_name_mean, data = self.mean[fit][dkey][ri],dtype='f')
                # End for momentum

                # Write the nu-dependence of the ITD
                for gamma in self.gammaList:
                    for ri in self.RI:
                        nuITD = computeNuITD(fit,gamma,ri)                    
                        group = '%s/%s/%s'%(fit,insTag,ri)
                        dset_name_nuMean = 'nuDep/' + group 
                        h5_file.create_dataset(dset_name_nuMean, data = nuITD)

        # End for fType

        h5_file.close()
        print('Reduced Ioffe-time distributions written in HDF5.')
Пример #2
0
        def getDataHDF5():
            print('\nWill read data from HDF5')

            inputHDF5 = self.dataInfo['Input Data']['HDF5 File']
            h5_file = h5py.File(inputHDF5, 'r')

            for mom in self.moms:
                mTag = tags.momString(mom)
                mh5Tag = tags.momH5(mom)
                t0List = self.dSetAttr[mTag]['t0']
                tsepList = self.dSetAttr[mTag]['tsep']
                dispList = self.dSetAttr[mTag]['disp']
                Nrows = self.dSetAttr[mTag]['Nrows']

                for ri in self.RI:
                    self.plainData[ri][mTag] = {}

                    for z3 in dispList:
                        dispTag = tags.disp(z3)
                        for tsep in tsepList:
                            tsepTag = tags.tsep(tsep)
                            for t0 in t0List:
                                t0Tag = tags.t0(t0)
                                for iop, opPair in enumerate(
                                        self.dSetAttr[mTag]['intOpList']):
                                    opTag = tags.src_snk(opPair)
                                    for row in range(1, Nrows + 1):
                                        rowTag = tags.row(row)
                                        for gamma in self.gammaList:
                                            insTag = tags.insertion(gamma)

                                            dkey = (tsep, t0, z3, iop, row,
                                                    gamma)

                                            dset = 'plain/%s/%s/%s/%s/%s/%s/%s/%s/data' % (
                                                mh5Tag, dispTag, tsepTag,
                                                t0Tag, opTag, rowTag, insTag,
                                                ri)
                                            self.plainData[ri][mTag][
                                                dkey] = np.array(h5_file[dset])

                print('Reading three-point data for momentum %s completed.' %
                      (mTag))
Пример #3
0
        def dumpHDF5(fitSeq,h5_file):
            fType = fitSeq['Type']
            fLabel = fitSeq['Label']

            for mom in self.momAvg:
                mTag = tags.momString(mom)
                mh5Tag = tags.momH5(mom)
                tsepList = self.dSetAttr3pt[mTag]['tsep']
                dispListAvg = self.dispAvg[mTag]
                
                for z3 in dispListAvg:
                    dispTag = tags.disp(z3)
                    for gamma in self.gammaList:
                        insTag = tags.insertion(gamma)
                        for tsep in tsepList:
                            dkey = (tsep,z3,gamma)
                            tsepTag = tags.tsep(tsep)
                            fAttr = self.fitAttr[mTag][tsep]

                            for ri in self.RI:
                                # Write optimalFitValues
                                group = '%s/%s/%s/%s/%s'%(ri,mh5Tag,dispTag,insTag,tsepTag)
                                dset_name = 'OptimalFitRanges/' + group
                                h5_file.create_dataset(dset_name, data = np.array([self.optimalFit[fLabel][ri][mTag][dkey]]))

                                for nf in range(fAttr['Nfits']):
                                    tstart = fAttr['nf=%d'%(nf)]['tstart']
                                    tstop  = fAttr['nf=%d'%(nf)]['tstop']
                                    h5LabelNf = 'nf%d_%d-%d'%(nf,tstart,tstop)

                                    group = '%s/%s/%s/%s/%s/%s'%(ri,mh5Tag,dispTag,insTag,tsepTag,h5LabelNf)
                                    dset_name_Mbins = 'MatElem/bins/' + group 
                                    dset_name_Mmean = 'MatElem/mean/' + group 
                                    dset_name_chiBins = 'chiSquare/bins/' + group 
                                    dset_name_chiMean = 'chiSquare/mean/' + group 

                                    h5_file.create_dataset(dset_name_Mbins, data = self.Mbins[fLabel][ri][mTag][dkey][nf])
                                    h5_file.create_dataset(dset_name_Mmean, data = self.Mmean[fLabel][ri][mTag][dkey][nf],dtype='f')
                                    h5_file.create_dataset(dset_name_chiBins, data = self.chiBins[fLabel][ri][mTag][dkey][nf])
                                    h5_file.create_dataset(dset_name_chiMean, data = self.chiMean[fLabel][ri][mTag][dkey][nf],dtype='f')
            # End for momentum
            print('Plateau fitting data for type = %s, label = %s written in HDF5.'%(fType,fLabel))
Пример #4
0
    def writeHDF5(self):
        h5_file = h5py.File(self.dataInfo['HDF5 Output File'], 'w')

        for mom in self.momAvg:
            mTag = tags.momString(mom)
            mh5Tag = tags.momH5(mom)

            tsepList = self.dSetAttr3pt[mTag]['tsep']
            tsepList_rs = self.dSetAttr3pt[mTag]['tsep'][:-1]
            dispListAvg = self.dispAvg[mTag]
            Ntsep = len(tsepList)
            Ntsep_rs = len(tsepList_rs)

            for z3 in dispListAvg:
                dispTag = tags.disp(z3)
                for gamma in self.gammaList:
                    insTag = tags.insertion(gamma)
                    for ri in self.RI:

                        sumRatioH5 = (np.zeros(Ntsep), np.zeros(Ntsep),
                                      np.zeros(Ntsep))
                        for its, tsep in enumerate(tsepList):
                            dkey = (tsep, z3, gamma)
                            tsepTag = tags.tsep(tsep)

                            # Write the plain ratio bins and mean
                            rType = 'plain'
                            group = '%s/%s/%s/%s/%s/%s' % (
                                rType, mh5Tag, tsepTag, dispTag, insTag, ri)
                            dset_name_bins = 'bins/' + group
                            dset_name_mean = 'mean/' + group

                            h5_file.create_dataset(
                                dset_name_bins,
                                data=self.bins[rType][ri][mTag][dkey])
                            h5_file.create_dataset(
                                dset_name_mean,
                                data=self.mean[rType][ri][mTag][dkey],
                                dtype='f')
                            #---------------------------------------------------------------

                            # Write the summed ratio bins
                            rType = 'sum'
                            group = '%s/%s/%s/%s/%s/%s' % (
                                rType, mh5Tag, tsepTag, dispTag, insTag, ri)
                            dset_name_bins = 'bins/' + group
                            h5_file.create_dataset(
                                dset_name_bins,
                                data=self.bins[rType][ri][mTag][dkey])

                            # Convert the summed ratio mean into arrays that depend on tsep
                            sumRatioH5[0][its] = tsep  # tsep (x)
                            sumRatioH5[1][its] = self.mean[rType][ri][mTag][
                                dkey][0]  # ratio mean  (y)
                            sumRatioH5[2][its] = self.mean[rType][ri][mTag][
                                dkey][1]  # ratio error (y-error)
                        # End for tsep

                        # Write the summed ratio means
                        rType = 'sum'
                        group = '%s/%s/%s/%s/%s' % (rType, mh5Tag, dispTag,
                                                    insTag, ri)
                        dset_name_mean = 'mean/' + group
                        h5_file.create_dataset(dset_name_mean,
                                               data=sumRatioH5,
                                               dtype='f')
                        #-----------------------------

                        # Reduced-summed ratio
                        rSumRatioH5 = (np.zeros(Ntsep_rs), np.zeros(Ntsep_rs),
                                       np.zeros(Ntsep_rs))
                        for its, tsep in enumerate(tsepList_rs):
                            dkey = (tsep, z3, gamma)
                            tsepTag = tags.tsep(tsep)

                            # Write the summed ratio bins
                            rType = 'r-sum'
                            group = '%s/%s/%s/%s/%s/%s' % (
                                rType, mh5Tag, tsepTag, dispTag, insTag, ri)
                            dset_name_bins = 'bins/' + group
                            h5_file.create_dataset(
                                dset_name_bins,
                                data=self.bins[rType][ri][mTag][dkey])

                            # Convert the reduced-summed ratio mean into arrays that depend on tsep
                            rSumRatioH5[0][its] = tsep  # tsep (x)
                            rSumRatioH5[1][its] = self.mean[rType][ri][mTag][
                                dkey][0]  # ratio mean  (y)
                            rSumRatioH5[2][its] = self.mean[rType][ri][mTag][
                                dkey][1]  # ratio error (y-error)
                        # End for tsep

                        # Write the reduced-summed ratio means
                        rType = 'r-sum'
                        group = '%s/%s/%s/%s/%s' % (rType, mh5Tag, dispTag,
                                                    insTag, ri)
                        dset_name_mean = 'mean/' + group
                        h5_file.create_dataset(dset_name_mean,
                                               data=rSumRatioH5,
                                               dtype='f')
                    #-----------------------------
        # End for momentum

        h5_file.close()
        print('Ratio data written in HDF5.')
Пример #5
0
    def writeHDF5(self):
        h5_file = h5py.File(self.dataInfo['HDF5 Output File'], 'w')

        # Write the Pz- and z3-averaged data
        for mom in self.momAvg:
            mTag = tags.momString(mom)
            mh5Tag = tags.momH5(mom)

            tsepList = self.dSetAttr[mTag]['tsep']
            dispListAvg = self.dispAvg[mTag]

            for z3 in dispListAvg:
                dispTag = tags.disp(z3)
                for tsep in tsepList:
                    tsepTag = tags.tsep(tsep)
                    for gamma in self.gammaList:
                        insTag = tags.insertion(gamma)
                        dkeyAvg = (tsep, z3, gamma)

                        # Write the averaged data
                        for ri in self.RI:
                            avg_group = 'fullavg/%s/%s/%s/%s/%s' % (
                                mh5Tag, dispTag, tsepTag, insTag, ri)
                            dset_name_data = avg_group + '/data'
                            dset_name_bins = avg_group + '/bins'
                            dset_name_mean = avg_group + '/mean'
                            h5_file.create_dataset(
                                dset_name_data,
                                data=self.data[ri][mTag][dkeyAvg])
                            h5_file.create_dataset(
                                dset_name_bins,
                                data=self.bins[ri][mTag][dkeyAvg])
                            h5_file.create_dataset(
                                dset_name_mean,
                                data=self.mean[ri][mTag][dkeyAvg],
                                dtype='f')
        #--------------------------------------

        for mom in self.moms:
            mTag = tags.momString(mom)
            mh5Tag = tags.momH5(mom)
            t0List = self.dSetAttr[mTag]['t0']
            tsepList = self.dSetAttr[mTag]['tsep']
            dispList = self.dSetAttr[mTag]['disp']
            Nrows = self.dSetAttr[mTag]['Nrows']

            for z3 in dispList:
                dispTag = tags.disp(z3)
                for tsep in tsepList:
                    tsepTag = tags.tsep(tsep)
                    for gamma in self.gammaList:
                        insTag = tags.insertion(gamma)
                        dkeyAvg = (tsep, z3, gamma)

                        # Write Avg data
                        for ri in self.RI:
                            avg_group = 'avg/%s/%s/%s/%s/%s' % (
                                mh5Tag, dispTag, tsepTag, insTag, ri)
                            dset_name_avgData = avg_group + '/data'
                            dset_name_avgBins = avg_group + '/bins'
                            dset_name_avgMean = avg_group + '/mean'

                            h5_file.create_dataset(
                                dset_name_avgData,
                                data=self.avgData[ri][mTag][dkeyAvg])
                            h5_file.create_dataset(
                                dset_name_avgBins,
                                data=self.avgBins[ri][mTag][dkeyAvg])
                            h5_file.create_dataset(
                                dset_name_avgMean,
                                data=self.avgMean[ri][mTag][dkeyAvg],
                                dtype='f')

                        for t0 in t0List:
                            t0Tag = tags.t0(t0)
                            for iop, opPair in enumerate(
                                    self.dSetAttr[mTag]['intOpList']):
                                opTag = tags.src_snk(opPair)
                                for row in range(1, Nrows + 1):
                                    rowTag = tags.row(row)
                                    dkey = (tsep, t0, z3, iop, row, gamma)

                                    # Write the plain data
                                    for ri in self.RI:
                                        plain_group = 'plain/%s/%s/%s/%s/%s/%s/%s/%s' % (
                                            mh5Tag, dispTag, tsepTag, insTag,
                                            t0Tag, opTag, rowTag, ri)
                                        dset_name_plainData = plain_group + '/data'
                                        dset_name_plainBins = plain_group + '/bins'
                                        dset_name_plainMean = plain_group + '/mean'

                                        h5_file.create_dataset(
                                            dset_name_plainData,
                                            data=self.plainData[ri][mTag]
                                            [dkey])
                                        h5_file.create_dataset(
                                            dset_name_plainBins,
                                            data=self.plainBins[ri][mTag]
                                            [dkey])
                                        h5_file.create_dataset(
                                            dset_name_plainMean,
                                            data=self.plainMean[ri][mTag]
                                            [dkey],
                                            dtype='f')
        #--------------------------------------

        h5_file.close()
        print('Three-point function data written in HDF5.')
Пример #6
0
        def dumpLinearFitsHDF5(fitSeq, h5_file):
            fType = fitSeq['Type']
            fLabel = fitSeq['Label']
            tsepLowList = fitSeq['tsepLow']

            for mom in self.momAvg:
                mTag = tags.momString(mom)
                mh5Tag = tags.momH5(mom)
                dispListAvg = self.dispAvg[mTag]

                for z3 in dispListAvg:
                    dispTag = tags.disp(z3)
                    for gamma in self.gammaList:
                        insTag = tags.insertion(gamma)
                        dkeyF = (z3, gamma)

                        for ri in self.RI:
                            for tL in tsepLowList:
                                sLTag = 'tL%d' % (tL)
                                tini = self.tsepFitX[fLabel][mTag][sLTag][0]
                                tfin = self.tsepFitX[fLabel][mTag][sLTag][-1]
                                h5LabelT = 'tsep_%d-%d' % (tini, tfin)

                                # Write Chi^2
                                group = '%s/%s/%s/%s/%s' % (
                                    ri, mh5Tag, dispTag, insTag, h5LabelT)
                                dset_name_chiBins = 'chiSquare/bins/' + group
                                dset_name_chiMean = 'chiSquare/mean/' + group
                                h5_file.create_dataset(
                                    dset_name_chiBins,
                                    data=self.chiBins[fLabel][sLTag][ri][mTag]
                                    [dkeyF])
                                h5_file.create_dataset(
                                    dset_name_chiMean,
                                    data=self.chiMean[fLabel][sLTag][ri][mTag]
                                    [dkeyF],
                                    dtype='f')

                                # Write fit bands
                                dset_name_fitBands = 'fitBands/' + group
                                h5_file.create_dataset(
                                    dset_name_fitBands,
                                    data=(self.fitBands[fLabel][sLTag][ri]
                                          [mTag][dkeyF]['x'],
                                          self.fitBands[fLabel][sLTag][ri]
                                          [mTag][dkeyF]['v'],
                                          self.fitBands[fLabel][sLTag][ri]
                                          [mTag][dkeyF]['e']),
                                    dtype='f')

                                # Write Fit parameters
                                for fP, fpH5 in zip(self.fitParams[fType],
                                                    self.fitParamsH5[fType]):
                                    fpTag = fP + '_%s' % (sLTag)

                                    dset_name_bins = '%s/bins/' % (
                                        fpH5) + group
                                    dset_name_mean = '%s/mean/' % (
                                        fpH5) + group
                                    h5_file.create_dataset(
                                        dset_name_bins,
                                        data=self.bins[fLabel][fpTag][ri][mTag]
                                        [dkeyF])
                                    h5_file.create_dataset(
                                        dset_name_mean,
                                        data=self.mean[fLabel][fpTag][ri][mTag]
                                        [dkeyF],
                                        dtype='f')
            # End for momentum
            print(
                'Summation fitting data for type = %s, label = %s written in HDF5.'
                % (fType, fLabel))