[AstroPy] Parse DETSEC etc..
Peter Erwin
erwin at mpe.mpg.de
Thu Jul 5 02:51:35 EDT 2018
If you know the names of the headers to parse and you know they will always
have the format “[x1:x2,y1:y2]”, then a slightly shorter (and possibly more
idiomatic) way, which avoids regex and mapping, would be:
ff=fits.open('file.fits')
h = ff[1].header[‘DETSEC’]
b = [int(x2) for x1 in h[1:-1].split(",") for x2 in a.split(":”)]
(Substitute “float” for “int” if you really want floating-point values; I’m
assuming that you might want to use the values from DETSEC to index
the data array, in which case they should be integers.)
But that may not be as flexible as what you want.
cheers,
Peter
> On Jul 5, 2018, at 3:21 AM, Petr Kubánek <petr at kubanek.net> wrote:
>
> Hi Astropy,
>
> I might be stupid, but I don't see any way how to parse DETSEC and
> similar FITS header you can encounter in (multiframe) FITS files. I of
> course know how to parse that with e.g. re and mapping result to float
> array, but is there a better way? See for the code (yes, that will
> become a function..unless I know about better way):
>
> from astropy.io import fits
> import re
>
> ff=fits.open('file.fits')
> r = re.compile('\[(\d+):(\d+),(\d+):(\d+)\]')
> g = r.match(ff[1].header['DETSEC']) # DETSEC is '[20:30,40:50]'
> b=map(float, g.groups())
> print(b)
> [20,30,40,50]
>
>
> Thanks
>
> Petr Kubánek
> http://rts2.org
> _______________________________________________
> AstroPy mailing list
> AstroPy at python.org
> https://mail.python.org/mailman/listinfo/astropy
=============================================================
Peter Erwin Max-Planck-Insitute for Extraterrestrial
erwin at mpe.mpg.de Physics, Giessenbachstrasse
tel. +49 (0)176 2481 7713 85748 Garching, Germany
fax +49 (0)89 30000 3495 http://www.mpe.mpg.de/~erwin
More information about the AstroPy
mailing list