Quadrant<->CCD<->FocalPlane#
The ZTF camera has three levels of data: 1. the focal plane
, made of 16 CCD
s 2. the CCD
s that are made of 4 read-out channel, called quadrant
s 3. the quadrant
s.
Concept#
ztfimg objects and their connections#
The data and header access is made at the Quadrant
level. A CCD
object is a collection of quadrant
s, while the FocalPlane
is a collection of CCD
s.
Under usual ztfquery
file structure environment, it is easy to retrieve the filepath of various elements of the CCD or focal plane given a quadrant filename. For instance, given any quadrant filename, the from_single_filename()
method of CCD
and FocalPlane
uses ztfquery
to access the 3 missing quadrants to form a CCD
or the 63 ones to form the FocalPlane
.
Conversely, since CCD
is a collection of Quadrant
, their .quadrants
attribute is a dictionary of Quadrant
and the get_quadrant(qid)
method provides an easy access to any of them. Similarly, FocalPlane
have a .ccds
attribute and get_ccd(ccdid)
and get_quadrant(rcid)
methods enable to access a given CCD
or Quadrant
object. Careful, the CCD method get_quadrant(qid)
expects a qid (1->4) while the FocalPlane get_quadrant(rcid)
methods expects a
rcid (0->63).
To conserve the symmetry, a Quadrant
object has a get_ccd()
method that calls CCD.from_single_filename()
using it’s own filename and a get_focalplane
that does the same for FocalPlane
; a CCD
also has a get_focalplane
doing the same using its first quadrant’s filename.
Base, Raw and Science#
The aforementioned connections between Quadrant
, CCD
and FocalPlane
hold for any kind of Images (Base, Raw or Science). A ScienceQuadrant
will build a ScienceCCD
and ScienceFocalPlane
when calling get_ccd()
or get_focalplane()
and so on.
Careful with memory#
A FocalPlane
is made of 64 quadrants and ScienceQuadrant
are made of image + mask data. So loading a FocalPlane
can blow up your RAM. It is thus suggested to use dask when working with FocalPlane
s and make sure not to compute too large data on a single memory node ; data
from FocalPlane ~5GB.
ScienceQuadrant -> ScienceCCD -> ScienceFocalPlane#
[1]:
import ztfimg
qimg = ztfimg.ScienceQuadrant.from_filename("ztf_20200924431759_000655_zr_c13_o_q3_sciimg.fits",
as_path=False)
[2]:
qimg.filename
[2]:
'ztf_20200924431759_000655_zr_c13_o_q3_sciimg.fits'
[3]:
_ = qimg.show()
Now let’s get its CCD.#
you have two ways: 1. The manual version using from_single_filename
[4]:
# use as_path=False to make sure it download the missing data
ccd = ztfimg.ScienceCCD.from_single_filename(qimg.filename, as_path=False)
The shortcut
get_ccd()
method. (it does the manual version for you)
[5]:
ccd = qimg.get_ccd()
let’s have a look
[6]:
ccd.get_data()
[6]:
array([[ 44.91321 , 167.88715 , 206.81393 , ..., 174.49977 ,
135.91026 , 48.02796 ],
[ 16.670918 , 78.78005 , 138.10672 , ..., 152.18134 ,
103.460335 , 18.992094 ],
[ 17.609827 , 87.123825 , 152.8368 , ..., 166.77153 ,
105.01655 , 25.638815 ],
...,
[ 4.8058763, 49.65675 , 99.17695 , ..., 149.64104 ,
96.56672 , 16.636278 ],
[ 8.345967 , 48.599697 , 96.20216 , ..., 151.22047 ,
100.14231 , 20.201305 ],
[ 8.68024 , 56.990013 , 116.7488 , ..., 162.11705 ,
126.70934 , 30.59527 ]], dtype=float32)
[7]:
ccd.filenames
[7]:
['ztf_20200924431759_000655_zr_c13_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c13_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c13_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c13_o_q4_sciimg.fits']
[8]:
_ = ccd.show()
[9]:
ccd.quadrants
[9]:
{1: <ztfimg.science.ScienceQuadrant at 0x15a8faeb0>,
2: <ztfimg.science.ScienceQuadrant at 0x15a918070>,
3: <ztfimg.science.ScienceQuadrant at 0x15a95ccd0>,
4: <ztfimg.science.ScienceQuadrant at 0x15a91dc10>}
Now let’s get the FocalPlane#
We will use dask to manage the RAM.
[11]:
import dask
from dask.distributed import Client
client = Client()
As for quadrant->ccd, the manual loading exists as well as the shortcut get_focalplane()
method ; let’s use this one
[12]:
# you could have used qimg.get_focalplane(use_dask=True), it is strictly equivalent
fp = ccd.get_focalplane(use_dask=True)
[13]:
fp.filenames
[13]:
['ztf_20200924431759_000655_zr_c01_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c01_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c01_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c01_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c02_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c02_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c02_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c02_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c03_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c03_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c03_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c03_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c04_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c04_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c04_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c04_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c05_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c05_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c05_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c05_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c06_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c06_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c06_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c06_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c07_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c07_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c07_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c07_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c08_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c08_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c08_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c08_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c09_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c09_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c09_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c09_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c10_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c10_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c10_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c10_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c11_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c11_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c11_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c11_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c12_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c12_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c12_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c12_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c13_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c13_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c13_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c13_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c14_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c14_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c14_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c14_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c15_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c15_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c15_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c15_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c16_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c16_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c16_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c16_o_q4_sciimg.fits']
[15]:
fp.filepaths
[15]:
[Delayed('get_file-657d2953-f9c9-4dcc-ae85-e7a0e6516f83'),
Delayed('get_file-45ffca97-7ec6-40c4-bfec-f99a015cf5ff'),
Delayed('get_file-3beb5d3a-1a64-4fe0-9a57-d8237bd25143'),
Delayed('get_file-fc42b1a2-e149-425c-ad8c-e8aa9684fb24'),
Delayed('get_file-11873e8d-dfce-4918-934b-2a2e5fddd9ae'),
Delayed('get_file-a9651282-db69-4d15-9c12-f0bc816d033b'),
Delayed('get_file-5855294b-05f6-491c-b527-a9d7109227e0'),
Delayed('get_file-2ad08299-fa64-4876-8edd-d0d34aeb0b6c'),
Delayed('get_file-0cec1c8f-e79a-493f-bca5-7904847a5071'),
Delayed('get_file-f48f8550-f367-4932-9961-4002c7bb2639'),
Delayed('get_file-73b16f11-49fa-404d-9137-4109a74fbe5d'),
Delayed('get_file-76081508-cfe5-45e7-b359-44c5cadc7280'),
Delayed('get_file-8b71a591-393d-4777-b266-2b287c727151'),
Delayed('get_file-9b3c7454-c4f0-4e62-9c34-5f397da0327f'),
Delayed('get_file-0a38b821-c929-428c-8a39-e9e37cd085ee'),
Delayed('get_file-8897271c-5e50-4dd6-b964-3fd29376fabf'),
Delayed('get_file-af4c563a-9ea9-44a6-87d0-f440c1a7c093'),
Delayed('get_file-b2a0671b-4c3c-44fa-a415-d01bf9ce5e96'),
Delayed('get_file-3c339013-d444-43f7-ae51-e4d6460f582a'),
Delayed('get_file-8eb061d2-87a1-43f6-8465-e301489edf35'),
Delayed('get_file-614f199c-ea95-458d-b97f-520a557db8ed'),
Delayed('get_file-c0bbcc44-51ef-434f-b018-cfcab8b818fb'),
Delayed('get_file-bbc123a8-ce9b-4f94-bd1a-337d51587400'),
Delayed('get_file-d76abd68-3ec4-4ce9-83f0-f97e68fa2683'),
Delayed('get_file-aa4d972d-a488-41f5-8c6a-b4c1dea9be32'),
Delayed('get_file-3ecd4e55-72f3-411d-8c73-8a844897524b'),
Delayed('get_file-283cb9e7-7794-4b19-9f73-eaebd73ef562'),
Delayed('get_file-7a122018-3a3a-4e68-88f5-0c00e48a6fad'),
Delayed('get_file-1ae06a90-7bea-484e-b54b-1907165f547e'),
Delayed('get_file-ded70144-cba1-45d9-8cb2-1cdc4031601e'),
Delayed('get_file-d239a565-abe2-4d96-9221-4bfdfe3ba434'),
Delayed('get_file-db491b66-205b-40fa-87b5-b07395293cca'),
Delayed('get_file-626effd8-3612-404e-be40-bfc4fc7fab0f'),
Delayed('get_file-b67e42ba-9a2f-4a6b-84b5-21e901dfaf72'),
Delayed('get_file-b1e0f498-02bc-49fc-a5fe-dc932bbeee9d'),
Delayed('get_file-1508a5be-3d7d-48a4-b3d9-2ee21991495e'),
Delayed('get_file-60aa82ef-73c0-4c58-85a0-7b54d1247925'),
Delayed('get_file-c13aa5ec-3598-4739-a969-1ea161916f9b'),
Delayed('get_file-5577e14f-0374-40dd-aaf9-7fe0ea0b240c'),
Delayed('get_file-8362c889-972c-4aa8-b4b2-9ede2e656470'),
Delayed('get_file-1a18bc0c-5e82-4fe9-82f5-9dea7ce7c704'),
Delayed('get_file-ea46cc53-a03c-4afc-9fb7-f9f70b73eb56'),
Delayed('get_file-93af4095-d127-441d-9d6c-bc63ee6a9911'),
Delayed('get_file-85736668-f390-4bf2-8450-85fe12e533e4'),
Delayed('get_file-a541012b-a019-4aed-9258-d801255b008d'),
Delayed('get_file-594a480e-e7e6-4ee5-9eb4-6624ee1f097d'),
Delayed('get_file-9e2f1cc3-033e-44f1-8f31-3899660b12fe'),
Delayed('get_file-e135d34d-2cab-4ab8-8e1b-56cff0cc4e45'),
Delayed('get_file-baccc4f8-66e9-444c-97ae-ef68d854b223'),
Delayed('get_file-5f39ab43-5d92-4fff-b76b-0d5286799772'),
Delayed('get_file-f34aabe2-a1fb-44d9-94cd-dcac10ddef45'),
Delayed('get_file-76271fba-24e3-4d97-afe0-124492da76ff'),
Delayed('get_file-c61aaf4b-6176-44a0-9b72-5d2a20ee5f9d'),
Delayed('get_file-f59fb19a-ff87-4742-a0a0-8b166dc332c2'),
Delayed('get_file-dec3578b-7015-407b-8c38-07798304d765'),
Delayed('get_file-dfc6c87c-ab01-4c94-b720-af258d7bac97'),
Delayed('get_file-95620861-eae5-4fab-9d64-96e05d009538'),
Delayed('get_file-25f0dd8c-cddc-4a00-86eb-519dc7b05662'),
Delayed('get_file-631cbda5-a515-49c8-a777-3a83ead0c3ca'),
Delayed('get_file-294762a3-738c-47a0-bff6-c6a1fea10126'),
Delayed('get_file-37298179-4b58-4294-baf4-8f7d775fb719'),
Delayed('get_file-3c18a153-27d3-4be6-a181-e12e318355f1'),
Delayed('get_file-8dbb14cb-2520-48db-b351-869580cf6770'),
Delayed('get_file-01239a3d-0086-4710-b428-5035497b00be')]
[16]:
fp.get_data()
[16]:
|
tip: the rebin option averages the pixels N by N. It fastens a lot plotting (and reduce the local RAM usage) for quick look. N must be a multiple of the array shape, so 2, 4, 8, 16 works well
[17]:
_ = fp.show(rebin=2) # check you localhost:8787
In the other direction#
Let’s get the quadrant 1 of the CCD.
[18]:
q1 = ccd.get_quadrant(1)
[19]:
_ = q1.show()
The CCD 11 from the FocalPlane
[20]:
ccd11 = fp.get_ccd(11)
Remark that, since fp is dasked, ccd11 will also be.
[21]:
ccd11.get_data()
[21]:
|
[22]:
_ = ccd11.show()
Or any quadrant from the FocalPlane (rcid)
[23]:
q35 = fp.get_quadrant(35)
[24]:
_ = q35.show()
call_quadrants() and call_ccds()#
The call
methods from CCD and FocalPlane enables you to access information from lower structure of the camera. You can request any attribute or value accessible from the quadrant.get_value() (e.g. any header info) or you can call any method
[25]:
import ztfimg
qimg = ztfimg.ScienceQuadrant.from_filename("ztf_20200924431759_000655_zr_c13_o_q2_sciimg.fits",
as_path=False)
[26]:
ccdimg = qimg.get_ccd()
[27]:
fpimg = qimg.get_focalplane()
For instance, let’s get the filenames for all the quadrants of the focalplane
[28]:
fpimg.call_quadrants("filename")
[28]:
['ztf_20200924431759_000655_zr_c01_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c01_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c01_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c01_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c02_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c02_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c02_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c02_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c03_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c03_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c03_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c03_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c04_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c04_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c04_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c04_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c05_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c05_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c05_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c05_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c06_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c06_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c06_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c06_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c07_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c07_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c07_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c07_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c08_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c08_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c08_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c08_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c09_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c09_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c09_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c09_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c10_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c10_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c10_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c10_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c11_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c11_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c11_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c11_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c12_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c12_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c12_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c12_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c13_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c13_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c13_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c13_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c14_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c14_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c14_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c14_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c15_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c15_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c15_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c15_o_q4_sciimg.fits',
'ztf_20200924431759_000655_zr_c16_o_q1_sciimg.fits',
'ztf_20200924431759_000655_zr_c16_o_q2_sciimg.fits',
'ztf_20200924431759_000655_zr_c16_o_q3_sciimg.fits',
'ztf_20200924431759_000655_zr_c16_o_q4_sciimg.fits']
or the ccd corners. For that, let’s do call the ccd.get_corners()
for each ccd using the system="uv"
coordinates
[29]:
fpimg.call_ccds("get_corners", system="uv") #
[29]:
[array([[ 7067.34041081, -13502.04719811],
[ 13309.79781952, -13515.64724439],
[ 13298.39604336, -7248.73250961],
[ 7059.87779398, -7240.51503095]]),
array([[ 388.10620559, -13532.09609067],
[ 6615.31027541, -13522.77866295],
[ 6593.72925773, -7262.55203405],
[ 369.65335949, -7274.79442487]]),
array([[ -6301.48767828, -13537.95441246],
[ -70.04811123, -13526.6149072 ],
[ -77.33489454, -7276.59090507],
[ -6312.10277268, -7276.63279551]]),
array([[-13014.60885732, -13571.39913118],
[ -6770.02986563, -13545.52926273],
[ -6776.53309594, -7287.87360575],
[-13009.27267564, -7301.34020039]]),
array([[ 7075.05560694, -6591.8297521 ],
[13300.48198996, -6592.11264198],
[13285.84049177, -343.37946812],
[ 7050.12738922, -357.6507713 ]]),
array([[ 355.34540863, -6617.35827238],
[ 6589.02145272, -6605.31199652],
[ 6574.36054339, -368.64895186],
[ 344.25451176, -385.63662582]]),
array([[-6314.73162673, -6632.66789925],
[ -80.62461412, -6601.57542213],
[ -99.11568209, -367.81939275],
[-6325.22886579, -392.5002264 ]]),
array([[-13022.86708719, -6660.37707634],
[ -6775.14802673, -6625.80345438],
[ -6799.56509017, -387.18498194],
[-13037.04680462, -412.85740682]]),
array([[ 7053.7195673 , 302.07845426],
[13283.2526598 , 307.64184152],
[13272.32870116, 6555.51608974],
[ 7035.95159325, 6533.54262528]]),
array([[ 351.93437657, 293.468065 ],
[6574.35132883, 304.10904049],
[6561.23879352, 6541.64216778],
[ 335.35932361, 6526.66519896]]),
array([[-6318.33271353, 272.38057569],
[ -90.23993915, 289.34559533],
[ -103.51204085, 6527.54920891],
[-6331.81909487, 6511.76028913]]),
array([[-13006.13636759, 254.63442537],
[ -6774.64962982, 279.3244236 ],
[ -6800.49199335, 6517.30237249],
[-13035.74827151, 6498.86056034]]),
array([[ 7033.05326618, 7197.76885685],
[13272.59253377, 7206.67239239],
[13277.16547546, 13473.78824559],
[ 7032.04394056, 13452.28201071]]),
array([[ 327.68576312, 7169.16855789],
[ 6558.31210412, 7176.06994093],
[ 6570.0278753 , 13435.24900315],
[ 336.08303977, 13432.99220619]]),
array([[-6324.08242476, 7144.19526151],
[ -92.73511963, 7181.18914295],
[ -123.63305766, 13436.00988258],
[-6356.070396 , 13406.97491262]]),
array([[-13030.67709453, 7163.62063296],
[ -6800.3913949 , 7167.53626199],
[ -6819.40818311, 13419.89144566],
[-13071.20837163, 13417.25255853]])]
ZTF Camera structure#
the ztffields
package (https://ztffields.readthedocs.io/) enables you to quickly see the structure of the ztfcamera
[30]:
import ztffields
_ = ztffields.show_ztf_footprint()
2023-03-10 12:34:10,545 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,556 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,560 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,562 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,570 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,652 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,654 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,655 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,662 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,674 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,962 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,963 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,965 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,965 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:10,975 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:11,258 - distributed.diskutils - INFO - Found stale lock file and directory '/var/folders/kt/dnsb_cyx445cbz2ht_3l2m6w00029p/T/dask-worker-space/worker-mljhf877', purging
2023-03-10 12:34:11,258 - distributed.diskutils - INFO - Found stale lock file and directory '/var/folders/kt/dnsb_cyx445cbz2ht_3l2m6w00029p/T/dask-worker-space/worker-voesqsw8', purging
2023-03-10 12:34:11,258 - distributed.diskutils - INFO - Found stale lock file and directory '/var/folders/kt/dnsb_cyx445cbz2ht_3l2m6w00029p/T/dask-worker-space/worker-zp3lg_ma', purging
2023-03-10 12:34:11,993 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:11,994 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:12,004 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:12,006 - distributed.nanny - WARNING - Restarting worker
2023-03-10 12:34:12,014 - distributed.nanny - WARNING - Restarting worker
Blod numbers are ccdid
, white number are rcid
and colors are qid
(0:blue, 1:orange, 2:green, 3:red)