public static BigDecimal normalizeCycle(
			Cycle<Nucleotide, InteractionEdge> ac, boolean basepaironly) {
		List<Nucleotide> verts = ac.getVertexList();
		LinkedList<Integer> tmpints = new LinkedList<Integer>();
		for (Nucleotide aNuc : verts) {
			try {
				int nn = aNuc.getNormalizedNucleotide();
				tmpints.add(nn);
			} catch (NullPointerException e) {
				System.out.println("offending nucleotide: " + aNuc);
				e.printStackTrace();
				System.exit(1);
			}
			InteractionEdge ie = ac.getNextEdge(aNuc);
			Set<NucleotideInteraction> nis = ie.getInteractions();
			for (NucleotideInteraction aNi : nis) {
				if (aNi instanceof BasePair) {
					try {
						if (basepaironly == false) {
							int bp = ((BasePair) aNi)
									.getNormalizedBasePairClass();
							tmpints.add(bp);
						} else {
							int bp = 1;
							tmpints.add(bp);
						}
					} catch (NullPointerException e) {
						e.printStackTrace();
					}
				}
				if (aNi instanceof PhosphodiesterBond) {
					int pdb = ((PhosphodiesterBond) aNi)
							.getNormalizedBackBone();
					tmpints.add(pdb);
				}
				// break;
			}
		}
		String intStr = "";
		for (Integer anInt : tmpints) {
			intStr += anInt;
		}

		BigDecimal d = null;
		try {
			d = new BigDecimal(intStr);
		} catch (NumberFormatException e) {
			e.printStackTrace();
		}
		return d;
	}