Commit 85d728f3 authored by Zolnierczuk, Piotr's avatar Zolnierczuk, Piotr
Browse files

reporting and removing of bad phase steps

parent 3ea6d91d
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -175,7 +175,7 @@ class EchoScan(BaseScan):
                    self.info['base'], t, len(p), nphases)
        return ntaus, nphases

    def get_phase_step(self, npha):
    def get_phase_step(self, npha, max_phase_step=180.0):
        "get average phase step and round it to a degree"
        phasesens   = self.info.get('phasesens')
        act_phase_step  = []
@@ -183,11 +183,16 @@ class EchoScan(BaseScan):
            phases = np.asarray([ _pha['phase'] for _pha in tau ])
            phases = phases[:npha]
            dpha = (phases[1:]-phases[:-1])*phasesens
            bad_phase = abs(dpha)>max_phase_step
            # TODO: find a better way to cleanup bad phases
            if any(bad_phase):
                self.log.warning("%s: get_phase_step: removing bad phase steps %s", self.info['base'], dpha[bad_phase])
                dpha = dpha[~bad_phase]
            act_phase_step.extend(dpha)
        act_phase_step = np.asarray(act_phase_step)
        avg_phase_step = np.average(act_phase_step)
        self.log.debug("get_phase_step: actual  %s", act_phase_step)
        self.log.debug("get_phase_step: average %s", avg_phase_step)
        self.log.debug("%s: get_phase_step: actual  %s", self.info['base'], act_phase_step)
        self.log.debug("%s: get_phase_step: average %s", self.info['base'], avg_phase_step)
        return avg_phase_step

    def read_nexus(self, nxsfile, **kwargs):