Index: /trunk/ippToPsps/config/tables.DF.vot
===================================================================
--- /trunk/ippToPsps/config/tables.DF.vot	(revision 37105)
+++ /trunk/ippToPsps/config/tables.DF.vot	(revision 37106)
@@ -303,4 +303,26 @@
       </DATA>
     </TABLE>
-  </RESOURCE>
+    <TABLE name="SkinnyObject">
+      <DESCRIPTION>VOTable description of PSPS table SkinnyObject</DESCRIPTION>
+      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
+      <FIELD name="objID" arraysize="1" datatype="long">
+        <DESCRIPTION>ODM object identifier index</DESCRIPTION>
+      </FIELD>
+      <FIELD name="ippObjID" arraysize="1" datatype="long">
+        <DESCRIPTION>IPP object number</DESCRIPTION>
+      </FIELD>
+      <FIELD name="projectionCellID" arraysize="1" datatype="int">
+        <DESCRIPTION>projection cell identifier at discovery time</DESCRIPTION>
+      </FIELD>
+      <FIELD name="dataRelease" arraysize="1" datatype="unsignedByte">
+        <DESCRIPTION>Data release to propagate to the object</DESCRIPTION>
+      </FIELD>
+      <FIELD name="surveyID" arraysize="1" datatype="unsignedByte">
+        <DESCRIPTION>surveyID &lt;/coluumn&gt;</DESCRIPTION>
+      </FIELD>
+      <DATA>
+        <TABLEDATA></TABLEDATA>
+      </DATA>
+    </TABLE>
+   </RESOURCE>
 </VOTABLE>
Index: /trunk/ippToPsps/config/tables.FW.vot
===================================================================
--- /trunk/ippToPsps/config/tables.FW.vot	(revision 37105)
+++ /trunk/ippToPsps/config/tables.FW.vot	(revision 37106)
@@ -352,4 +352,26 @@
       </DATA>
     </TABLE>
-  </RESOURCE>
+    <TABLE name="SkinnyObject">
+      <DESCRIPTION>VOTable description of PSPS table SkinnyObject</DESCRIPTION>
+      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
+      <FIELD name="objID" arraysize="1" datatype="long">
+        <DESCRIPTION>ODM object identifier index</DESCRIPTION>
+      </FIELD>
+      <FIELD name="ippObjID" arraysize="1" datatype="long">
+        <DESCRIPTION>IPP object number</DESCRIPTION>
+      </FIELD>
+      <FIELD name="projectionCellID" arraysize="1" datatype="int">
+        <DESCRIPTION>projection cell identifier at discovery time</DESCRIPTION>
+      </FIELD>
+      <FIELD name="dataRelease" arraysize="1" datatype="unsignedByte">
+        <DESCRIPTION>Data release to propagate to the object</DESCRIPTION>
+      </FIELD>
+      <FIELD name="surveyID" arraysize="1" datatype="unsignedByte">
+        <DESCRIPTION>surveyID &lt;/coluumn&gt;</DESCRIPTION>
+      </FIELD>
+      <DATA>
+        <TABLEDATA></TABLEDATA>
+      </DATA>
+    </TABLE>
+   </RESOURCE>
 </VOTABLE>
Index: /trunk/ippToPsps/config/tables.P2.vot
===================================================================
--- /trunk/ippToPsps/config/tables.P2.vot	(revision 37105)
+++ /trunk/ippToPsps/config/tables.P2.vot	(revision 37106)
@@ -558,4 +558,26 @@
       </DATA>
     </TABLE>
+    <TABLE name="SkinnyObject">
+      <DESCRIPTION>VOTable description of PSPS table SkinnyObject</DESCRIPTION>
+      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
+      <FIELD name="objID" arraysize="1" datatype="long" unit="unknown">
+        <DESCRIPTION>ODM object identifier index</DESCRIPTION>
+      </FIELD>
+      <FIELD name="ippObjID" arraysize="1" datatype="long" unit="unknown">
+        <DESCRIPTION>IPP object number</DESCRIPTION>
+      </FIELD>
+      <FIELD name="projectionCellID" arraysize="1" datatype="int" unit="unknown">
+        <DESCRIPTION>projection cell identifier at discovery time</DESCRIPTION>
+      </FIELD>
+      <FIELD name="dataRelease" arraysize="1" datatype="unsignedByte" unit="unknown">
+        <DESCRIPTION>Data release to propagate to the object</DESCRIPTION>
+      </FIELD>
+      <FIELD name="surveyID" arraysize="1" datatype="unsignedByte" unit="unknown">
+        <DESCRIPTION>surveyID &lt;/coluumn&gt;</DESCRIPTION>
+      </FIELD>
+      <DATA>
+        <TABLEDATA></TABLEDATA>
+      </DATA>
+    </TABLE>
   </RESOURCE>
 </VOTABLE>
Index: /trunk/ippToPsps/config/tables.ST.vot
===================================================================
--- /trunk/ippToPsps/config/tables.ST.vot	(revision 37105)
+++ /trunk/ippToPsps/config/tables.ST.vot	(revision 37106)
@@ -4214,4 +4214,26 @@
       </DATA>
     </TABLE>
+    <TABLE name="SkinnyObject">
+      <DESCRIPTION>VOTable description of PSPS table SkinnyObject</DESCRIPTION>
+      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
+      <FIELD name="objID" arraysize="1" datatype="long">
+        <DESCRIPTION>ODM object identifier index</DESCRIPTION>
+      </FIELD>
+      <FIELD name="ippObjID" arraysize="1" datatype="long">
+        <DESCRIPTION>IPP object number</DESCRIPTION>
+      </FIELD>
+      <FIELD name="projectionCellID" arraysize="1" datatype="int">
+        <DESCRIPTION>projection cell identifier at discovery time</DESCRIPTION>
+      </FIELD>
+      <FIELD name="dataRelease" arraysize="1" datatype="unsignedByte">
+        <DESCRIPTION>Data release to propagate to the object</DESCRIPTION>
+      </FIELD>
+      <FIELD name="surveyID" arraysize="1" datatype="unsignedByte">
+        <DESCRIPTION>surveyID &lt;/coluumn&gt;</DESCRIPTION>
+      </FIELD>
+      <DATA>
+        <TABLEDATA></TABLEDATA>
+      </DATA>
+    </TABLE>
   </RESOURCE>
 </VOTABLE>
Index: /trunk/ippToPsps/jython/detectionbatch.py
===================================================================
--- /trunk/ippToPsps/jython/detectionbatch.py	(revision 37105)
+++ /trunk/ippToPsps/jython/detectionbatch.py	(revision 37106)
@@ -547,4 +547,33 @@
 
         self.scratchDb.updateAllRows(tableName, "dataRelease", str(self.skychunk.dataRelease))
+    '''
+    Populates the SkinnyObject table for this OTA
+    '''
+    def populateSkinnyObjectTable(self, ota):
+
+        tableName = "SkinnyObject_" + ota
+        
+        # drop then re-create table
+        self.scratchDb.dropTable(tableName)
+        sql = "CREATE TABLE " + tableName + " LIKE SkinnyObject"
+        try: self.scratchDb.execute(sql)
+        except: pass
+
+        # insert all detections into table
+        sql = "INSERT INTO " + tableName + " ( \
+               objID \
+               ,ippObjID \
+               ,surveyID \
+               ) \
+               SELECT \
+               objID \
+               ,ippObjID \
+               ,surveyID \
+               FROM Detection_" + ota
+        self.scratchDb.execute(sql)
+
+        self.scratchDb.updateAllRows(tableName, "dataRelease", str(self.skychunk.dataRelease))
+
+
 
     '''
@@ -854,5 +883,7 @@
         
         #self.logger.info("updated imagedata")
-        
+        self.populateSkinnyObjectTable(chipname)
+        self.logger.info("updated skinnyobject")
+ 
         self.populateDetectionCalibTable(chipname)
         #self.logger.info("updated detectioncalibtable")
@@ -865,5 +896,8 @@
         self.logger.info("export Detection")
 
-        
+        self.tablesToExport.append("SkinnyObject_" + chipname)
+        self.logger.info("export Skinny")
+
+
         tables.append("Detection_" + chipname)
         self.logger.info("updated detectioncalibtable")
Index: /trunk/ippToPsps/jython/stackbatch.py
===================================================================
--- /trunk/ippToPsps/jython/stackbatch.py	(revision 37105)
+++ /trunk/ippToPsps/jython/stackbatch.py	(revision 37106)
@@ -1,3 +1,3 @@
-#!/usr/bin/env jython
+q#!/usr/bin/env jython
 
 import os.path
@@ -215,5 +215,5 @@
        self.scratchDb.dropTable("StackObject")
        self.logger.infoPair("dropping table:","StackModelFit")
-              
+       self.scratchDb.dropTable("SkinnyObject")
        self.scratchDb.dropTable("StackModelFit")
        self.logger.infoPair("dropping table:","StackApFlx")
@@ -785,5 +785,26 @@
         self.logger.infoPair("Deleting", "entries with StackObject.objID = 0")
         # response = raw_input("deleted objID is 0 ")
-        
+    '''
+    Populates the SkinnyObject table
+    '''
+    def populateSkinnyObject(self):
+
+        self.logger.infoPair("Procesing table", "SkinnyObject")
+
+        sql = "INSERT INTO SkinnyObject (\
+               objID \
+               ,ippObjID \
+               ,projectionCellID \
+               ) \
+               SELECT \
+               DISTINCT objID \
+               ,ippObjID \
+               ,projectionCellID \
+               FROM StackDetection"
+        self.scratchDb.execute(sql)
+
+        self.scratchDb.updateAllRows("SkinnyObject", "surveyID", str(self.surveyID))
+        self.scratchDb.updateAllRows("SkinnyObject", "dataRelease", str(self.skychunk.dataRelease))
+         
 
     '''
@@ -1307,4 +1328,6 @@
 
         ##if self.totalDetections < 1: 
+        #self.logger.infoPair("populating","SkinnyObject") 
+        self.populateSkinnyObject()
 
             ##self.logger.error("No detections to publish")
@@ -1314,5 +1337,5 @@
         self.tablesToExport.append("StackModelFit")
         self.tablesToExport.append("StackApFlx")
-
+        self.tablesToExport.append("SkinnyObject")
         self.logger.infoPair("finishing","populatePspsTables"); 
         return True
