コード例 #1
0
def test_measure_alignment():
    "align on 1 phase or another as needed"
    track = randtrack(driftargs=None, baselineargs=(.1, .05, 'rand'), seed=0)
    for i in range(3):
        ini = track.cycles.withphases(PHASE.initial)[0, i]
        ini += (track.cycles.withphases(PHASE.pull)[0, i].mean() -
                ini.mean()) * .5

    for i in range(5):
        ini = track.cycles.withphases(PHASE.measure)[0, i]
        ini += (track.cycles.withphases(PHASE.pull)[0, i].mean() -
                ini.mean()) * .5

    bead = ExtremumAlignmentProcessor.apply(track.beads,
                                            phase=AlignmentTactic.measure)
    inipos = [
        i.mean() for i in  # type: ignore
        track.beads[0, ...].withphases(PHASE.pull).values()
    ]
    corrpos = [
        i.mean() for i in  # type: ignore
        bead[0, ...].withphases(PHASE.pull).values()
    ]
    assert np.std(inipos[3:]) > 10 * np.std(corrpos[3:])
    assert all(i > .95 for i in corrpos[:3])
コード例 #2
0
def test_pull_alignment():
    "align on 1 phase or another as needed"
    track = randtrack(driftargs=None, baselineargs=(.1, .05, 'rand'))
    for i in range(3):
        ini = track.cycles.withphases(PHASE.initial)[0, i]
        ini -= ini.mean()

        pull = track.cycles.withphases(PHASE.pull)[0, i]
        pull += .2 - pull.mean()

        meas = track.cycles.withphases(PHASE.measure)[0, i]
        meas[:] = 0.

    pull = track.cycles.withphases(PHASE.pull)[0, 3].mean()
    meas = track.cycles.withphases(PHASE.measure)[0, 3]
    meas[:] = pull.mean() - .2

    pull = track.cycles.withphases(PHASE.pull)[0, 4].mean()
    meas = track.cycles.withphases(PHASE.initial)[0, 4]
    meas[:] = pull.mean() - .2

    bead = ExtremumAlignmentProcessor.apply(track.beads,
                                            phase=AlignmentTactic.pull)
    inipos = [
        i.mean() for i in track.beads[0, ...].withphases(PHASE.pull).values()
    ]
    corrpos = [i.mean() for i in bead[0, ...].withphases(PHASE.pull).values()]
    assert np.std(inipos[3:]) > 20 * np.std(corrpos[3:])
    assert all(i < .6 for i in corrpos[:3])
コード例 #3
0
 def _create(phase):
     track = randtrack(driftargs=None, baselineargs=(.1, .05, 'rand'))
     ini = track.cycles.withphases(PHASE.initial)[0, 0]
     ini += (track.cycles.withphases(PHASE.pull)[0, 0].mean() -
             ini.mean()) * .5
     bead = ExtremumAlignmentProcessor.apply(track.beads, phase=phase)
     return [
         i.mean() for i in bead[0, ...].withphases(PHASE.initial).values()
     ]
コード例 #4
0
def test_processor():
    "test processor"
    # pylint: disable=expression-not-assigned
    cache = {}  # type: ignore
    trk = randtrack().beads
    DataCleaningProcessor.apply(trk, cache=cache, maxsaturation=100)[0]
    assert list(cache) == [0]
    tmp = cache[0]
    DataCleaningProcessor.apply(trk, cache=cache, maxsaturation=100)[0]
    assert tmp is cache[0]
コード例 #5
0
def test_edgeminmaxprocessor():
    "align on min/max value"
    track = randtrack(driftargs=None, baselineargs=(.1, None, 'rand'))
    inipos = [
        i.mean() for i in track.cycles.withphases(PHASE.initial).values()
    ]

    bead = ExtremumAlignmentProcessor.apply(track.beads,
                                            phase=AlignmentTactic.onlyinitial,
                                            edge='right')
    corrpos = [
        i.mean() for i in bead[0, ...].withphases(PHASE.initial).values()
    ]
    assert np.std(inipos) > .015
    assert np.std(corrpos) < .001
コード例 #6
0
def test_precision():
    "tests that peaks can be found with a given precision"
    track = randtrack(durations=[15, 30, 15, 60, 60, 200, 15, 100],
                      drift=None,
                      baseline=None,
                      poisson=dict(rates=[.05, .05, .1, .1, .2, .2],
                                   sizes=[20, 10, 20, 10, 20, 10],
                                   peaks=[0.1, 0.2, 0.3, 0.4, 0.5, 0.6],
                                   store=['sizes']),
                      seed=0,
                      nbeads=1,
                      ncycles=100)

    data = track.beads.new(Events)
    found = np.array([len(i) for _, i in data[0, ...]], dtype='i4')
    sizes = getattr(track, 'simulator')[0]['sizes']
    sim = np.sum(sizes >= data.events.select.minduration, 1)
    assert list(np.nonzero(found - sim - 1)[0]) == []