diff --git a/Cell_behavior_initial_steps/single_cell_prolif_migr.py b/Cell_behavior_initial_steps/single_cell_prolif_migr.py new file mode 100644 index 0000000000000000000000000000000000000000..5266d2e28a55e828d3464cd2b4815b2c705ea682 --- /dev/null +++ b/Cell_behavior_initial_steps/single_cell_prolif_migr.py @@ -0,0 +1,75 @@ +import numpy as np +import pickle +import random +import matplotlib.pyplot as ptl +import copy +from matplotlib import pyplot as plt +import random +from scipy import ndimage +from bio2mslib.inout.inout import WriteData as WD +import os +from Gts_selection import L, Lx, Ly +from bio2mslib.analysis.models import CellModels as DM +from matplotlib.pyplot import figure + +#Declaring saving paths for results +ls_images=[] +results_path = os.getcwd()+os.sep+"Single_cell" +path_simulation_gif =os.getcwd()+os.sep+"Single_cell" +path_simulation = results_path+os.sep+"prolif_migr" +if os.path.isdir(path_simulation) == False : + os.mkdir(path_simulation) + +#Reopening choosen surface +with open('Gts_Sample_100.cvs', 'rb') as csv_file: + Gts = pickle.load(csv_file) + +# #Visual preentation in image of the matrix +# im1 = plt.imshow(Gts, cmap="bone") +# plt.show() +#Gs is ground seeded, a copy of the choosen surface to seed the cells, +Gs = copy.deepcopy(Gts) + +#uni_cell is the seeding of a single cell inside the treated surface. +uni_cell = Gs[(86,8)] +Gs[(86,8)] = 1 + +#Variable deffinition for PDE proliferation & migration model +Cd = 1*10**-5 #Cell density +NO2 = 10**2 #nutrient concentration +Cdmax = 10**7 #maximum cell density +Dm = 0.001 #Cell motility coefficient +CRgrw = 1 #rate of cell growth +CRNO2 =10**-8 #Consumption rate of nutrients +DNO2 = 2*10**-5 +dt = 1 #time step +time_lapse = 0.1 + +Gscopy = copy.deepcopy(Gs) +Laplace = ndimage.laplace(Gs) +#Migration +iter = 0 +while iter<= 15: + for mi in range(1, len(Lx)-1): + for mj in range(1, len(Ly)-1): + x = random.randint(-1,1)#horizontal value for the movement of the cell + y = random.randint(-1,1)#vertival value for the movement of the cell + if Gs[mi,mj]==1 and (x != 0 or y!= 0) and ((mi+x)<len(Lx)) and ((mj+y)< len(Ly)): + Gs[mi+x,mj+y]= 1 + Gs[mi,mj]=0 + #Proliferation after migration + Gs[mi,mj] = Gscopy[mi,mj] + dt*Dm*Laplace[mi,mj]*(1-(Gscopy[mi,mj]/Cdmax))+CRgrw*1*Gscopy[mi,mj]*(1-(Gscopy[mi,mj]/Cdmax)) + if Gs[mi,mj]>0 and Gs[mi,mj]!=0.7 and Gs[mi,mj]!=0.5 : + Gs[mi,mj]=1 + zoom = True + im2 = plt.imshow(Gs, cmap="bone", norm = None) + plt.show() + name = 'Single_cell_SMAT_sample'+str(iter)+'.png' + plt.imsave(os.path.join(path_simulation, name), Gs, cmap="bone") + filename = name + ls_images.append(filename) + iter+=1 + +WD().create_gif_from_images(files_path=results_path+os.sep+"prolif_migr",results_path=path_simulation_gif,filename='Cell_behavior_SMAT.gif', time_lapse= time_lapse, deleteOriginFiles=0) + +