usage: Single particle alignment, reconstruction and heterogeneity analysis with Gaussian model and neural networks. There are a few modes.
	Reconstruction from projections or particles with transforms:
	e2gmm_refine.py --projs <projection file> --modelout <model output text file> --npts <number of Gaussian in model>
	Align particles using the model (local refinement only, still under testing):
	e2gmm_refine.py --model <model input> --ptclsin <particle input list> --ptclout <particle list output> --align 
	Heterogeneity analysis:
	e2gmm_refine.py --model <model input> --ptclsin <particle input list>  --heter --midout <conformation output text file>

Option Type Description
--version None show program's version number and exit
--sym str symmetry. currently only support c and d
--model str load from an existing model file
--modelout str output trained model file. only used when --projs is provided
--decoderin str Rather than initializing the decoder from a model, read an existing trained decoder
--decoderout str Save the trained decoder model. Filename should be .h5
--projs str projections with orientations (in hdf header or comment column of lst file) to train model
--evalmodel str generate model projection images to the given file name
--evalsize int Box size for the projections for evaluation.
--ptclsin str particles input for alignment
--ptclsout str aligned particle output
--learnrate float learning rate for model training only. Default is 1e-4.
--sigmareg float regularizer for the sigma of gaussian width. Larger value means all Gaussian functions will have essentially the same width. Smaller value may help compensating local resolution difference.
--modelreg float regularizer for for Gaussian positions based on the starting model, ie the result will be biased towards the starting model when training the decoder (0-1 typ). Default 0
--ampreg float regularizer for the Gaussian amplitudes in the first 1/2 of the iterations. Large values will encourage all Gaussians to have similar amplitudes. default = 0
--niter int number of iterations
--npts int number of points to initialize.
--batchsz int batch size
--maxboxsz int maximum fourier box size to use. 2 x target Fourier radius.
--maxres float maximum resolution. will overwrite maxboxsz.
--align None align particles.
--heter None heterogeneity analysis.
--decoderentropy None This will train some entropy into the decoder using particles to reduce vanishing gradient problems
--perturb float Relative perturbation level to apply in each iteration during --heter training. Default = 0.1, decrease if models are too disordered
--conv None Use a convolutional network for heterogeneity analysis.
--fromscratch None start from coarse alignment. otherwise will only do refinement from last round
--gradout str gradient output
--gradin str reading from gradient output instead of recomputing
--midout str middle layer output
--pas str choose whether to adjust position, amplitude, sigma. use 3 digit 0/1 input. default is 110, i.e. only adjusting position and amplitude
--nmid int size of the middle layer
--ndense int size of the layers between the middle and in/out, variable if -1. Default 512
--mask str remove points outside mask
--ppid int Set the PID of the parent process, used for cross platform PPID