Index: trunk/archive/scripts/src/test_pmFPARead.c
===================================================================
--- trunk/archive/scripts/src/test_pmFPARead.c	(revision 4395)
+++ trunk/archive/scripts/src/test_pmFPARead.c	(revision 4694)
@@ -26,10 +26,12 @@
 
     (void)psTraceSetLevel(".", 0);
+    (void)psTraceSetLevel("readExtension", 10);
     (void)psTraceSetLevel("readMultipleRegions", 0);
     (void)psTraceSetLevel("portions", 0);
-    (void)psTraceSetLevel("pmFPARead", 10);
+    (void)psTraceSetLevel("pmFPAPrint", 10);
     (void)psTraceSetLevel("pmFPAfromHeader", 10);
     (void)psTraceSetLevel("pmCameraFromHeader", 10);
-
+    (void)psTraceSetLevel("pmFPAMorph", 10);
+    (void)psTraceSetLevel("spliceCells", 10);
 
 
@@ -53,13 +55,68 @@
     psMetadata *camera = pmCameraFromHeader(header, ipprc);
 
-    papFPA *fpa = pmFPARead(fits, camera, NULL);
+    papFPA *fpa = pmFPAConstruct(camera, NULL);
+
+    // Cut off a lot of the chips so I can fit things in memory
+    {
+	psArray *chips = fpa->chips;
+	papChip *chip = chips->data[0];
+	psFree(chips);
+	chips = psArrayAlloc(1);
+	chips->data[0] = chip;
+    }
+
+    (void)pmFPARead(fpa, fits);
     (void)pmFPAPrint(fpa);
 
-    printf("Test: %d %d\n", psCellGetValueS32(fpa, "ccd15", "left", "CELL.XPARITY"),
-	   psCellGetValueS32(fpa, "ccd15", "right", "CELL.XPARITY"));
-    printf("Test: %d %d\n", psCellGetValueS32(fpa, "ccd15", "left", "CELL.YPARITY"),
-	   psCellGetValueS32(fpa, "ccd15", "right", "CELL.YPARITY"));
-    printf("Test: %d %d\n", psCellGetValueS32(fpa, "ccd15", "left", "CELL.YPARITY"),
-	   psCellGetValueS32(fpa, "ccd15", "right", "CELL.YPARITY"));
+    // Morph to a splice image
+    psMetadata *newCamera = psMetadataConfigParse(NULL, &badLines, "megacam_splice.config", true);
+    papFPA *newfpa = pmFPAConstruct(newCamera, NULL);
+
+    // Cut off a lot of the chips so I can fit things in memory
+    {
+	psArray *chips = newfpa->chips;
+	papChip *chip = chips->data[0];
+	psFree(chips);
+	chips = psArrayAlloc(1);
+	chips->data[0] = chip;
+    }
+
+    pmFPAPrint(newfpa);
+    pmFPAMorph(newfpa, fpa, 0, 0);
+    pmFPAPrint(newfpa);
+
+#if 0
+    // Write out
+    psFits *newfits = psFitsAlloc("test.fits");
+    pmFPAWrite(fits, newfpa);
+    psFree(newfits);
+#endif
+
+#if 1
+    psArray *chips = newfpa->chips;
+    for (int i = 0; i < chips->n; i++) {
+	papChip *chip = chips->data[i];	// Chip of interest
+	psArray *cells = chip->cells;	// Array of cells
+
+	if (chip->extname) {
+	    psFits *fp = psFitsAlloc(chip->extname);
+	    psFitsWriteImage(fp, chip->header, chip->pixels->data[i], i);
+	    psFree(fp);
+	}
+
+	for (int j = 0; j < cells->n; j++) {
+	    papCell *cell = cells->data[j]; // Cell of interest
+
+	    if (cell->extname) {
+		psFits *fp = psFitsAlloc(cell->extname);
+		psFitsWriteImage(fp, cell->header, cell->pixels->data[i], i);
+		psFree(fp);
+	    }
+	}
+    }
+#endif
+
+    psFree(newfpa);
+    psFree(newCamera);
 
     // Tidy up
