Index: trunk/ippconfig/gpc1/ppImage.config
===================================================================
--- trunk/ippconfig/gpc1/ppImage.config	(revision 42890)
+++ trunk/ippconfig/gpc1/ppImage.config	(revision 42891)
@@ -6,7 +6,81 @@
 BIN2.YBIN               S32     150
 
-OVERSCAN.SINGLE         BOOL    FALSE            # Reduce overscan to a single value?
-OVERSCAN.STAT           STR     MEDIAN
-OVERSCAN.BOXCAR         S32     3
+OVERSCAN.SINGLE         BOOL    FALSE           # Reduce overscan to a single value?
+OVERSCAN.STAT           STR     MEDIAN            # MEAN | MEDIAN
+OVERSCAN.BOXCAR         S32     3              # Boxcar smoothing radius
+
+OVERSCAN.2D             BOOL    FALSE           # use a 2D model for the overscan subtraction?
+OVERSCAN.2D.STAT        STR     MEAN            # MEAN | MEDIAN
+OVERSCAN.2D.BOXCAR	    S32     30          		# Boxcar smoothing radius
+
+# two regions are needed for 2D bias subtraction. the first is the read-dir (y), the second is the cross-dir (x)
+OVERSCAN.2D.BIASSECSLOW STR     [591:623,1:598] #2D overscan slow read region 
+OVERSCAN.2D.BIASSECFAST STR     [1:623,599:607] #2D overscan fast read region 
+
+
+OVERSCAN.2D.SUBSET METADATA
+      XY01    BOOL    TRUE
+      XY02    BOOL    TRUE
+      XY03    BOOL    TRUE
+      XY04    BOOL    TRUE
+      XY05    BOOL    TRUE
+      XY06    BOOL    TRUE
+      XY07    BOOL    TRUE
+      XY10    BOOL    TRUE
+      XY11    BOOL    TRUE
+      XY12    BOOL    TRUE
+      XY13    BOOL    TRUE
+      XY14    BOOL    TRUE
+      XY15    BOOL    TRUE
+      XY16    BOOL    TRUE
+      XY17    BOOL    TRUE
+      XY20    BOOL    TRUE
+      XY21    BOOL    TRUE
+      XY22    BOOL    TRUE
+      XY23    BOOL    TRUE
+      XY24    BOOL    TRUE
+      XY25    BOOL    TRUE
+      XY26    BOOL    TRUE
+      XY27    BOOL    TRUE
+      XY30    BOOL    TRUE
+      XY31    BOOL    TRUE
+      XY32    BOOL    TRUE
+      XY33    BOOL    TRUE
+      XY34    BOOL    TRUE
+      XY35    BOOL    TRUE
+      XY36    BOOL    TRUE
+      XY37    BOOL    TRUE
+      XY40    BOOL    TRUE
+      XY41    BOOL    TRUE
+      XY42    BOOL    TRUE
+      XY43    BOOL    TRUE
+      XY44    BOOL    TRUE
+      XY45    BOOL    TRUE
+      XY46    BOOL    TRUE
+      XY47    BOOL    TRUE
+      XY50    BOOL    TRUE
+      XY51    BOOL    TRUE
+      XY52    BOOL    TRUE
+      XY53    BOOL    TRUE
+      XY54    BOOL    TRUE
+      XY55    BOOL    TRUE
+      XY56    BOOL    TRUE
+      XY57    BOOL    TRUE
+      XY60    BOOL    TRUE
+      XY61    BOOL    TRUE
+      XY62    BOOL    TRUE
+      XY63    BOOL    TRUE
+      XY64    BOOL    TRUE
+      XY65    BOOL    TRUE
+      XY66    BOOL    TRUE
+      XY67    BOOL    TRUE
+      XY70    BOOL    TRUE
+      XY71    BOOL    TRUE
+      XY72    BOOL    TRUE
+      XY73    BOOL    TRUE
+      XY74    BOOL    TRUE
+      XY75    BOOL    TRUE
+      XY76    BOOL    TRUE
+END
 
 # Normalization class
@@ -262,4 +336,38 @@
 END
 
+
+CHIP_2DBIAS METADATA
+  BASE.FITS          BOOL    FALSE           # Save base detrended image?
+  BASE.MASK.FITS     BOOL    FALSE           # Save base detrended image?
+  BASE.VARIANCE.FITS BOOL    FALSE           # Save base detrended image?
+  CHIP.FITS          BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.MASK.FITS     BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.VARIANCE.FITS BOOL    TRUE            # Save chip-mosaic-ed image? 
+  OVERSCAN           BOOL    TRUE            # Overscan subtraction
+  OVERSCAN.2D        BOOL    TRUE            # 2D Overscan model
+  NONLIN             BOOL    TRUE            # apply non-linearity correction 
+  BIAS               BOOL    FALSE           # Bias subtraction
+  DARK               BOOL    TRUE            # Dark subtraction
+  NOISEMAP           BOOL    TRUE            # Apply noise read map
+  REMNANCE           BOOL    FALSE           # Remnance masking
+  SHUTTER            BOOL    FALSE           # Shutter correction
+  FLAT               BOOL    TRUE            # Flat-field normalisation
+  MASK               BOOL    TRUE            # Mask bad pixels
+  MASK.BUILD         BOOL    TRUE            # Build internal mask?
+  MASK.BURNTOOL      BOOL    TRUE            # Mask potential burntool trails
+  MASK.AUXMASK       BOOL    FALSE           # augment mask with more restrictive auxiliary mask
+  PATTERN.ROW        BOOL    TRUE            # Row pattern correction
+  PATTERN.CELL       BOOL    FALSE           # Cell pattern correction
+  PATTERN.CONTINUITY BOOL    TRUE            # Cell pattern correction using edge continuity
+  FRINGE             BOOL    TRUE            # Fringe subtraction
+  BIN1.FITS          BOOL    TRUE            # Save 1st binned chip image?
+  BIN2.FITS          BOOL    TRUE            # Save 2nd binned chip image?
+  PHOTOM             BOOL    TRUE            # Source identification and photometry
+  ASTROM.CHIP        BOOL    FALSE           # Astrometry per chip?
+  ASTROM.MOSAIC      BOOL    FALSE           # Astrometry for mosaic?
+  BACKGROUND         BOOL    TRUE            # Subtract background?
+  CROSSTALK.MEASURE  BOOL    FALSE           # Subtract model background?
+END
+
 # Standard chip processing, uncompressed outputs
 CHIP_NOCOMPRESS METADATA
@@ -417,4 +525,133 @@
 END
 
+# Chip processing with DARKTEST and 2D bias
+CHIP_DARKTEST_2DBIAS METADATA
+  BASE.FITS          BOOL    FALSE           # Save base detrended image?
+  BASE.MASK.FITS     BOOL    FALSE           # Save base detrended image?
+  BASE.VARIANCE.FITS BOOL    FALSE           # Save base detrended image?
+  CHIP.FITS          BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.MASK.FITS     BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.VARIANCE.FITS BOOL    TRUE            # Save chip-mosaic-ed image? 
+  OVERSCAN           BOOL    TRUE            # Overscan subtraction
+  OVERSCAN.2D        BOOL    TRUE            # 2D Overscan model
+  NONLIN             BOOL    FALSE           # apply non-linearity correction 
+  NEWNONLIN          BOOL    TRUE            # apply new non-linearity correction 
+  BIAS               BOOL    FALSE           # Bias subtraction
+  DARK               BOOL    TRUE            # Dark subtraction
+  NOISEMAP           BOOL    TRUE            # Apply noise read map
+  REMNANCE           BOOL    FALSE           # Remnance masking
+  SHUTTER            BOOL    FALSE           # Shutter correction
+  FLAT               BOOL    TRUE            # Flat-field normalisation
+  MASK               BOOL    TRUE            # Mask bad pixels
+  MASK.BUILD         BOOL    TRUE            # Build internal mask?
+  MASK.BURNTOOL      BOOL    TRUE            # Mask potential burntool trails
+  MASK.AUXMASK       BOOL    FALSE           # augment mask with more restrictive auxiliary mask
+  PATTERN.ROW        BOOL    TRUE            # Row pattern correction
+  PATTERN.CELL       BOOL    FALSE           # Cell pattern correction
+  PATTERN.CONTINUITY BOOL    TRUE            # Cell pattern correction using edge continuity
+  FRINGE             BOOL    TRUE            # Fringe subtraction
+  BIN1.FITS          BOOL    TRUE            # Save 1st binned chip image?
+  BIN2.FITS          BOOL    TRUE            # Save 2nd binned chip image?
+  PHOTOM             BOOL    TRUE            # Source identification and photometry
+  ASTROM.CHIP        BOOL    FALSE           # Astrometry per chip?
+  ASTROM.MOSAIC      BOOL    FALSE           # Astrometry for mosaic?
+  BACKGROUND         BOOL    TRUE            # Subtract background?
+  CROSSTALK.MEASURE  BOOL    FALSE           # Subtract model background?
+
+  #set pattern continuity correction, for 2D overscan and new non-linearity (June 2025)
+  PATTERN.CONTINUITY.SUBSET     METADATA        # List of chips and whether to do row pattern correction
+      XY00    BOOL    FALSE 
+      XY01    BOOL    TRUE 
+      XY02    BOOL    FALSE 
+      XY03    BOOL    FALSE 
+      XY04    BOOL    FALSE 
+      XY05    BOOL    TRUE 
+      XY06    BOOL    TRUE 
+      XY07    BOOL    FALSE 
+      XY10    BOOL    FALSE 
+      XY11    BOOL    FALSE
+      XY12    BOOL    FALSE 
+      XY13    BOOL    FALSE 
+      XY14    BOOL    TRUE 
+      XY15    BOOL    TRUE 
+      XY16    BOOL    FALSE
+      XY17    BOOL    FALSE 
+      XY20    BOOL    FALSE 
+      XY21    BOOL    FALSE 
+      XY22    BOOL    FALSE 
+      XY23    BOOL    FALSE 
+      XY24    BOOL    TRUE 
+      XY25    BOOL    FALSE
+      XY26    BOOL    FALSE 
+      XY27    BOOL    FALSE
+      XY30    BOOL    FALSE 
+      XY31    BOOL    FALSE
+      XY32    BOOL    FALSE
+      XY33    BOOL    FALSE
+      XY34    BOOL    FALSE
+      XY35    BOOL    FALSE 
+      XY36    BOOL    FALSE
+      XY37    BOOL    TRUE 
+      XY40    BOOL    FALSE 
+      XY41    BOOL    FALSE 
+      XY42    BOOL    FALSE 
+      XY43    BOOL    FALSE 
+      XY44    BOOL    FALSE
+      XY45    BOOL    FALSE
+      XY46    BOOL    FALSE
+      XY47    BOOL    FALSE
+      XY50    BOOL    FALSE 
+      XY51    BOOL    FALSE 
+      XY52    BOOL    FALSE 
+      XY53    BOOL    FALSE
+      XY54    BOOL    FALSE 
+      XY55    BOOL    FALSE
+      XY56    BOOL    FALSE
+      XY57    BOOL    TRUE 
+      XY60    BOOL    FALSE 
+      XY61    BOOL    FALSE 
+      XY62    BOOL    FALSE
+      XY63    BOOL    FALSE 
+      XY64    BOOL    FALSE 
+      XY65    BOOL    FALSE
+      XY66    BOOL    FALSE 
+      XY67    BOOL    TRUE 
+      XY70    BOOL    FALSE 
+      XY71    BOOL    FALSE 
+      XY72    BOOL    FALSE 
+      XY73    BOOL    FALSE 
+      XY74    BOOL    FALSE 
+      XY75    BOOL    FALSE
+      XY76    BOOL    FALSE 
+      XY77    BOOL    FALSE 
+  END
+
+  DETREND.CONSTRAINTS  METADATA
+    BIAS METADATA
+    END
+    DARK METADATA
+      DETTYPE   STR DARK2D
+      EXPTIME   STR FPA.EXPOSURE
+    END
+    FLAT METADATA
+      FILTER    STR FPA.FILTERID
+    END
+    FLATCORR METADATA
+      FILTER    STR FPA.FILTERID
+    END
+    FRINGE METADATA
+      FILTER    STR FPA.FILTERID
+    END
+    SHUTTER METADATA
+    END
+    MASK METADATA
+    END
+    ASTROM METADATA
+    END
+    NOISEMAP METADATA
+    END
+  END   
+END
+
 CHIP_MASKTEST METADATA
    BASE.FITS          BOOL    FALSE           # Save base detrended image?
@@ -733,4 +970,29 @@
   CHIP.VARIANCE.FITS BOOL    FALSE           # Save chip-mosaic-ed image? 
   OVERSCAN           BOOL    TRUE            # Overscan subtraction
+  NONLIN             BOOL    TRUE            # apply non-linearity correction 
+  BIAS               BOOL    FALSE           # Bias subtraction
+  DARK               BOOL    FALSE           # Dark subtraction
+  SHUTTER            BOOL    FALSE           # Shutter correction
+  FLAT               BOOL    FALSE           # Flat-field normalisation
+  MASK               BOOL    FALSE           # Mask bad pixels
+  MASK.BUILD	     BOOL    FALSE	     # Build internal mask?
+  FRINGE             BOOL    FALSE           # Fringe subtraction
+  PHOTOM             BOOL    FALSE           # Source identification and photometry
+  ASTROM.CHIP        BOOL    FALSE           # Astrometry per chip?
+  ASTROM.MOSAIC      BOOL    FALSE           # Astrometry for mosaic?
+  BIN1.FITS          BOOL    TRUE            # Save 1st binned chip image?
+  BIN2.FITS          BOOL    TRUE            # Save 2nd binned chip image?
+END
+
+# Overscan, 2D bias
+PPIMAGE_OB2DBIAS           METADATA
+  BASE.FITS          BOOL    TRUE            # Save base detrended image?
+  BASE.MASK.FITS     BOOL    TRUE            # Save base detrended image?
+  BASE.VARIANCE.FITS BOOL    TRUE            # Save base detrended image?
+  CHIP.FITS          BOOL    FALSE           # Save chip-mosaic-ed image? 
+  CHIP.MASK.FITS     BOOL    FALSE           # Save chip-mosaic-ed image? 
+  CHIP.VARIANCE.FITS BOOL    FALSE           # Save chip-mosaic-ed image? 
+  OVERSCAN           BOOL    TRUE            # Overscan subtraction
+  OVERSCAN.2D        BOOL    TRUE            # 2D Overscan model
   NONLIN             BOOL    TRUE            # apply non-linearity correction 
   BIAS               BOOL    FALSE           # Bias subtraction
@@ -1623,4 +1885,71 @@
       END
     END
+END
+
+# only subtract overscan 
+CHIP_SUB_BIAS	METADATA
+  BASE.FITS          BOOL    FALSE           # Save base detrended image?
+  BASE.MASK.FITS     BOOL    FALSE           # Save base detrended image?
+  BASE.VARIANCE.FITS BOOL    FALSE           # Save base detrended image?
+  CHIP.FITS          BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.MASK.FITS     BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.VARIANCE.FITS BOOL    TRUE            # Save chip-mosaic-ed image? 
+  OVERSCAN           BOOL    TRUE            # Overscan subtraction
+  NONLIN             BOOL    FALSE            # apply non-linearity correction 
+  BIAS               BOOL    FALSE           # Bias subtraction
+  DARK               BOOL    FALSE            # Dark subtraction
+  NOISEMAP           BOOL    FALSE
+  REMNANCE           BOOL    FALSE           # Remnance masking
+  SHUTTER            BOOL    FALSE           # Shutter correction
+  FLAT               BOOL    FALSE            # Flat-field normalisation
+  MASK               BOOL    TRUE            # Mask bad pixels
+  MASK.BUILD	     BOOL    TRUE	     # Build internal mask?
+  MASK.BURNTOOL      BOOL    TRUE            # Mask potential burntool trails
+  MASK.AUXMASK       BOOL    FALSE           # augment mask with more restrictive auxiliary mask
+  PATTERN.ROW        BOOL    FALSE           # Row pattern correction
+  PATTERN.CELL	     BOOL    FALSE	     # Cell pattern correction
+  PATTERN.CONTINUITY BOOL    FALSE           # Cell pattern coorection using edge continuity
+  FRINGE             BOOL    FALSE            # Fringe subtraction
+  BIN1.FITS          BOOL    TRUE            # Save 1st binned chip image?
+  BIN2.FITS          BOOL    TRUE            # Save 2nd binned chip image?
+  PHOTOM             BOOL    FALSE            # Source identification and photometry
+  ASTROM.CHIP        BOOL    FALSE           # Astrometry per chip?
+  ASTROM.MOSAIC      BOOL    FALSE           # Astrometry for mosaic?
+  BACKGROUND         BOOL    FALSE           # Subtract background?
+  CROSSTALK.MEASURE  BOOL    FALSE           # Subtract model background?
+END
+
+# only subtract 2D overscan
+CHIP_SUB_2DBIAS	METADATA
+  BASE.FITS          BOOL    FALSE           # Save base detrended image?
+  BASE.MASK.FITS     BOOL    FALSE           # Save base detrended image?
+  BASE.VARIANCE.FITS BOOL    FALSE           # Save base detrended image?
+  CHIP.FITS          BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.MASK.FITS     BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.VARIANCE.FITS BOOL    TRUE            # Save chip-mosaic-ed image? 
+  OVERSCAN           BOOL    TRUE            # Overscan subtraction
+  OVERSCAN.2D        BOOL    TRUE            # 2D Overscan model
+  NONLIN             BOOL    FALSE            # apply non-linearity correction 
+  BIAS               BOOL    FALSE           # Bias subtraction
+  DARK               BOOL    FALSE            # Dark subtraction
+  NOISEMAP           BOOL    FALSE
+  REMNANCE           BOOL    FALSE           # Remnance masking
+  SHUTTER            BOOL    FALSE           # Shutter correction
+  FLAT               BOOL    FALSE            # Flat-field normalisation
+  MASK               BOOL    TRUE            # Mask bad pixels
+  MASK.BUILD	     BOOL    TRUE	     # Build internal mask?
+  MASK.BURNTOOL      BOOL    TRUE            # Mask potential burntool trails
+  MASK.AUXMASK       BOOL    FALSE           # augment mask with more restrictive auxiliary mask
+  PATTERN.ROW        BOOL    FALSE           # Row pattern correction
+  PATTERN.CELL	     BOOL    FALSE	     # Cell pattern correction
+  PATTERN.CONTINUITY BOOL    FALSE           # Cell pattern coorection using edge continuity
+  FRINGE             BOOL    FALSE            # Fringe subtraction
+  BIN1.FITS          BOOL    TRUE            # Save 1st binned chip image?
+  BIN2.FITS          BOOL    TRUE            # Save 2nd binned chip image?
+  PHOTOM             BOOL    FALSE            # Source identification and photometry
+  ASTROM.CHIP        BOOL    FALSE           # Astrometry per chip?
+  ASTROM.MOSAIC      BOOL    FALSE           # Astrometry for mosaic?
+  BACKGROUND         BOOL    FALSE           # Subtract background?
+  CROSSTALK.MEASURE  BOOL    FALSE           # Subtract model background?
 END
 
