Index: trunk/psModules/src/camera/pmFPAfile.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfile.c	(revision 19188)
+++ trunk/psModules/src/camera/pmFPAfile.c	(revision 19189)
@@ -440,55 +440,58 @@
     PS_ASSERT_STRING_NON_EMPTY(type, PM_FPA_FILE_NONE);
 
-    if (!strcasecmp (type, "SX"))     {
+    if (!strcasecmp(type, "SX"))     {
         return PM_FPA_FILE_SX;
     }
-    if (!strcasecmp (type, "OBJ"))     {
+    if (!strcasecmp(type, "OBJ"))     {
         return PM_FPA_FILE_OBJ;
     }
-    if (!strcasecmp (type, "CMP"))     {
+    if (!strcasecmp(type, "CMP"))     {
         return PM_FPA_FILE_CMP;
     }
-    if (!strcasecmp (type, "CMF"))     {
+    if (!strcasecmp(type, "CMF"))     {
         return PM_FPA_FILE_CMF;
     }
-    if (!strcasecmp (type, "RAW"))     {
+    if (!strcasecmp(type, "RAW"))     {
         return PM_FPA_FILE_RAW;
     }
-    if (!strcasecmp (type, "IMAGE"))     {
+    if (!strcasecmp(type, "IMAGE"))     {
         return PM_FPA_FILE_IMAGE;
     }
-    if (!strcasecmp (type, "PSF"))     {
+    if (!strcasecmp(type, "PSF"))     {
         return PM_FPA_FILE_PSF;
     }
-    if (!strcasecmp (type, "JPEG"))     {
+    if (!strcasecmp(type, "JPEG"))     {
         return PM_FPA_FILE_JPEG;
     }
-    if (!strcasecmp (type, "KAPA"))     {
+    if (!strcasecmp(type, "KAPA"))     {
         return PM_FPA_FILE_KAPA;
     }
-    if (!strcasecmp (type, "MASK"))     {
+    if (!strcasecmp(type, "MASK"))     {
         return PM_FPA_FILE_MASK;
     }
-    if (!strcasecmp (type, "WEIGHT"))     {
+    if (!strcasecmp(type, "WEIGHT"))     {
         return PM_FPA_FILE_WEIGHT;
     }
-    if (!strcasecmp (type, "FRINGE")) {
+    if (!strcasecmp(type, "FRINGE")) {
         return PM_FPA_FILE_FRINGE;
     }
-    if (!strcasecmp (type, "DARK"))     {
+    if (!strcasecmp(type, "DARK"))     {
         return PM_FPA_FILE_DARK;
     }
-    if (!strcasecmp (type, "HEADER"))     {
+    if (!strcasecmp(type, "HEADER"))     {
         return PM_FPA_FILE_HEADER;
     }
     // deprecate this?
-    if (!strcasecmp (type, "ASTROM"))     {
+    if (!strcasecmp(type, "ASTROM"))     {
         return PM_FPA_FILE_ASTROM_MODEL;
     }
-    if (!strcasecmp (type, "ASTROM.MODEL"))     {
+    if (!strcasecmp(type, "ASTROM.MODEL"))     {
         return PM_FPA_FILE_ASTROM_MODEL;
     }
-    if (!strcasecmp (type, "ASTROM.REFSTARS"))     {
+    if (!strcasecmp(type, "ASTROM.REFSTARS"))     {
         return PM_FPA_FILE_ASTROM_REFSTARS;
+    }
+    if (!strcasecmp(type, "SUBKERNEL"))     {
+        return PM_FPA_FILE_SUBKERNEL;
     }
 
@@ -531,4 +534,6 @@
       case PM_FPA_FILE_ASTROM_REFSTARS:
         return ("ASTROM.REFSTARS");
+      case PM_FPA_FILE_SUBKERNEL:
+        return ("SUBKERNEL");
       default:
         return ("NONE");
Index: trunk/psModules/src/camera/pmFPAfile.h
===================================================================
--- trunk/psModules/src/camera/pmFPAfile.h	(revision 19188)
+++ trunk/psModules/src/camera/pmFPAfile.h	(revision 19189)
@@ -4,6 +4,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.31 $ $Name: not supported by cvs2svn $
- * @date $Date: 2008-08-01 03:15:46 $
+ * @version $Revision: 1.32 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2008-08-25 22:14:04 $
  * Copyright 2004-2005 Institute for Astronomy, University of Hawaii
  */
@@ -45,4 +45,5 @@
     PM_FPA_FILE_ASTROM_MODEL,
     PM_FPA_FILE_ASTROM_REFSTARS,
+    PM_FPA_FILE_SUBKERNEL,
 } pmFPAfileType;
 
Index: trunk/psModules/src/camera/pmFPAfileIO.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfileIO.c	(revision 19188)
+++ trunk/psModules/src/camera/pmFPAfileIO.c	(revision 19189)
@@ -40,4 +40,5 @@
 #include "pmSourcePlots.h"
 #include "pmFPAConstruct.h"
+#include "pmSubtractionIO.h"
 #include "pmConcepts.h"
 
@@ -188,4 +189,7 @@
         }
         break;
+      case PM_FPA_FILE_SUBKERNEL:
+        status = pmSubtractionReadKernels(view, file, config);
+        break;
       case PM_FPA_FILE_SX:
       case PM_FPA_FILE_RAW:
@@ -258,38 +262,39 @@
       case PM_FPA_FILE_FRINGE:
       case PM_FPA_FILE_DARK: {
-            // create FPA structure component based on view
-            psMetadata *format = file->format; // Camera format configuration
-            if (!format) {
-                format = config->format;
-            }
-
-            pmFPA *nameSource = file->src; // Source of FPA.OBS
-            if (!nameSource) {
-                nameSource = file->fpa;
-            }
-            bool mdok;                  // Status of MD lookup
-            const char *fpaObs = psMetadataLookupStr(&mdok, nameSource->concepts, "FPA.OBS"); // Obs. id
-
-            pmFPAAddSourceFromView(file->fpa, fpaObs, view, format);
-            psTrace ("psModules.camera", 5, "created fpa data elements for %s (%s) (%d:%d:%d)\n",
-                     file->name, file->name, view->chip, view->cell, view->readout);
-            break;
-    }
-    case PM_FPA_FILE_HEADER:
-      psAbort ("Create not defined for HEADER");
-      break;
-    case PM_FPA_FILE_SX:
-    case PM_FPA_FILE_RAW:
-    case PM_FPA_FILE_OBJ:
-    case PM_FPA_FILE_CMP:
-    case PM_FPA_FILE_CMF:
-    case PM_FPA_FILE_PSF:
-    case PM_FPA_FILE_ASTROM_MODEL:
-    case PM_FPA_FILE_ASTROM_REFSTARS:
-    case PM_FPA_FILE_JPEG:
-    case PM_FPA_FILE_KAPA:
-        break;
-
-    default:
+          // create FPA structure component based on view
+          psMetadata *format = file->format; // Camera format configuration
+          if (!format) {
+              format = config->format;
+          }
+
+          pmFPA *nameSource = file->src; // Source of FPA.OBS
+          if (!nameSource) {
+              nameSource = file->fpa;
+          }
+          bool mdok;                  // Status of MD lookup
+          const char *fpaObs = psMetadataLookupStr(&mdok, nameSource->concepts, "FPA.OBS"); // Obs. id
+
+          pmFPAAddSourceFromView(file->fpa, fpaObs, view, format);
+          psTrace ("psModules.camera", 5, "created fpa data elements for %s (%s) (%d:%d:%d)\n",
+                   file->name, file->name, view->chip, view->cell, view->readout);
+          break;
+      }
+      case PM_FPA_FILE_HEADER:
+        psAbort ("Create not defined for HEADER");
+        break;
+      case PM_FPA_FILE_SUBKERNEL:
+      case PM_FPA_FILE_SX:
+      case PM_FPA_FILE_RAW:
+      case PM_FPA_FILE_OBJ:
+      case PM_FPA_FILE_CMP:
+      case PM_FPA_FILE_CMF:
+      case PM_FPA_FILE_PSF:
+      case PM_FPA_FILE_ASTROM_MODEL:
+      case PM_FPA_FILE_ASTROM_REFSTARS:
+      case PM_FPA_FILE_JPEG:
+      case PM_FPA_FILE_KAPA:
+        break;
+
+      default:
         psError(PS_ERR_IO, true, "Unsupported type for %s: %d", file->name, file->type);
         return false;
@@ -435,4 +440,7 @@
             }
         }
+        break;
+      case PM_FPA_FILE_SUBKERNEL:
+        status = pmSubtractionWriteKernels(view, file, config);
         break;
       case PM_FPA_FILE_SX:
@@ -512,4 +520,5 @@
       case PM_FPA_FILE_FRINGE:
       case PM_FPA_FILE_DARK:
+      case PM_FPA_FILE_SUBKERNEL:
       case PM_FPA_FILE_CMF:
       case PM_FPA_FILE_PSF:
@@ -577,4 +586,5 @@
         status = pmFPAviewFreeData(view, file);
         break;
+      case PM_FPA_FILE_SUBKERNEL:
       case PM_FPA_FILE_SX:
       case PM_FPA_FILE_RAW:
@@ -720,4 +730,5 @@
       case PM_FPA_FILE_FRINGE:
       case PM_FPA_FILE_DARK:
+      case PM_FPA_FILE_SUBKERNEL:
       case PM_FPA_FILE_CMF:
       case PM_FPA_FILE_PSF:
@@ -899,9 +910,11 @@
         status = pmFPAviewFitsWritePHU (view, file, config);
         break;
+      case PM_FPA_FILE_SUBKERNEL:
+        status = pmSubtractionWritePHU(view, file, config);
       case PM_FPA_FILE_CMF:
         status = pmSource_CMF_WritePHU (view, file, config);
         break;
       case PM_FPA_FILE_PSF:
-        status = pmPSFmodelWritePHU (view, file, config);
+        status = pmPSFmodelWritePHU(view, file, config);
         break;
       case PM_FPA_FILE_ASTROM_REFSTARS:
