docs: def characteristic_times(path,name,Omega=1):
  	r'''This function can be called after calling ``run_diagonalization`` if the option ``save_eigenvalues``
  is set to ``True``. It will return the oscillation periods, and the shortest and half lives.
  The results are lists ordered as:
  	``[detunings, oscillation_periods_1, oscillation_periods_N**2-1, half_lives_1, half_lives_N**2-1]``.
  '''
  	re,im=get_eigenvalues(path,name)
  
  	log12=log(0.5)
  	Nr=len(re[0]); Nd=len(re)
  	half_lives=[]; oscillation_periods=[]
  	for i in range(Nr):
  		col_half=[]
  		col_osci=[]
  		for j in range(Nd):
  			if re[j][i]>=0.0 and i!=0:
  				raise ValueError,'an eigenvalue was greater or equall to zero:'+str(re[j][i])+'.'
  			else:
  				col_half+=[log12/re[j][i]/Omega]
  
  			if im[j][i]==0.0 and i!=0:
  				col_osci+=[float('inf')]
  			else:
  				col_osci+=[abs(2*pi/im[j][i])/Omega]
  		half_lives+=[col_half]
  		oscillation_periods+=[col_osci]
  	return oscillation_periods+half_lives[1:]