Index: trunk/ippconfig/recipes/filerules-mef.mdc
===================================================================
--- trunk/ippconfig/recipes/filerules-mef.mdc	(revision 26831)
+++ trunk/ippconfig/recipes/filerules-mef.mdc	(revision 26902)
@@ -247,4 +247,5 @@
 PPSUB.OUTPUT.JPEG1      OUTPUT {OUTPUT}.b1.jpg                   JPEG      NONE       FPA        TRUE      NONE
 PPSUB.OUTPUT.JPEG2      OUTPUT {OUTPUT}.b2.jpg                   JPEG      NONE       FPA        TRUE      NONE
+PPSUB.OUTPUT.RESID.JPEG OUTPUT {OUTPUT}.res.jpg                  JPEG      NONE       FPA        TRUE      NONE
 PPSUB.INVERSE           OUTPUT {OUTPUT}.inv.fits                 IMAGE     COMP_SUB   FPA        TRUE      NONE
 PPSUB.INVERSE.MASK      OUTPUT {OUTPUT}.inv.mask.fits            MASK      COMP_MASK  FPA        TRUE      NONE
@@ -252,8 +253,8 @@
 PPSUB.INVERSE.SOURCES   OUTPUT {OUTPUT}.inv.cmf                  CMF       NONE       FPA        TRUE      NONE
 PPSUB.CONFIG            OUTPUT {OUTPUT}.ppSub.mdc                TEXT      NONE       FPA        TRUE      NONE
-PPSUB.INPUT.CONV        OUTPUT {OUTPUT}.inConv.fits              IMAGE     COMP_SUB   FPA        TRUE      NONE
+PPSUB.INPUT.CONV        OUTPUT {OUTPUT}.inConv.fits              IMAGE     COMP_IMG   FPA        TRUE      NONE
 PPSUB.INPUT.CONV.MASK   OUTPUT {OUTPUT}.inConv.mk.fits           MASK      COMP_MASK  FPA        TRUE      NONE
 PPSUB.INPUT.CONV.VARIANCE OUTPUT {OUTPUT}.inConv.wt.fits         VARIANCE  COMP_WT    FPA        TRUE      NONE
-PPSUB.REF.CONV        	OUTPUT {OUTPUT}.refConv.fits             IMAGE     COMP_SUB   FPA        TRUE      NONE
+PPSUB.REF.CONV        	OUTPUT {OUTPUT}.refConv.fits             IMAGE     COMP_IMG   FPA        TRUE      NONE
 PPSUB.REF.CONV.MASK   	OUTPUT {OUTPUT}.refConv.mk.fits          MASK      COMP_MASK  FPA        TRUE      NONE
 PPSUB.REF.CONV.VARIANCE	OUTPUT {OUTPUT}.refConv.wt.fits          VARIANCE  COMP_WT    FPA        TRUE      NONE
@@ -301,4 +302,9 @@
 CENSOR.OUTPUT           OUTPUT {OUTPUT}.smf                      CMF       NONE       FPA        TRUE      MEF
 
+MAGIC.ORIGINAL.PNG      OUTPUT {OUTPUT}_original.png             JPEG      NONE       FPA        TRUE      NONE
+MAGIC.RESIDUAL.PNG      OUTPUT {OUTPUT}_residual.png             JPEG      NONE       FPA        TRUE      NONE
+MAGIC.MASK.PNG          OUTPUT {OUTPUT}_mask.png                 JPEG      NONE       FPA        TRUE      NONE
+MAGIC.DUPLICATE.PNG     OUTPUT {OUTPUT}_duplicate.png            JPEG      NONE       FPA        TRUE      NONE
+
 PPSMOOTH.OUTPUT          OUTPUT {OUTPUT}.{CHIP.NAME}.fits        IMAGE     NONE       CHIP       TRUE      MEF
 PPSMOOTH.OUTPUT.MASK     OUTPUT {OUTPUT}.{CHIP.NAME}.mk.fits     MASK      NONE       CHIP       TRUE      MEF
Index: trunk/ippconfig/recipes/filerules-simple.mdc
===================================================================
--- trunk/ippconfig/recipes/filerules-simple.mdc	(revision 26831)
+++ trunk/ippconfig/recipes/filerules-simple.mdc	(revision 26902)
@@ -197,4 +197,5 @@
 PPSUB.OUTPUT.JPEG1      OUTPUT {OUTPUT}.b1.jpg       JPEG      NONE       FPA        TRUE      NONE
 PPSUB.OUTPUT.JPEG2      OUTPUT {OUTPUT}.b2.jpg       JPEG      NONE       FPA        TRUE      NONE
+PPSUB.OUTPUT.RESID.JPEG OUTPUT {OUTPUT}.res.jpg      JPEG      NONE       FPA        TRUE      NONE
 PPSUB.INVERSE           OUTPUT {OUTPUT}.inv.fits     IMAGE     NONE       FPA        TRUE      NONE
 PPSUB.INVERSE.MASK      OUTPUT {OUTPUT}.inv.mask.fits MASK     NONE       FPA        TRUE      NONE
@@ -202,10 +203,10 @@
 PPSUB.INVERSE.SOURCES   OUTPUT {OUTPUT}.inv.cmf      CMF       NONE       FPA        TRUE      NONE
 PPSUB.CONFIG            OUTPUT {OUTPUT}.ppSub.mdc    TEXT      NONE       FPA        TRUE      NONE
-PPSUB.INPUT.CONV        OUTPUT {OUTPUT}.inConv.fits     IMAGE  COMP_SUB   FPA        TRUE      NONE
-PPSUB.INPUT.CONV.MASK   OUTPUT {OUTPUT}.inConv.mk.fits  MASK   COMP_MASK  FPA        TRUE      NONE
-PPSUB.INPUT.CONV.VARIANCE OUTPUT {OUTPUT}.inConv.wt.fits VARIANCE COMP_WT FPA        TRUE      NONE
-PPSUB.REF.CONV        	OUTPUT {OUTPUT}.refConv.fits    IMAGE  COMP_SUB   FPA        TRUE      NONE
-PPSUB.REF.CONV.MASK   	OUTPUT {OUTPUT}.refConv.mk.fits MASK   COMP_MASK  FPA        TRUE      NONE
-PPSUB.REF.CONV.VARIANCE OUTPUT {OUTPUT}.refConv.wt.fits VARIANCE COMP_WT  FPA        TRUE      NONE
+PPSUB.INPUT.CONV        OUTPUT {OUTPUT}.inConv.fits     IMAGE  NONE       FPA        TRUE      NONE
+PPSUB.INPUT.CONV.MASK   OUTPUT {OUTPUT}.inConv.mk.fits  MASK   NONE       FPA        TRUE      NONE
+PPSUB.INPUT.CONV.VARIANCE OUTPUT {OUTPUT}.inConv.wt.fits VARIANCE NONE    FPA        TRUE      NONE
+PPSUB.REF.CONV        	OUTPUT {OUTPUT}.refConv.fits    IMAGE  NONE       FPA        TRUE      NONE
+PPSUB.REF.CONV.MASK   	OUTPUT {OUTPUT}.refConv.mk.fits MASK   NONE       FPA        TRUE      NONE
+PPSUB.REF.CONV.VARIANCE OUTPUT {OUTPUT}.refConv.wt.fits VARIANCE NONE     FPA        TRUE      NONE
 					     
 PPSTACK.OUTPUT          OUTPUT {OUTPUT}.fits         IMAGE     NONE       FPA        TRUE      NONE
@@ -249,4 +250,9 @@
 CENSOR.OUTPUT           OUTPUT {OUTPUT}.smf          CMF       NONE       FPA        TRUE      MEF
 
+MAGIC.ORIGINAL.PNG      OUTPUT {OUTPUT}_original.png             JPEG      NONE       FPA        TRUE      NONE
+MAGIC.RESIDUAL.PNG      OUTPUT {OUTPUT}_residual.png             JPEG      NONE       FPA        TRUE      NONE
+MAGIC.MASK.PNG          OUTPUT {OUTPUT}_mask.png                 JPEG      NONE       FPA        TRUE      NONE
+MAGIC.DUPLICATE.PNG     OUTPUT {OUTPUT}_duplicate.png            JPEG      NONE       FPA        TRUE      NONE
+
 PPSMOOTH.OUTPUT          OUTPUT {OUTPUT}.fits        IMAGE     NONE       FPA        TRUE      SIMPLE
 PPSMOOTH.OUTPUT.MASK     OUTPUT {OUTPUT}.mk.fits     MASK      NONE       FPA        TRUE      SIMPLE
Index: trunk/ippconfig/recipes/filerules-split.mdc
===================================================================
--- trunk/ippconfig/recipes/filerules-split.mdc	(revision 26831)
+++ trunk/ippconfig/recipes/filerules-split.mdc	(revision 26902)
@@ -122,4 +122,6 @@
 PPBGRESTORE.INPUT       INPUT    @FILES        CHIP       IMAGE
 PPBGRESTORE.BACKMDL     INPUT    @FILES        CHIP       IMAGE
+
+PPVIZPATTERN.INPUT	INPUT	 @FILES	       CHIP	  PATTERN
 
 ### output file definitions
@@ -147,5 +149,5 @@
 PPIMAGE.JPEG1           OUTPUT {OUTPUT}.b1.jpg                   JPEG      NONE       FPA        TRUE      NONE
 PPIMAGE.JPEG2           OUTPUT {OUTPUT}.b2.jpg                   JPEG      NONE       FPA        TRUE      NONE
-
+PPIMAGE.PATTERN		OUTPUT {OUTPUT}.{CHIP.NAME}.ptn		 PATTERN   NONE	      CHIP	 TRUE	   NONE
 PPIMAGE.STATS           OUTPUT {OUTPUT}.{CHIP.NAME}.stats        STATS     NONE       CHIP       TRUE      NONE
 
@@ -214,4 +216,5 @@
 PPSUB.OUTPUT.JPEG1      OUTPUT {OUTPUT}.b1.jpg                   JPEG      NONE       FPA        TRUE      NONE
 PPSUB.OUTPUT.JPEG2      OUTPUT {OUTPUT}.b2.jpg                   JPEG      NONE       FPA        TRUE      NONE
+PPSUB.OUTPUT.RESID.JPEG OUTPUT {OUTPUT}.res.jpg                  JPEG      NONE       FPA        TRUE      NONE
 PPSUB.INVERSE           OUTPUT {OUTPUT}.inv.fits                 IMAGE     COMP_SUB   FPA        TRUE      NONE
 PPSUB.INVERSE.MASK      OUTPUT {OUTPUT}.inv.mask.fits            MASK      COMP_MASK  FPA        TRUE      NONE
@@ -219,8 +222,8 @@
 PPSUB.INVERSE.SOURCES   OUTPUT {OUTPUT}.inv.cmf                  CMF       NONE       FPA        TRUE      NONE
 PPSUB.CONFIG            OUTPUT {OUTPUT}.ppSub.mdc                TEXT      NONE       FPA        TRUE      NONE
-PPSUB.INPUT.CONV        OUTPUT {OUTPUT}.inConv.fits              IMAGE     COMP_SUB   FPA        TRUE      NONE
+PPSUB.INPUT.CONV        OUTPUT {OUTPUT}.inConv.fits              IMAGE     COMP_IMG   FPA        TRUE      NONE
 PPSUB.INPUT.CONV.MASK   OUTPUT {OUTPUT}.inConv.mk.fits           MASK      COMP_MASK  FPA        TRUE      NONE
 PPSUB.INPUT.CONV.VARIANCE OUTPUT {OUTPUT}.inConv.wt.fits         VARIANCE  COMP_WT    FPA        TRUE      NONE
-PPSUB.REF.CONV          OUTPUT {OUTPUT}.refConv.fits             IMAGE     COMP_SUB   FPA        TRUE      NONE
+PPSUB.REF.CONV          OUTPUT {OUTPUT}.refConv.fits             IMAGE     COMP_IMG   FPA        TRUE      NONE
 PPSUB.REF.CONV.MASK     OUTPUT {OUTPUT}.refConv.mk.fits          MASK      COMP_MASK  FPA        TRUE      NONE
 PPSUB.REF.CONV.VARIANCE OUTPUT {OUTPUT}.refConv.wt.fits          VARIANCE  COMP_WT    FPA        TRUE      NONE
@@ -268,4 +271,9 @@
 CENSOR.OUTPUT           OUTPUT {OUTPUT}.smf                      CMF       NONE       FPA        TRUE      MEF
 
+MAGIC.ORIGINAL.PNG      OUTPUT {OUTPUT}_original.png             JPEG      NONE       FPA        TRUE      NONE
+MAGIC.RESIDUAL.PNG      OUTPUT {OUTPUT}_residual.png             JPEG      NONE       FPA        TRUE      NONE
+MAGIC.MASK.PNG          OUTPUT {OUTPUT}_mask.png                 JPEG      NONE       FPA        TRUE      NONE
+MAGIC.DUPLICATE.PNG     OUTPUT {OUTPUT}_duplicate.png            JPEG      NONE       FPA        TRUE      NONE
+
 PPSMOOTH.OUTPUT          OUTPUT {OUTPUT}.{CHIP.NAME}.fits        IMAGE     NONE       CHIP       TRUE      MEF
 PPSMOOTH.OUTPUT.MASK     OUTPUT {OUTPUT}.{CHIP.NAME}.mk.fits     MASK      NONE       CHIP       TRUE      MEF
@@ -276,5 +284,6 @@
 
 PPVIZPSF.OUTPUT		OUTPUT {OUTPUT}.{CHIP.NAME}.fits         IMAGE     NONE       CHIP       TRUE      NONE
-
+PPVIZPATTERN.OUTPUT	OUTPUT {OUTPUT}.{CHIP.NAME}.fits	 IMAGE	   NONE	      CHIP	 TRUE	   NONE
+PPVIZPATTERN.CHIP	OUTPUT {OUTPUT}.{CHIP.NAME}.ch.fits	 IMAGE	   NONE	      CHIP	 TRUE	   NONE
 
 # {FPA.OBS}
Index: trunk/ippconfig/recipes/jpeg.mdc
===================================================================
--- trunk/ippconfig/recipes/jpeg.mdc	(revision 26831)
+++ trunk/ippconfig/recipes/jpeg.mdc	(revision 26902)
@@ -41,4 +41,11 @@
 END
 
+PPSUB.OUTPUT.RESID.JPEG	METADATA
+	COLORMAP	STR	-greyscale
+	SCALE.MODE	STR	RANGE
+	SCALE.MIN	F32	 -5.0
+	SCALE.MAX	F32	 +5.0
+END
+
 PPSTACK.OUTPUT.JPEG1	METADATA
 	COLORMAP	STR	-greyscale
Index: trunk/ippconfig/recipes/ppImage.config
===================================================================
--- trunk/ippconfig/recipes/ppImage.config	(revision 26831)
+++ trunk/ippconfig/recipes/ppImage.config	(revision 26902)
@@ -18,5 +18,10 @@
 MASK.BURNTOOL      BOOL    FALSE           # Mask potential burntool trails
 VARIANCE.BUILD     BOOL    FALSE           # Build internal variance image
-PATTERN            BOOL    FALSE           # Fit and remove pattern noise?
+PATTERN.ROW        BOOL    FALSE           # Row pattern correction
+PATTERN.ROW.SUBSET METADATA		   # Menu of chips and/or cells for row pattern correction
+END
+PATTERN.CELL       BOOL    FALSE           # Cell pattern correction
+PATTERN.CELL.SUBSET METADATA		   # Menu of chips and/or cells for cell pattern correction
+END
 PATTERN.SUBSET	   METADATA
 END
@@ -31,4 +36,5 @@
 TILTYSTREAK.APPLY  BOOL    FALSE           # apply the 'tiltystreak' tool
 
+GAIN.OVERRIDE		BOOL	TRUE		# Override a non-finite gain?
 
 TILTYSTREAK.BY.CLASS METADATA              # apply the 'tiltystreak' tool
@@ -89,10 +95,12 @@
 
 # Pattern subtraction options
-PATTERN.ORDER      S32     2               # Polynomial order
-PATTERN.ITER       S32     4               # Rejection iterations
-PATTERN.REJ        F32     2.5             # Rejection threshold
-PATTERN.THRESH     F32	   20.0		   # Ignore threshold
-PATTERN.MEAN       STR     SAMPLE_MEAN     # Statistic for mean
-PATTERN.STDEV      STR     SAMPLE_STDEV    # Statistic for standard deviation
+PATTERN.ROW.ORDER      S32     2               # Polynomial order for row pattern
+PATTERN.ROW.ITER       S32     4               # Rejection iterations for row pattern
+PATTERN.ROW.REJ        F32     2.5             # Rejection threshold for row pattern
+PATTERN.ROW.THRESH     F32     20.0            # Ignore threshold for row pattern
+PATTERN.ROW.MEAN       STR     SAMPLE_MEAN     # Statistic for mean for row pattern
+PATTERN.ROW.STDEV      STR     SAMPLE_STDEV    # Statistic for standard deviation for row pattern
+PATTERN.CELL.BG	       STR     ROBUST_MEDIAN   # Statistic for background for cell pattern
+PATTERN.CELL.MEAN      STR     SAMPLE_MEDIAN   # Statistic for mean for cell pattern
 
 # Fringe subtraction options
@@ -584,26 +592,26 @@
 # Overscan, bias, dark, shutter
 PPIMAGE_OBDS       METADATA
-  BASE.FITS        BOOL    TRUE            # Save base detrended image?
-  BASE.MASK.FITS   BOOL    TRUE            # Save base detrended image?
+  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
-  BIAS             BOOL    TRUE            # Bias subtraction
-  DARK             BOOL    TRUE            # Dark subtraction
-  SHUTTER          BOOL    FALSE           # Shutter correction
-  FLAT             BOOL    FALSE           # Flat-field normalisation
-  MASK             BOOL    FALSE           # Mask bad pixels
-  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?
+  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
+  BIAS               BOOL    TRUE            # Bias subtraction
+  DARK               BOOL    TRUE            # Dark subtraction
+  SHUTTER            BOOL    FALSE           # Shutter correction
+  FLAT               BOOL    FALSE           # Flat-field normalisation
+  MASK               BOOL    FALSE           # Mask bad pixels
+  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
 
 # used for the pre-mask version of flat-field processing
-PPIMAGE_FLATPROC_PREMASK       METADATA
+PPIMAGE_FLATPROC_PREMASK     METADATA
   BASE.FITS          BOOL    TRUE            # Save base detrended image?
   BASE.MASK.FITS     BOOL    TRUE            # Save base detrended image?
@@ -1726,5 +1734,6 @@
   MASK             BOOL    TRUE            # Mask bad pixels
   FRINGE           BOOL    FALSE           # Fringe subtraction
-  PATTERN          BOOL    FALSE            # Subtract pattern noise
+  PATTERN.ROW      BOOL    FALSE           # Subtract pattern noise
+  PATTERN.CELL     BOOL    FALSE           # Subtract pattern noise
   BIN1.FITS        BOOL    TRUE            # Save 1st binned chip image?
   BIN2.FITS        BOOL    TRUE            # Save 2nd binned chip image?
@@ -1750,5 +1759,6 @@
   FLAT               BOOL    TRUE            # Flat-field normalisation
   MASK               BOOL    TRUE            # Mask bad pixels
-  PATTERN            BOOL    FALSE            # Subtract pattern noise?
+  PATTERN.ROW        BOOL    FALSE           # Subtract pattern noise
+  PATTERN.CELL       BOOL    FALSE           # Subtract pattern noise
   FRINGE             BOOL    TRUE            # Fringe subtraction
   BIN1.FITS          BOOL    TRUE            # Save 1st binned chip image?
Index: trunk/ippconfig/recipes/ppSim.config
===================================================================
--- trunk/ippconfig/recipes/ppSim.config	(revision 26831)
+++ trunk/ippconfig/recipes/ppSim.config	(revision 26902)
@@ -53,9 +53,16 @@
 STARS.MAG	F32	15.5		# Brightest magnitude for fake stars (choose based on real catalog limit)
 STARS.DENSITY	F32      1.0		# Stellar density (per square degree) at the brightest magnitude
-STARS.SIGMA.LIM F32      5.0            # significance of faintest sources
+STARS.SIGMA.LIM F32      0.1            # significance of faintest sources
 
 STARS.FLAT.LUM  BOOL    FALSE           # use a (non-physical) constant number of stars per mag bin?
 STARS.FLAT.NUM  S32     5000            # number of stars to generate for flat magnitude distribution
 PSF.MODEL       STR     PS_MODEL_QGAUSS
+PSF.ARATIO      F32     1.0		# minor / major (0.0 - 1.0)
+PSF.THETA	F32	0.0
+
+STARS.GRID      BOOL    FALSE		# Add grid of fake stars with constant flux
+STARS.GRID.MAG	F32	14.0		# magnitude of fake grid stars
+STARS.GRID.DX	S32	100		# X spacing of fake grid stars
+STARS.GRID.DY	S32	100		# Y spacing of fake grid stars
 
 GALAXY.FAKE     BOOL    FALSE		# Generate fake galaxies?
@@ -94,5 +101,5 @@
 
 ### The following options are used if not defined by the concepts (e.g., usually read from headers)
-GAIN		F32	1.0		# Default gain (e/ADU)
+GAIN		F32	NAN		# Default gain (e/ADU)
 READNOISE	F32	10.0		# Default read noise (e)
 OVERSCAN.SIZE	S32	32		# Default overscan columns
Index: trunk/ippconfig/recipes/ppStack.config
===================================================================
--- trunk/ippconfig/recipes/ppStack.config	(revision 26831)
+++ trunk/ippconfig/recipes/ppStack.config	(revision 26902)
@@ -8,9 +8,13 @@
 COMBINE.SYS	F32	0.1		# Relative systematic error in combination
 COMBINE.DISCARD	F32	0.2		# Discard fraction for Olympic weighted mean
+
+# XXX which of these is right?
+MASK.VAL	STR	MASK.VALUE,CONV.BAD,GHOST	# Mask value of input bad pixels
 MASK.IN		STR	MASK.VALUE,CONV.BAD,GHOST	# Mask value of input bad pixels
+
 MASK.SUSPECT	STR	SUSPECT,CONV.POOR	# Mask value of suspect pixels
 MASK.BAD	STR	BLANK		# Mask value to give bad pixels
 MASK.POOR	STR	CONV.POOR	# Mask value to give poor pixels
-POOR.FRACTION	F32	0.01		# Maximum fraction of bad variance for poor pixels
+POOR.FRACTION	F32	0.25		# Maximum fraction of bad variance for poor pixels
 THRESHOLD.MASK	F32	0.5		# Threshold for mask deconvolution (0..1)
 DECONV.LIMIT	F32	1.3		# Deconvolution fraction for rejecting entire image
@@ -36,4 +40,5 @@
 PHOT.FRAC	F32	0.9		# Minimum fraction of good pixels
 
+ZP		BOOL	TRUE		# Match zero points?
 ZP.RADIUS	F32	4.0		# Radius (pixels) for matching sources
 ZP.ITER.1	S32	5		# Iterations for zero point; pass 1
@@ -56,9 +61,9 @@
 	y	F32	0.0
 END
-	
+
 PSF.INSTANCES	S32	15		# Number of instances for PSF generation
 PSF.RADIUS	F32	20.0		# Radius for PSF generation
 PSF.ORDER	S32	1		# Order of spatial variation for PSF generation
-PSF.MODEL	STR	PS_MODEL_PS1_V1	# Model for PSF generation
+PSF.MODEL	STR	PS_MODEL_GAUSS	# Model for PSF generation
 
 TEMP.IMAGE	STR	conv.im.fits	# Suffix for temporary convolved images
Index: trunk/ippconfig/recipes/ppSub.config
===================================================================
--- trunk/ippconfig/recipes/ppSub.config	(revision 26831)
+++ trunk/ippconfig/recipes/ppSub.config	(revision 26902)
@@ -1,17 +1,20 @@
 ### Recipe file for ppSub
 
-KERNEL.TYPE	STR	ISIS		# Kernel type to use (POIS|ISIS|SPAM|FRIES|GUNK|RINGS)
-KERNEL.SIZE     S32	15		# Kernel half-size (pixels)
+KERNEL.TYPE	STR	ISIS     	# Kernel type to use (POIS|ISIS|SPAM|FRIES|GUNK|RINGS)
+KERNEL.SIZE     S32	20		# Kernel half-size (pixels)
 SPATIAL.ORDER   S32	1		# Spatial polynomial order
 REGION.SIZE	F32	0		# Iso-kernel region size (pixels)
 SOURCE.RADIUS	F32	3.0		# Source matching radius (pixels)
-STAMP.SPACING   F32	400		# Typical spacing between stamps (pixels)
-STAMP.FOOTPRINT S32	20		# Size of stamps (pixels)
+STAMP.SPACING   F32	300		# Typical spacing between stamps (pixels)
+STAMP.FOOTPRINT S32	25		# Size of stamps (pixels)
 STAMP.THRESHOLD F32	5		# Flux threshold for stamps (stdev above background)
 STRIDE		S32	100		# Size of convolution patches (pixels)
-ITER            S32	10		# Number of rejection iterations
+ITER            S32	2		# Number of rejection iterations
 REJ             F32	2.5		# Rejection level (std dev)
 KERNEL.ERR	F32	0.05		# Relative systematic error in kernel
 SYS.ERR		F32	0.1		# Relative systematic error in images
+SKY.ERR		F32	0.0		# Relative systematic error in images
+NORM.FRAC	F32	0.03		# Fraction of window for normalisation window
+COVAR.FRAC	F32	0.01		# Fraction of kernel to truncate before calculating covariance
 
 MASK.VAL	STR	MASK.VALUE,CONV.BAD	# Mask value for input
@@ -20,8 +23,28 @@
 
 LOW.THRESHOLD	F32	4.0	        # Mask pixels below this threshold (std dev)
-POOR.FRACTION	F32	0.10		# Maximum fraction of bad weight for poor pixels
+POOR.FRACTION	F32	0.20		# Maximum fraction of bad weight for poor pixels
 BADFRAC		F32	0.95		# Maximum fraction of bad pixels
-@ISIS.WIDTHS	F32	3 5 7 10	# Gaussian FWHMs for ISIS kernels
-@ISIS.ORDERS	S32	2 2 2 2		# Polynomial orders for ISIS kernels
+
+# Gene's choice: multiplying by 1.75
+#@ISIS.WIDTHS	F32	1.8 3.3 5.8 10.2 17.9	# Gaussian FWHMs for ISIS kernels
+#@ISIS.ORDERS	S32	2 2 2 2 2		# Polynomial orders for ISIS kernels
+# (pi/2)^i
+#@ISIS.WIDTHS	F32	1.6 2.5 3.9 6.1 9.6 15.0	# Gaussian FWHMs for ISIS kernels
+#@ISIS.ORDERS	S32	2 2 2 2 2 2		# Polynomial orders for ISIS kernels
+# (e/2)^i for even i
+#@ISIS.WIDTHS	F32	1.4 3.4 6.3 11.6	# Gaussian FWHMs for ISIS kernels
+#@ISIS.ORDERS	S32	6 4 4 2		# Polynomial orders for ISIS kernels
+# 1.69^i
+#@ISIS.WIDTHS	F32	2.9 4.8 8.2 13.8 23.3 # Gaussian FWHMs for ISIS kernels
+#@ISIS.ORDERS	S32	4 2 2 2 2	# Polynomial orders for ISIS kernels
+
+# Paul's values
+# @ISIS.WIDTHS	F32	2.9 4.8 8.2 13.8 # Gaussian FWHMs for ISIS kernels
+# @ISIS.ORDERS	S32	4 2 2 2		# Polynomial orders for ISIS kernels
+
+# Gene's values
+@ISIS.WIDTHS	F32	2.9 4.8 8.2     # Gaussian FWHMs for ISIS kernels
+@ISIS.ORDERS	S32	4   2   2       # Polynomial orders for ISIS kernels
+
 SPAM.BINNING	S32	2		# Binning in outer region for SPAM kernels
 INNER		S32	5		# Inner half-size for SPAM and FRIES kernels
@@ -40,25 +63,33 @@
 RENORM		BOOL	TRUE		# Renormalise weight maps?
 RENORM.NUM	S32	100000		# Number of samples for renormalisation
-RENORM.MIN	F32	0.5		# Minimum value for renormlisation
-RENORM.MAX	F32	2.0		# Maximum value for renormalisation
+RENORM.MIN	F32	0.2		# Minimum value for renormalization
+RENORM.MAX	F32	5.0		# Maximum value for renormalization
+
+SCALE		BOOL	TRUE		# Scale kernel parameters by the seeing?
+SCALE.REF	F32	9.0		# Reference for kernel parameter scaling
+SCALE.MIN	F32	0.7		# Minimum scale value
+SCALE.MAX	F32	1.2		# Maximum scale value
 
 INTERPOLATION	STR	LANCZOS3	# Interpolation mode for bad pixels
 
-DUAL		BOOL	FALSE		# Dual convolution?
+DUAL		BOOL	TRUE		# Dual convolution?
 INVERSE		BOOL	FALSE		# Generate inverse subtraction?
 PHOTOMETRY	BOOL	FALSE		# Perform photometry?
 SAVE.CONVOLVED	BOOL	TRUE		# Save convolved images?
 
+
 # Recipe overrides for STACK
 STACK	METADATA
-	KERNEL.SIZE     S32	15	# Kernel half-size (pixels)
-	STAMP.SPACING   F32	300	# Typical spacing between stamps (pixels)	
-	STAMP.FOOTPRINT S32	15	# Size of stamps (pixels)
-	POOR.FRACTION	F32	0.1	# Maximum fraction of bad weight for poor pixels
-	SPATIAL.ORDER   S32	0	# Spatial polynomial order
+	KERNEL.TYPE	STR	ISIS	# Kernel type
+	SCALE.REF	F32	9.0	# Reference for kernel parameter scaling
 END
 
 # Recipe overrides for DIFF
 DIFF	METADATA
+END
+
+# Recipe overrides for DIFF
+DIFF_MAGICTEST_V0	METADATA
+	SPATIAL.ORDER   S32	0		# Spatial polynomial order
 END
 
@@ -73,2 +104,17 @@
 	PHOTOMETRY	BOOL	FALSE
 END
+
+TEST.ISIS METADATA
+  KERNEL.TYPE	STR	ISIS_RADIAL	# Kernel type to use (POIS|ISIS|SPAM|FRIES|GUNK|RINGS)
+  @ISIS.WIDTHS	F32	2.9 4.8 8.2     # Gaussian FWHMs for ISIS kernels
+  @ISIS.ORDERS	S32	4   2   2       # Polynomial orders for ISIS kernels
+END
+
+TEST.RADIAL METADATA
+END
+
+TEST.HERM METADATA
+END
+
+TEST.DECON METADATA
+END
Index: trunk/ippconfig/recipes/psastro.config
===================================================================
--- trunk/ippconfig/recipes/psastro.config	(revision 26831)
+++ trunk/ippconfig/recipes/psastro.config	(revision 26902)
@@ -132,6 +132,8 @@
 REFSTAR_MASK_SATSTAR_MAG_SLOPE  F32  10.0
 REFSTAR_MASK_SATSTAR_POS_ZERO   F32   0.0
-REFSTAR_MASK_SATSPIKE_MAG_SLOPE F32  80.0
-REFSTAR_MASK_SATSPIKE_MAG_MAX   F32 -17.0
+# spikeLength = 10**(SLOPE*(MAG_MAX - InstMag)) - OFFSET
+REFSTAR_MASK_SATSPIKE_MAG_SLOPE F32 -0.116
+REFSTAR_MASK_SATSPIKE_MAG_MAX   F32 -0.91
+REFSTAR_MASK_SATSPIKE_OFFSET    F32   0.0
 REFSTAR_MASK_SATSPIKE_WIDTH     F32  10.0
 
Index: trunk/ippconfig/recipes/reductionClasses.mdc
===================================================================
--- trunk/ippconfig/recipes/reductionClasses.mdc	(revision 26831)
+++ trunk/ippconfig/recipes/reductionClasses.mdc	(revision 26902)
@@ -52,5 +52,5 @@
 	DOMEFLAT_PREMASK_JPEG_RESID	STR	FLAT_RESID
 
-	SKYFLAT_PREMASK_PROCESS		STR	PPIMAGE_FLATPROC_PREMASK 
+	SKYFLAT_PREMASK_PROCESS		STR	PPIMAGE_FLATPROC_PREMASK
 	SKYFLAT_PREMASK_RESID		STR	PPIMAGE_F
 	SKYFLAT_PREMASK_VERIFY		STR	PPIMAGE_F
@@ -151,4 +151,21 @@
 	STACK_PSPHOT	STR	STACK
 	DIFF_PPSUB	STR	DIFF
+	DIFF_PSPHOT	STR	DIFF
+	JPEG_BIN1	STR	PPIMAGE_J1
+	JPEG_BIN2	STR	PPIMAGE_J2
+	FAKEPHOT	STR	FAKEPHOT
+	ADDSTAR		STR	ADDSTAR
+	PSASTRO		STR	DEFAULT_RECIPE
+END
+
+# basic science analysis
+MAGICTEST.V0		METADATA
+	CHIP_PPIMAGE	STR	CHIP_PATTERN
+	CHIP_PSPHOT	STR	CHIP
+	WARP_PSWARP	STR	WARP
+	STACK_PPSTACK	STR	STACK
+	STACK_PPSUB	STR	STACK
+	STACK_PSPHOT	STR	STACK
+	DIFF_PPSUB	STR	DIFF_MAGICTEST_V0
 	DIFF_PSPHOT	STR	DIFF
 	JPEG_BIN1	STR	PPIMAGE_J1
