Esempio n. 1
0
def test_symetrie():

    eps = 1e-4
    P = Polymer(0, start=0, end=2, origins=[0, 2])
    P.increment_time(dt=0.5)

    P.add_fork(ptags=["Left", "Right"],
               otag=0,
               new_btags=[None, None],
               diff_diff_tag=None,
               fork_speed=1)
    P.add_fork(ptags=["Left1", "Right1"],
               otag=2,
               new_btags=[None, None],
               diff_diff_tag=None,
               fork_speed=1)

    for t in range(4):
        #print("Avant",[[p,p.position] for p in P.modules])

        inc = P.increment_time(dt=0.5)
        #print(inc)
        bind_diff, diff_diff, update_bond, passivated_origin, to_release, alone = inc
        #print(P.ended[-1].position)
        #print("Apres",[[p,p.position] for p in P.modules])
        #print(P.end)
        if t == 0:
            assert ("Right1" in alone and "Left" in alone)
            #print("Here")
            for p in P.ended:
                if p.tag in ["Left", "Right1"]:
                    #print("path", p.path,len)
                    assert (len(p.path) == 1)
                elif p.tag in ["Left1", "Right"]:
                    assert (len(p.path) == 2)
                    if p.tag == "Right":
                        #print(p.path)
                        assert (p.path[0].pos == 0.5 and p.path[1].pos == 1)
                    if p.tag == "Left1":
                        #print(p.path,p.position)
                        assert (p.path[0].pos == 2.5 and p.path[1].pos == 1.5)
                    #print(p.tag,p.path)

    assert (np.all(P.get_replication_profile(1) == [1, 2, 1]))
Esempio n. 2
0
def test_remove_passivated4():
    P = Polymer(0, start=0, end=2, origins=[0, 1, 2])
    P.modules[1].position = 1.9
    P.modules[2].position = 2.1

    P.add_fork(ptags=["Left", "Right"],
               otag=0,
               new_btags=[None, None],
               diff_diff_tag=None,
               fork_speed=1)

    for t in range(5):
        #print("Avant",[[p,p.position] for p in P.modules])

        inc = P.increment_time(dt=1)
        bind_diff, diff_diff, update_bond, passivated_origin, to_release, alone = inc
        #print(P.ended[-1].position)
        #print("Apres",[[p,p.position] for p in P.modules])
        #print(P.end)
        #print(P.modules)
        #print(t,passivated_origin)
        if t == 0:
            assert ("Left" in alone)
            #print("Here")

            for p in P.ended:
                if p.tag in ["Right"]:
                    #print("path", p.path,len)
                    assert (len(p.path) == 1)

        if t == 1:
            assert (1 in passivated_origin and 2 in passivated_origin)
    #print(P.get_replication_profile(1))
    assert (np.all(P.get_replication_profile(1) == [1, 2, 3]))
Esempio n. 3
0
def test_jump2():
    P = Polymer(0, start=0, end=2, origins=[0, 2])
    #
    P.add_fork(ptags=["Left", "Right"],
               otag=2,
               new_btags=[None, None],
               diff_diff_tag=None,
               fork_speed=3)

    for t in range(3):
        #print([m.path for m in P.modules if m.move])

        P.increment_time(dt=1)
    assert (np.all(P.get_replication_profile(1) == [1, 1, 1]))
Esempio n. 4
0
def test_It():

    P = Polymer(0, start=0, end=2, origins=[0, 2])
    P.increment_time(dt=0.5)
    P.add_fork(ptags=["Left", "Right"],
               otag=0,
               new_btags=[None, None],
               diff_diff_tag=None,
               fork_speed=1)
    P.add_fork(ptags=["Left1", "Right1"],
               otag=2,
               new_btags=[None, None],
               diff_diff_tag=None,
               fork_speed=1)

    for t in range(3):
        P.increment_time(dt=1)

    #print([m.path for m in P.ended if m.move])
    #print(P.get_replication_profile(1))
    It = P.get_firing_time_It(cut=0, normed=False, dt=0.5)
    #print(It)
    assert (np.all(It[1] == array([0., 2., 0., 0., 0., 0., 0., 0., 0., 0.])))
    assert (np.all(It[0] == array([1, 1])))
Esempio n. 5
0
def test_simple2():

    P = Polymer(0, start=0, end=2, origins=[0, 2])
    P.increment_time(dt=0.5)
    P.add_fork(ptags=["Left", "Right"],
               otag=0,
               new_btags=[None, None],
               diff_diff_tag=None,
               fork_speed=1)
    P.add_fork(ptags=["Left1", "Right1"],
               otag=2,
               new_btags=[None, None],
               diff_diff_tag=None,
               fork_speed=1)

    for t in range(3):
        P.increment_time(dt=1)

    #print([m.path for m in P.ended if m.move])
    #print(P.get_replication_profile(1))
    assert (np.all(P.get_replication_profile(1) == [1, 2, 1]))
Esempio n. 6
0
    def __init__(self,
                 nori,
                 ndiff,
                 lengths,
                 p_on,
                 p_off,
                 only_one=False,
                 fork_speed=1,
                 dt_speed=1,
                 tolerance=0.1,
                 gindin=True,
                 p_v=1,
                 random=False,
                 positions=None,
                 ramp=None,
                 max_ramp=None,
                 ramp_type="linear",
                 strengths=None,
                 fsd="uniform",
                 variance_fs=1):

        self.p_on = p_on
        self.p_off = p_off
        self.ndiff = ndiff
        self.oris = []
        self.only_one = only_one
        self.lengths = lengths
        self.dt_speed = dt_speed
        self.fs = fork_speed
        self.fsd = fsd
        self.vfs = variance_fs
        self.gindin = gindin
        self.p_v = p_v
        self.Ndiff_libre_t = []
        self.positions = positions
        self.ramp = ramp
        self.max_ramp = max_ramp
        self.strengths = copy.deepcopy(strengths)
        self.uniform_strength = False
        self.ramp_type = ramp_type
        if self.ramp_type not in ["linear", "exp", "pulse"]:
            raise "Invalid ramp type"

        if self.max_ramp and self.max_ramp > self.ndiff:
            print(self.max_ramp, self.ndiff)
            raise "Problem max_ramp > ndiff"

        # print(nori)

        assert (len(lengths) == len(nori))

        starts = [0] + np.cumsum(lengths).tolist()
        # print(starts)

        for el, length, start in zip(nori, lengths, starts):
            if type(el) in [list, np.ndarray]:
                self.oris.append(el)
                continue
            self.oris.append([])

            while (el - len(self.oris[-1])) / el > tolerance:
                self.oris[-1] = [
                    np.random.randint(length) for ori in range(el)
                ]
                self.oris[-1] = list(set(self.oris[-1]))
        # print(self.oris)
        # print(len(self.oris),(nori-len(self.oris)) / nori)
        if strengths is None or strengths == []:
            self.uniform_strength = True
            self.strengths = [[1] * len(o) for o in self.oris]

        if positions is None:
            self.polys = [
                Polymer(i,
                        start,
                        start + length - 1,
                        np.array(oris) + start,
                        random=random,
                        strengths=strengths,
                        max_fs=self.max_fs())
                for i, (start, length, oris, strengths) in enumerate(
                    zip(starts, lengths, self.oris, self.strengths))
            ]
        else:
            self.polys = [
                Polymer(i,
                        start,
                        start + length - 1,
                        np.array(oris) + start,
                        random=random,
                        positions=np.array(position) + start,
                        strengths=strengths,
                        max_fs=self.max_fs())
                for i, (start, length, oris, position, strengths) in enumerate(
                    zip(starts, lengths, self.oris, self.positions,
                        self.strengths))
            ]

        class MyD(dict):
            def __init__(self, *args):
                dict.__init__(self, *args)
                self.set = 0

            def __setitem__(self, key, value):
                if key == 0 and value == 0:
                    self.set += 1
                if self.set == 1:
                    raise
                dict.__setitem__(self, key, value)

        self.libre = {d: 0 for d in np.arange(ndiff)}
        self.origins = {d: None for d in np.arange(ndiff)}
        self.record_diffusing = [Diffusing(d) for d in np.arange(ndiff)]
        self.fork_speeds = []