code: public static QuatSymmetryResults getQuaternarySymmetry(CeSymmResult result)
  			throws StructureException {
  
  		// Obtain the subunits of the repeats
  		List<Atom[]> atoms = toRepeatsAlignment(result).getAtomArrays();
  		List<Subunit> subunits = atoms.stream()
  				.map(a -> new Subunit(a, null, null, null))
  				.collect(Collectors.toList());
  
  		// The clustering thresholds are set to 0 so that all always merged
  		SubunitClustererParameters cp = new SubunitClustererParameters();
  		cp.setClustererMethod(SubunitClustererMethod.STRUCTURE);
  		cp.setRMSDThreshold(10.0);
  		cp.setStructureCoverageThreshold(0.0);
  
  		QuatSymmetryParameters sp = new QuatSymmetryParameters();
  
  		QuatSymmetryResults gSymmetry = QuatSymmetryDetector
  				.calcGlobalSymmetry(subunits, sp, cp);
  
  		return gSymmetry;
  	}
docs: Given a symmetry result, it calculates the overall global symmetry,
  factoring out the alignment and detection steps of
  {@link QuatSymmetryDetector} algorithm.
  
  @param result
  symmetry result
  @return global symmetry results
  @throws StructureException