Clone size distributions

Published

March 27, 2024

import numpy as np
import pandas as pd
import random
n = 1000
nr_of_steps = 1000000
cell_ids = np.zeros((nr_of_steps + 1, n))
cell_ids[0, ] = range(n)

for i in range(1, nr_of_steps + 1):
  cell_ids[i, ] = cell_ids[i - 1, ]
  ii_death = random.randint(0, n - 1)
  ii_birth = random.randint(0, n - 1)
  cell_ids[i, ii_death] = cell_ids[i - 1, ii_birth]

np.column_stack(np.unique(cell_ids[nr_of_steps], return_counts=True))
array([[ 857., 1000.]])
n = 20
nr_of_steps = 100
cell_ids = np.arange(n)

for i in range(nr_of_steps):
  ii_death = random.randint(0, n - 1)
  ii_birth = random.randint(0, n - 1)
  cell_ids[ii_death] = cell_ids[ii_birth]

np.column_stack(np.unique(cell_ids, return_counts=True))
array([[ 0,  7],
       [ 4,  6],
       [ 5,  3],
       [18,  4]])