code: public static int getSymmetryOrder(AFPChain afpChain, int maxSymmetry, float minimumMetricChange) throws StructureException {
  		// alignment comes from the afpChain alignment
  		Map<Integer,Integer> alignment = AlignmentTools.alignmentAsMap(afpChain);
  
  		// Now construct identity to map aligned residues in sequential order
  		Map<Integer, Integer> identity = guessSequentialAlignment(alignment, true);
  
  
  		return AlignmentTools.getSymmetryOrder(alignment,
  				identity,
  				maxSymmetry, minimumMetricChange);
  	}
docs: Guesses the order of symmetry in an alignment
  
  <p>Uses {@link #getSymmetryOrder(Map alignment, Map identity, int, float)}
  to determine the the symmetry order. For the identity alignment, sorts
  the aligned residues of each protein sequentially, then defines the ith
  residues of each protein to be equivalent.
  
  <p>Note that the selection of the identity alignment here is <i>very</i>
  naive, and only works for proteins with very good coverage. Wherever
  possible, it is better to construct an identity function explicitly
  from a sequence alignment (or use an {@link IdentityMap} for internally
  symmetric proteins) and use {@link #getSymmetryOrder(Map, Map, int, float)}.