from lsst.daf.persistence.butler import Butler
from pfs.datamodel.drp import PfsObject
from pfs.datamodel.pfsConfig import TargetType
from pfs.datamodel.target import TargetData, TargetObservations
from pfs.datamodel.masks import MaskHelper
import numpy as np

# Changing the highest digit to 8 or higher will lead to the error
objId=0x7fffffffffffffff

# Change the following to a local writeable directory.
#
# You will also need to create a CALIB subdirectory 
# and _mapper file under that directory as follows:
#
# mkdir $OUTDIR
# mkdir $OUTDIR/CALIB
# echo "lsst.obs.pfs.PfsMapper" > $OUTDIR/_mapper
#  
out_dir = "/Users/hassans/temp/jupyter-notebooks/butler-root"

target = TargetData(123, 123, 123,
                            objId, 123, 123,
                            TargetType.SKY, {})

obs = TargetObservations([{'visit':123}], np.array([123]), 
    np.zeros((1,2)), np.array([]))

mp={'name':0}
mh=MaskHelper(**mp)

pfsObject=PfsObject(target, obs, np.zeros((1)), np.zeros((1)), 
    np.zeros((1)), np.zeros((1)), np.zeros((3,1)), 
    np.zeros((3,1)), mh)

butler=Butler(out_dir)
butler.put(pfsObject, "pfsObject", pfsObject.getIdentity())


