docs: def rankStandardizeNormal(X):
  	"""
  	Gaussianize X: [samples x phenotypes]
  	- each phentoype is converted to ranks and transformed back to normal using the inverse CDF
  	"""
  	Is = X.argsort(axis=0)
  	RV = SP.zeros_like(X)
  	rank = SP.zeros_like(X)
  	for i in range(X.shape[1]):
  		x =  X[:,i]
  		i_nan = SP.isnan(x)
  		if 0:
  			Is = x.argsort()
  			rank = SP.zeros_like(x)
  			rank[Is] = SP.arange(X.shape[0])
  			#add one to ensure nothing = 0
  			rank +=1
  		else:
  			rank = st.rankdata(x[~i_nan])
  		#devide by (N+1) which yields uniform [0,1]
  		rank /= ((~i_nan).sum()+1)
  		#apply inverse gaussian cdf
  		RV[~i_nan,i] = SP.sqrt(2) * special.erfinv(2*rank-1)
  		RV[i_nan,i] = x[i_nan]
  	return RV