public static CeSymmResult analyzeLevel(Atom[] atoms,
			CESymmParameters params) throws StructureException {

		if (atoms.length < 1)
			throw new IllegalArgumentException("Empty Atom array given.");

		CeSymmResult result = align(atoms, params);

		if (result.isRefined()) {
			// STEP 5: symmetry alignment optimization
			if (result.getParams().getOptimization()) {
				try {
					MultipleAlignment msa = result.getMultipleAlignment();
					SymmOptimizer optimizer = new SymmOptimizer(result);
					msa = optimizer.optimize();
					result.setMultipleAlignment(msa);
				} catch (RefinerFailedException e) {
					logger.debug("Optimization failed:" + e.getMessage());
				}
			}
		}
		return result;
	}
public static CeSymmResult analyzeLevel ( Atom [ ] atoms , CESymmParameters params ) throws StructureException { if ( atoms . length < 1 ) throw new IllegalArgumentException ( "Empty Atom array given." ) ; CeSymmResult result = align ( atoms , params ) ; if ( result . isRefined ( ) ) { if ( result . getParams ( ) . getOptimization ( ) ) { try { MultipleAlignment msa = result . getMultipleAlignment ( ) ; SymmOptimizer optimizer = new SymmOptimizer ( result ) ; msa = optimizer . optimize ( ) ; result . setMultipleAlignment ( msa ) ; } catch ( RefinerFailedException e ) { logger . debug ( "Optimization failed:" + e . getMessage ( ) ) ; } } } return result ; }
Analyze a single level of symmetry.

@param atoms
Atom array of the current level
@return CeSymmResult
@throws StructureException