Commit 5b25dcb5 authored by Zolnierczuk, Piotr's avatar Zolnierczuk, Piotr
Browse files

bug in get phase average

parent bce09847
Loading
Loading
Loading
Loading
+19 −15
Original line number Diff line number Diff line
@@ -175,36 +175,40 @@ class EchoScan(BaseScan):
                    self.info['base'], t, len(p), nphases)
        return ntaus, nphases

    def get_phase_step(self, phase_step, max_delta=1.0):
    def get_phase_step(self, npha):
        "get average phase step and round it to a degree"
        phasesens   = self.info.get('phasesens')
        nphases     = self.info.get('nphases')
        act_phase_step  = []
        for tau in self.data.values():
            phases = np.asarray([ _pha['phase'] for _pha in tau ])
            phases = phases[:nphases]
            dpha = phases[1:]-phases[:-1]
            act_phase_step.append(list(dpha*phasesens))
            phases = phases[:npha]
            dpha = (phases[1:]-phases[:-1])*phasesens
            act_phase_step.extend(dpha)
        act_phase_step = np.asarray(act_phase_step)
        avg_phase_step = np.average(act_phase_step)
        avg_phase_step = round(avg_phase_step,0)

        if phase_step is None:
        self.log.debug("get_phase_step: actual  %s", act_phase_step)
        self.log.debug("get_phase_step: average %s", avg_phase_step)
        return avg_phase_step

        if abs(avg_phase_step-phase_step)>max_delta:
            self.log.warning("%s: used phase step %g (deg), but actual is %g (deg)",
                            self.info['base'], phase_step, avg_phase_step)
        return phase_step

    def read_nexus(self, nxsfile, **kwargs):
        """read nexus file"""
        phase_step = kwargs.pop('phase_step', None)
        max_delta  = kwargs.pop('max_delta',  1.0)
        if not super().read_nexus(nxsfile, scan_type='echo', **kwargs):
            return False

        ntaus, nphases = self.get_taus_and_phases()
        avg_step       = self.get_phase_step(nphases)
        if phase_step is None:
            phase_step = round(avg_step,0)
        else:
            if abs(avg_step-phase_step)>max_delta:
                self.log.warning("%s: used phase step %g (deg), but actual is %g (deg)",
                                 self.info['base'], phase_step, avg_step)

        self.info['nphases']    = nphases
        self.info['phase_step'] = self.get_phase_step(phase_step)
        self.info['phase_step'] = phase_step

        # post processing
        self.log.info('%s: found %s tau(s), %d phases/tau, phase_step=%g (deg)',
            self.info['base'], ntaus, nphases, self.info['phase_step'])
+2 −2
Original line number Diff line number Diff line
@@ -3,8 +3,8 @@ PySEN revision module
"""
import sys
__version__  = "2.0"
__release__  = "b8"
__date__     = "Feb 24, 2025"
__release__  = "b9"
__date__     = "Feb 29, 2025"

def version(full=False):
    "get pysen version number"