def plotHeightSurface(numOfLayer, endStep,eta,startStep=0,stepsize= 1,maxarea = None, areastep = 20,
	startarea = None, endarea = 850,resetids = False):
	import numpy as np
	import matplotlib.pyplot as plt
	import os
	########################################################################
	# faceidarray for Primordia
	if not os.path.isfile("qdObject_step=001.obj"):
		return [0.,0.,0.,0.,0.,0.,0.,0.,0.]
	cell = sf.loadCellFromFile(1)
	initialTissueSurfaceArea = sf.getSurfaceArea(cell)
	#######################################################################
	# Starting the Calculation
	######################################################################
	#######################################################################
	laststep = 1
	plotargs = {"markersize": 10, "capsize": 10,"elinewidth":3,"markeredgewidth":2}
	#######################################################################
	heightArray = []
	tissueSurfaceAreaArray = []
	timeArray = []
	dhdAArray = []
	volumeArray = []
	radiusMeanArray = []
	radiusVarArray = []
	###################################################
	if not startarea:#no startarea given
		startarea = int(initialTissueSurfaceArea)
	###################################################
	listsurfacearea = np.linspace(startarea,endarea,15)
	for steparea in listsurfacearea:
		step,tissueSurfaceArea = sf.getTimeStep(steparea, endStep, laststep, stepsize = 10)
		step2,tissueSurfaceArea2 = sf.getTimeStep(steparea+areastep, endStep, step, stepsize = 10)
		if step == step2:break
		########################################################################
		if not (os.path.isfile("qdObject_step=%03d.obj"%step) or os.path.isfile("qdObject_step=%03d.obj"%step2) ):#check if file exists
			break
		cell = sf.loadCellFromFile(step,resetids = resetids)
		cell2 = sf.loadCellFromFile(step2,resetids = resetids)
		################################################
		radiusArray = getMeanRadius(cell)
		################################################
		radiusMeanArray.append(np.mean(radiusArray))
		radiusVarArray.append(np.std(radiusArray))
		volumeArray.append(cell.getNonConvexVolume())#getting the volume of the tissue
		tissueSurfaceAreaArray.append(tissueSurfaceArea)
		height = getTissueHeight(cell)
		height2 = getTissueHeight(cell2)
		heightArray.append(height)
		timeArray.append(step)
		########################################################################
		dhdA = (height2-height)/(tissueSurfaceArea2-tissueSurfaceArea)
		dhdAArray.append(dhdA)
		########################################################################
		print step, tissueSurfaceArea, height
	########################################################################
	return [tissueSurfaceAreaArray, heightArray, timeArray,dhdAArray,volumeArray,radiusMeanArray, radiusVarArray]
Esempio n. 2
0
def plotAspectRatio(targetid,othertargetid, targetsurfacearea,
	startStep=1,stepsize= 1,largerCondition =True ,maxarea = None, areastep = 10,
	startarea = None,
	endarea = 850):
	import numpy as np
	import matplotlib.pyplot as plt
	import os
	########################################################################
	# faceidarray for Primordia
	if not os.path.isfile("qdObject_step=001.obj"):
		return [0.,0.,0.,0.,0.,0.,0.,0.,0.]
	cell = sf.loadCellFromFile(1,resetids=True)
	initialTissueSurfaceArea = sf.getSurfaceArea(cell)
	#######################################################################
	# Starting the Calculation
	#######################################################################
	#######################################################################
	laststep = 1
	plotargs = {"markersize": 10, "capsize": 10,"elinewidth":3,"markeredgewidth":2}
	#######################################################################
	primordialroundnessArray = []
	primordialBoundaryroundnessArray = []
	othertissueroundnessArray = []
	tissueSurfaceAreaArray = []
	if not startarea:#no startarea given
		startarea = int(initialTissueSurfaceArea)
	#######################################################################
	listsurfacearea = np.linspace(startarea,endarea,10)
	###################################################
	for steparea in listsurfacearea:
		step,tissueSurfaceArea = sf.getTimeStep(steparea, endStep, laststep, stepsize = 10)
		########################################################################
		if not os.path.isfile("qdObject_step=%03d.obj"%step):#check if file exists
			break
		cell = sf.loadCellFromFile(step,resetids=True)
		################################################
		primordialfaces = sf.getPrimordiaFaces(cell,targetid, large = False)
		primordialfaceids = [f.getID() for f in primordialfaces]
		primordialBoundaryfaces = sf.getPrimordiaBoundaryFaceList(cell,targetid,large= True)
		primordialBoundaryfaceids = [f.getID() for f in primordialBoundaryfaces]
		othertissuefacelist = sf.getPrimordiaFaces(cell,othertargetid, large=False)+\
								sf.getPrimordiaBoundaryFaceList(cell,othertargetid,large= True)#getMeristemFaces(cell,primordialfaceids+primordialBoundaryfaceids)
		################################################
		########################################################################
		# calculate the roundness
		########################################################################
		primordiaRoundness = calculateMeanAspectRatio(primordialfaces)
		primordialBoundaryRoundness = calculateMeanAspectRatio(primordialBoundaryfaces)
		othertissueRoundness = calculateMeanAspectRatio(othertissuefacelist)
		######################################################
		tissueSurfaceAreaArray.append(tissueSurfaceArea)
		primordialroundnessArray.append(primordiaRoundness)
		primordialBoundaryroundnessArray.append(primordialBoundaryRoundness)
		othertissueroundnessArray.append(othertissueRoundness)
		########################################################################
		laststep = step
		########################################################################
		print tissueSurfaceArea, step 
	return [tissueSurfaceAreaArray,primordialroundnessArray,
			primordialBoundaryroundnessArray,othertissueroundnessArray]
def plotFeedbackCorrection(targetid, targetsurfacearea,endStep = 2000, 
	startStep=1,stepsize= 20,maxarea = None, areastep = 10,resetids = False,
	saveName = None):
	import numpy as np
	import matplotlib.pyplot as plt
	import os
	########################################################################
	# faceidarray for Primordia
	if not os.path.isfile("qdObject_step=001.obj"):
		return [0.,0.,0.,0.,0.,0.,0.,0.,0.]
	########################################################################
	# getting the time step for computation
	########################################################################
	step,tissueSurfaceArea = sf.getTimeStep(targetsurfacearea, endStep, startStep, stepsize = stepsize,resetids = resetids)
	#######################################################################
	# Starting the Calculation
	#######################################################################
	cell = sf.loadCellFromFile(step,resetids = resetids)#loading cell
	#######################################################################
	targetface = sf.getFace(cell, targetid)#getting top priomrdial face
	cell.calculateStressStrain()#calculating stress and strain
	cell.setRadialOrthoradialVector(targetface)#setting the rad/orthorad vectors
	#######################################################################
	# calculating the rad/orthorad Component of Correction terms
	#######################################################################
	cell.setRadialOrthoradialFeedbackCorrection()
	cell.setRadialOrthoradialStress()
	cell.setPrincipalDeformationVector()
	cell.setPrincipalDeformationFeedbackCorrection()
	#######################################################################
	# Plotting
	#######################################################################
	sf.plotRadialOrthoradialFeedbackCorrectionSurface(cell, numOfLayer,
		azim = -60, elev = 60,
		name =saveName+"_feedbackcorrection_radialOrthoradial")
	sf.plotTracePrincipalDeformationFeedbackCorrectionSurface(cell,numOfLayer,
		azim = -60, elev = 60,
		name =saveName+"_feedbackcorrection_trace")
	sf.plotPrincipalDeformationFeedbackCorrectionSurface(cell, numOfLayer,
		azim = -60, elev = 60,
		name =saveName+"_feedbackcorrection_principalDeformation")
	sf.plotStressSurface(cell, numOfLayer,
		azim = -60, elev = 60,
		name =saveName+"_stressSurface_principal")

	return
def plotMeanStressGrowth(numOfLayer, targetid,endStep,eta, 
	meanstress, meandilation,
	color,startStep=0,stepsize= 1,largerCondition =True ,maxarea = None, areastep = 20,
	startarea = None,
	endarea = 850,resetids = True):
	import numpy as np
	import matplotlib.pyplot as plt
	import os
	########################################################################
	# faceidarray for Primordia
	if not os.path.isfile("qdObject_step=001.obj"):
		return [0.,0.,0.,0.,0.,0.,0.,0.,0.]
	cell = sf.loadCellFromFile(1,resetids=resetids)
	initialTissueSurfaceArea = sf.getSurfaceArea(cell)
	#######################################################################
	# Starting the Calculation
	#######################################################################
	#######################################################################
	laststep = 1
	plotargs = {"markersize": 10, "capsize": 10,"elinewidth":3,"markeredgewidth":2}
	#######################################################################
	orthoradialStressArray = []
	radialStressArray = []
	radialGrowthArray = []
	orthoradialGrowthArray = []
	meanstressEigenvalue1Array = []
	meanstressEigenvalue2Array = []
	meangrowthEigenvalue1Array = []
	meangrowthEigenvalue2Array = []
	meangaussianCurvatureArray = []
	###################################################
	# save standard deviations of the stress and growth
	###################################################
	radialStressSDArray = []
	orthoradialStressSDArray = []
	radialGrowthSDArray = []
	orthoradialGrowthSDArray = []
	meanstressEigenvalue1SDArray = []
	meanstressEigenvalue2SDArray = []
	meangrowthEigenvalue1SDArray = []
	meangrowthEigenvalue2SDArray = []
	###################################################
	tissueSurfaceAreaArray = []
	primordiaAreaArray = []
	boundaryAreaArray = []
	heightArray = []
	###################################################
	if not startarea:#no startarea given
		startarea = int(initialTissueSurfaceArea)
	###################################################
	listsurfacearea = np.linspace(startarea,endarea,10)
	#print listsurfacearea
	#for steparea in range(startarea, endarea, int(areastep)):
	for steparea in listsurfacearea:
		step,tissueSurfaceArea = sf.getTimeStep(steparea, endStep, laststep, stepsize = 10,resetids = resetids)
		########################################################################
		step2,tissueSurfaceArea2 = sf.getTimeStep(steparea+areastep, endStep, step, stepsize = 10,resetids = resetids)
		########################################################################
		if not os.path.isfile("qdObject_step=%03d.obj"%step):#check if file exists
			break
		cell = sf.loadCellFromFile(step,resetids=resetids)
		cell2 = sf.loadCellFromFile(step2,resetids=resetids)
		################################################
		cell.calculateStressStrain()
		################################################
		primordialface = sf.getFace(cell, targetid)
		################################################
		cell.setRadialOrthoradialVector(primordialface)
		cell.setRadialOrthoradialStress()
		################################################
		sf.calculateDilation(cell,cell2)
		########################################################################
		#  Starting the Calculation of mean growth and mean stress on boundary
		########################################################################
		# mean stress
		########################################################################
		faceList = sf.getPrimordiaBoundaryFaceList(cell,targetid,large= large)
		primordiafacelist  = sf.getPrimordiaFaces(cell, targetid, large = False)
		primordiaarea = 0.
		for face in primordiafacelist:
			primordiaarea += face.getAreaOfFace()
		######################################################
		#radialDict, orthoradialDict = getRadialOrthoradialDict(cell,targetid,large = large)
		######################################################
		radialStress = []
		orthoradialStress = []
		radialGrowth = []
		orthoradialGrowth = []
		stressEigenvalue1Array = []
		stressEigenvalue2Array = []
		growthEigenvalue1Array = []
		growthEigenvalue2Array = []
		gaussianCurvatureArray = []
		dTissueSurfaceArea = tissueSurfaceArea2-tissueSurfaceArea
		boundaryarea = 0.
		for face in faceList:
			boundaryarea += face.getAreaOfFace()
			#######################################################
			radstress, orthstress,stresseigenvalue1, stresseigenvalue2  = getRadialOrthoradialStress(face)
			radGrowth, orthGrowth, growtheigenvalue1, growtheigenvalue2 = getRadialOrthoradialGrowth(face)
			#######################################################
			radialStress.append(radstress)
			orthoradialStress.append(orthstress)
			radialGrowth.append(radGrowth)
			orthoradialGrowth.append(orthGrowth)
			stressEigenvalue1Array.append(stresseigenvalue1)
			stressEigenvalue2Array.append(stresseigenvalue2)
			growthEigenvalue1Array.append(growtheigenvalue1)
			growthEigenvalue2Array.append(growtheigenvalue2)
			gaussianCurvatureArray.append(sf.getFaceWeightedGaussianCurvature(face))
		######################################################
		radialStressArray.append(np.mean(radialStress))
		orthoradialStressArray.append(np.mean(orthoradialStress))
		radialGrowthArray.append(np.mean(radialGrowth))
		orthoradialGrowthArray.append(np.mean(orthoradialGrowth))
		tissueSurfaceAreaArray.append(tissueSurfaceArea)
		primordiaAreaArray.append(primordiaarea)
		boundaryAreaArray.append(boundaryarea)
		######################################################
		height = getPrimordiaHeight(cell,targetid)
		heightArray.append(height)
		######################################################
		meanstressEigenvalue1Array.append(np.mean(stressEigenvalue1Array))
		meanstressEigenvalue2Array.append(np.mean(stressEigenvalue2Array))
		meangrowthEigenvalue1Array.append(np.mean(growthEigenvalue1Array))
		meangrowthEigenvalue2Array.append(np.mean(growthEigenvalue2Array))
		meangaussianCurvatureArray.append(np.mean(gaussianCurvatureArray))
		#######################################################
		# calculating the standard deviation
		#######################################################
		meanstressEigenvalue1SDArray.append(np.std(stressEigenvalue1Array))
		meanstressEigenvalue2SDArray.append(np.std(stressEigenvalue2Array))
		meangrowthEigenvalue1SDArray.append(np.std(growthEigenvalue1Array))
		meangrowthEigenvalue2SDArray.append(np.std(growthEigenvalue2Array))
		radialStressSDArray.append(np.std(radialStress))
		orthoradialStressSDArray.append(np.std(orthoradialStress))
		radialGrowthSDArray.append(np.std(radialGrowth))
		orthoradialGrowthSDArray.append(np.std(orthoradialGrowth))
		#meanstress.errorbar(tissueSurfaceArea, np.mean(radialStress),
		#    yerr = np.std(radialStress)/float(len(radialStress)),fmt='o',label = r":$\sigma_{r}$",c=color,**plotargs)
		#meanstress.errorbar(tissueSurfaceArea, np.mean(orthoradialStress),
		#    yerr = np.std(orthoradialStress)/float(len(orthoradialStress)),fmt='<',label = r":$\sigma_{o}$",c=color,**plotargs)
		########################################################################
		# mean dilation
		########################################################################
		#meandilation.errorbar(tissueSurfaceArea, np.mean(radialGrowth),
		#    yerr = np.std(radialGrowth)/float(len(radialGrowth)),fmt='o',label = r":$g_{r}$",c=color,**plotargs)
		#meandilation.errorbar(tissueSurfaceArea, np.mean(orthoradialGrowth),
		#    yerr = np.std(orthoradialGrowth)/float(len(orthoradialGrowth)),fmt='<',label = r":$g_{o}$",c=color,**plotargs)
		########################################################################
		laststep = step
		########################################################################
		print tissueSurfaceArea, tissueSurfaceArea2,dTissueSurfaceArea, step , step2
		########################################################################
	return [tissueSurfaceAreaArray, radialStressArray, orthoradialStressArray,
			radialGrowthArray, orthoradialGrowthArray,
			primordiaAreaArray,
			heightArray,
			meanstressEigenvalue1Array, meanstressEigenvalue2Array,
			meangrowthEigenvalue1Array, meangrowthEigenvalue2Array, boundaryAreaArray,
			radialStressSDArray, orthoradialStressSDArray, 
			radialGrowthSDArray, orthoradialGrowthSDArray,
			meanstressEigenvalue1SDArray, meanstressEigenvalue2SDArray,
			meangrowthEigenvalue1SDArray, meangrowthEigenvalue2SDArray,
			meangaussianCurvatureArray
			]
Esempio n. 5
0
duration = args.duration
startstep = args.starttime
endstep = args.endtime
timestep = args.timestep
surfacearea = args.surfacearea
resetids = args.resetids
#################################################
# if surface area is used, calculate timstep
#################################################
if surfacearea:
    endStep = 2000
    startStep = 1
    endStep, endarea = sf.getTimeStep(surfacearea,
                                      endStep,
                                      startStep,
                                      stepsize=10,
                                      resetids=resetids)
    endarea = int(endarea)
    areastep = timestep  #use area step instead of time for plotting
#####################################################################################################
#key to sort the file_names in order
numbers = re.compile(r'(\d+)')


def numericalSort(value):
    parts = numbers.split(value)
    parts[1::2] = map(int, parts[1::2])
    return parts