+public class LoadPherogramHandler extends AbstractHandler {
+ public static final String DEFAULT_READ_NAME_PREFIX = "Read ";
+
+
+ private String newReadName(SequenceDataProvider provider) {
+ int index = 1;
+ while (provider.sequenceIDByName(DEFAULT_READ_NAME_PREFIX + index) != SequenceDataProvider.NO_SEQUENCE_FOUND) {
+ index++;
+ }
+ return DEFAULT_READ_NAME_PREFIX + index;
+ }
+
+
+ private void addPherogram(AlignmentContentArea contentArea, File pherogram)
+ throws IOException, UnsupportedChromatogramFormatException {
+
+ SequenceDataProvider provider = contentArea.getSequenceProvider();
+ BioJavaPherogramProvider pherogramProvider = new BioJavaPherogramProvider(ChromatogramFactory.create(pherogram)); // Must happen before a sequence is added, because it might throw an exception.
+ String name = newReadName(provider);
+
+ // Create sequence:
+ provider.addSequence(name);
+ int id = provider.sequenceIDByName(name);
+
+ // Copy base call sequence into alignment:
+ for (int i = 0; i < pherogramProvider.getSequenceLength(); i++) {
+ provider.insertTokenAt(id, i, provider.getTokenSet().tokenByKeyChar(
+ pherogramProvider.getBaseCall(i).getUpperedBase().charAt(0)));
+ }
+
+ // Add data area:
+ PherogramArea pherogramArea = new PherogramArea(contentArea, pherogramProvider);
+ contentArea.getDataAreas().getSequenceAreas(id).add(pherogramArea);
+ }
+
+