⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mrdfits.pro

📁 basic median filter simulation
💻 PRO
📖 第 1 页 / 共 5 页
字号:
;+; NAME:;     MRDFITS;; PURPOSE:;     Read all standard FITS data types into arrays or structures.;; EXPLANATION:;      Further information on MRDFITS is available at;      http://idlastro.gsfc.nasa.gov/mrdfits.html ;;      **This version requires a post March 2009 version of fxposit.pro**; CALLING SEQUENCE:;      Result = MRDFITS( Filename/FileUnit,[Exten_no/Exten_name, Header],;                       /FSCALE , /DSCALE , /UNSIGNED,;                       ALIAS=strarr[2,n], /USE_COLNUM,;                       /NO_TDIM, ROWS = [a,b,...], $;                       /POINTER_VAR, /FIXED_VAR, EXTNUM= ;                       RANGE=[a,b], COLUMNS=[a,b,...]), ERROR_ACTION=x,;                       COMPRESS=comp_prog, STATUS=status, /VERSION );; INPUTS:;      Filename = String containing the name of the file to be read or;                 file number of an open unit.  If a unit is specified;                 if will be left open positioned to read the next HDU.;                 If the file name ends in .gz (or .Z on Unix systems);                 the file will be dynamically decompressed.;      FiluUnit = An integer file unit which has already been;                 opened for input.  Data will be read from this;                 unit and the unit will be left pointing immediately;                 after the HDU that is read.  Thus to read a compressed;                 file with many HDU's a user might do something like:;                      lun=fxposit(filename, 3)  ; Skip the first three HDU's;                      repeat begin;                          thisHDU = mrdfits(lun, 0, hdr, status=status);                          ... process the HDU ...;                      endrep until status lt 0;;      Exten_no= Extension number to be read, 0 for primary array.;                 Assumed 0 if not specified.;                 If a unit rather than a filename;                 is specified in the first argument, this is;                 the number of HDU's to skip from the current position.;      Exten_name - Name of the extension to read (as stored in the EXTNAME;                 keyword).   This is a slightly slower method then specifying;                 the extension number.; OUTPUTS:;      Result = FITS data array or structure constructed from;               the designated extension.  The format of result depends;               upon the type of FITS data read.;             Non-group primary array or IMAGE extension:;               A simple multidimensional array is returned with the;               dimensions given in the NAXISn keywords.;             Grouped image data with PCOUNT=0.;               As above but with GCOUNT treated as NAXIS(n+1).;             Grouped image data with PCOUNT>0.;               The data is returned as an array of structures.  Each;               structure has two elements.  The first is a one-dimensional;               array of the group parameters, the second is a multidimensional;               array as given by the NAXIS2-n keywords.;             ASCII and BINARY tables.;               The data is returned as a structure with one column for;               each field in the table.  The names of the columns are;               normally taken from the TTYPE keywords (but see USE_COLNUM).;               Bit field columns;               are stored in byte arrays of the minimum necessary;               length.  Spaces and invalid characters are replaced by ;               underscores, and other invalid tag names are converted using;               the IDL_VALIDNAME(/CONVERT_ALL) function.;               Columns specified as variable length columns are stored;               with a dimension equal to the largest actual dimension;               used.  Extra values in rows are filled with 0's or blanks.;               If the size of the variable length column is not;               a constant, then an additional column is created giving the ;               size used in the current row.  This additional column will ;               have a tag name of the form L#_"colname" where # is the column;               number and colname is the column name of the variable length;               column.   If the length of each element of a variable length ;               column is 0 then the column is deleted.;;; OPTIONAL OUTPUT:;       Header = String array containing the header from the FITS extension.;; OPTIONAL INPUT KEYWORDS:;       ALIAS    The keyword allows the user to specify the column names;                to be created when reading FITS data.  The value of;                this keyword should be a 2xn string array.  The first;                value of each pair of strings should be the desired;                tag name for the IDL column.  The second should be;                the FITS TTYPE value.  Note that there are restrictions;                on valid tag names.  The order of the ALIAS keyword;                is compatible with MWRFITS.;       COLUMNS - This keyword allows the user to specify that only a;                subset of columns is to be returned.  The columns;                may be specified either as number 1,... n or by;                name or some combination of these two.;                If USE_COLNUM is specified names should be C1,...Cn.;                The use of this keyword will not save time or internal;                memory since the extraction of specified columns;                is done after all columns have been retrieved from the;                FITS file.;       COMPRESS - This keyword allows the user to specify a;                decompression program to use to decompress a file that;                will not be automatically recognized based upon;                the file name.;       /DSCALE - As with FSCALE except that the resulting data is;                stored in doubles.;       ERROR_ACTION - Set the on_error action to this value (defaults;                to 2).;       /FIXED_VAR- Translate variable length columns into fixed length columns;                and provide a length column for truly varying columns.;                This was only behavior prior to V2.5 for MRDFITS and remains;                the default (see /POINTER_VAR);       /FSCALE - If present and non-zero then scale data to float;                numbers for arrays and columns which have either;                non-zero offset or non-unity scale.;                If scaling parameters are applied, then the corresponding;                FITS scaling keywords will be modified.;       NO_TDIM  - Disable processing of TDIM keywords.  If NO_TDIM;                is specified MRDFITS will ignore TDIM keywords in;                binary tables.;       /POINTER_VAR- Use pointer arrays for variable length columns.;                In addition to changing the format in which;                variable length arrays are stored, if the pointer_var;                keyword is set to any value other than 1 this also disables;                the deletion of variable length columns. (See /FIXED_VAR);                Note that because pointers may be present in the output;                structure, the user is responsible for memory management;                when deleting or reassigning the structure (e.g. use HEAP_FREE;                first).;       RANGE  - A scalar or two element vector giving the start;                and end rows to be retrieved.  For ASCII and BINARY;                tables this specifies the row number.  For GROUPed data;                this will specify the groups.  For array images, this;                refers to the last non-unity index in the array.  E.g.,;                for a 3 D image with NAXIS* values = [100,100,1], the;                range may be specified as 0:99, since the last axis;                is suppressed.  Note that the range uses IDL indexing;                So that the first row is row 0.;                If only a single value, x, is given in the range,;                the range is assumed to be [0,x-1].;       ROWS -  A scalar or vector specifying a  specific row or rows to read ;               (first row is 0).   For example to read rows 0,;               12 and 23 only, set ROWS=[0,12,23].   Valid for images, ASCII ;               and binary tables, but not GROUPed data.   For images;               the row numbers refer to the last non-unity index in the array.   ;               Cannot be used at the same time as the RANGE keyword;       /SILENT - Suppress informative messages.;       STRUCTYP - The structyp keyword specifies the name to be used;                for the structure defined when reading ASCII or binary;                tables.  Generally users will not be able to conveniently;                combine data from multiple files unless the STRUCTYP;                parameter is specified.  An error will occur if the;                user specifies the same value for the STRUCTYP keyword;                in calls to MRDFITS in the same IDL session for extensions;                which have different structures.;       /UNSIGNED - For integer data with appropriate zero points and scales;                read the data into unsigned integer arrays.;       /USE_COLNUM - When creating column names for binary and ASCII tables;                MRDFITS attempts to use the appropriate TTYPE keyword;                values.  If USE_COLNUM is specified and non-zero then;                column names will be generated as 'C1, C2, ... 'Cn';                for the number of columns in the table.;       /VERSION Print the current version number;; OPTIONAL OUTPUT KEYWORDS:;       EXTNUM - the number of the extension actually read.   Useful if the;                 user specified the extension by name.;       OUTALIAS - This is a 2xn string array where the first column gives the;                actual structure tagname, and the second gives the;                corresponding FITS keyword name (e.g. in the TTYPE keyword).   ;                This array can be passed directly to;                the alias keyword of MWRFITS to recreate the file originally;                read by MRDFITS.;       STATUS - A integer status indicating success or failure of;                the request.  A status of >=0 indicates a successful read.;                Currently;                    0 -> successful completion;                   -1 -> error;                   -2 -> end of file;; EXAMPLES:;       (1) Read a FITS primary array:;               a = mrdfits('TEST.FITS')    or;               a = mrdfits('TEST.FITS', 0, header);       The second example also retrieves header information.;;       (2) Read rows 10-100 of the second extension of a FITS file.;               a = mrdfits('TEST.FITS', 2, header, range=[10,100]);;       (3) Read a table and ask that any scalings be applied and the;       scaled data be converted to doubles.  Use simple column names,;       suppress outputs.;               a = mrdfits('TEST.FITS', 1, /dscale, /use_colnum, /silent);;       (4) Read rows 3, 34 and 52 of a binary table and request that ;           variable length columns be stored as a pointer variable in the ;           output structure;              a = mrdfits('TEST.FITS',1,rows=[3,34,52],/POINTER)  ; RESTRICTIONS:;       (1)     Cannot handle data in non-standard FITS formats.;       (2)     Doesn't do anything with BLANK or NULL values or;               NaN's.  They are just read in.  They may be scaled;               if scaling is applied.; NOTES:;       This multiple format FITS reader is designed to provide a;       single, simple interface to reading all common types of FITS data.;       MRDFITS DOES NOT scale data by default.  The FSCALE or DSCALE;       parameters must be used.;;       MRDFITS supports 64 bit integer data types, which were;       included in the FITS standard in 2005.;       http://fits.gsfc.nasa.gov/fits_64bit.html;    ;; PROCEDURES USED:;       The following procedures are contained in the main MRDFITS program.;           MRD_IMAGE           -- Generate array/structure for images.;           MRD_READ_IMAGE      -- Read image data.;           MRD_ASCII           -- Generate structure for ASCII tables.;           MRD_READ_ASCII      -- Read an ASCII table.;           MRD_TABLE           -- Generate structure for Binary tables.;           MRD_READ_TABLE      -- Read binary table info.;           MRD_READ_HEAP       -- Read variable length record info.;           MRD_SCALE           -- Apply scaling to data.;           MRD_COLUMNS         -- Extract columns.;;        Other ASTRON Library routines used;           FXPAR(), FXADDPAR, FXPOSIT, FXMOVE(), MATCH, MRD_STRUCT(), MRD_SKIP ;; MODIfICATION HISTORY:;       V1.0 November 9, 1994 ----  Initial release.;          Creator: Thomas A. McGlynn;       V1.1 January 20, 1995 T.A. McGlynn;          Fixed bug in variable length records.;          Added TDIM support -- new routine mrd_tdim in MRD_TABLE.;       V1.2;          Added support for dynamic decompression of files.;          Fixed further bugs in variable length record handling.;       V1.2a;          Added NO_TDIM keyword to turn off TDIM processing for;          those who don't want it.;          Bug fixes: Handle one row tables correctly, use BZERO rather than;               BOFFSET.     Fix error in scaling of images.  ;       V1.2b ;          Changed MRD_HREAD to handle null characters in headers.;       V2.0 April 1, 1996;          -Handles FITS tables with an arbitrary number of columns.;          -Substantial changes to MRD_STRUCT to allow the use of;          substructures when more than 127 columns are desired.;          -All references to table columns are now made through the;          functions MRD_GETC and MRD_PUTC.  See description above.;          -Use of SILENT will now eliminate compilation messages for;          temporary functions.;          -Bugs in handling of variable length columns with either;          a single row in the table or a maximum of a single element;          in the column fixed.;          -Added support for DCOMPLEX numbers in binary tables (M formats) for;          IDL versions above 4.0.  ;          -Created regression test procedure to check in new versions.;          -Added error_action parameter to allow user to specify;          on_error action.  This should allow better interaction with;          new CHECK facility.  ON_ERROR statements deleted from;          most called routines.;          - Modified MRDFITS to read in headers containing null characters;          with a warning message printed.;       V2.0a April 16, 1996;          - Added IS_IEEE_BIG() checks (and routine) so that we don't;          worry about IEEE to host conversions if the machine's native;          format is IEEE Big-endian.;       V2.1 August 24, 1996;          - Use resolve_routine for dynamically defined functions;          for versions > 4.0;          - Fix some processing in random groups format.;          - Handle cases where the data segment is--legally--null.;          In this case MRDFITS returns a scalar 0.;          - Fix bugs with the values for BSCALE and BZERO (and PSCAL and;          PZERO) parameters set by MRDFITS.;       V2.1a April 24, 1997  Handle binary tables with zero length columns;       V2.1b May 13,1997 Remove whitespace from replicate structure definition;       V2.1c May 28,1997 Less strict parsing of XTENSION keyword;       V2.1d June 16, 1997 Fixed problem for >32767 entries introduced 24-Apr;       V2.1e Aug 12, 1997 Fixed problem handling double complex arrays;       V2.1f Oct 22, 1997 IDL reserved words can't be structure tag names;       V2.1g Nov 24, 1997 Handle XTENSION keywords with extra blanks.;       V2.1h Jul 26, 1998 More flexible parsing of TFORM characters;       V2.2 Dec 14, 1998 Allow fields with longer names for;                        later versions of IDL.;                        Fix handling of arrays in scaling routines.;                        Allow >128 fields in structures for IDL >4.0;                        Use more efficient structure copying for;                        IDL>5.0;       V2.2b June 17, 1999 Fix bug in handling case where;                           all variable length columns are deleted;                           because they are empty.;       V2.3 March 7, 2000 Allow user to supply file handle rather;                          than file name.;                          Added status field.;                          Now needs FXMOVE routine;       V2.3b April 4, 2000;                          Added compress option (from D. Palmer);       V2.4  July 4, 2000 Added STATUS=-1 for "File access error" (Zarro/GSFC);       V2.4a May 2, 2001  Trim binary format string   (W. Landsman);       V2.5 December 5, 2001 Add unsigned, alias, 64 bit integers. version, $;                           /pointer_val, /fixed_var.;       V2.5a Fix problem when both the first and the last character;            in a TTYPEnn value are invalid structure tag characters;       V2.6 February 15, 2002 Fix error in handling unsigned numbers, $;                           and 64 bit unsigneds. (Thanks to Stephane Beland);       V2.6a September 2, 2002 Fix possible conflicting data structure for;                          variable length arrays (W. Landsman);       V2.7 July, 2003  Added Rows keyword (W. Landsman);       V2.7a September  2003 Convert dimensions to long64 to handle huge files;       V2.8 October 2003 Use IDL_VALIDNAME() function to ensure valid tag names;                         Removed OLD_STRUCT and TEMPDIR keywords W. Landsman;       V2.9 February 2004 Added internal MRD_FXPAR procedure for faster;                     processing of binary table headers E. Sheldon;       V2.9a March 2004 Restore ability to read empty binary table W. Landsman;             Swallow binary tables with more columns than given in TFIELDS;       V2.9b Fix to ensure order of TFORMn doesn't matter;       V2.9c Check if extra degenerate NAXISn keyword are present W.L. Oct 2004 ;       V2.9d Propagate /SILENT to MRD_HREAD, more LONG64 casting W. L. Dec 2004;       V2.9e Add typarr[good] to fix a problem reading zero-length columns;             A.Csillaghy, csillag@ssl.berkeley.edu (RHESSI);       V2.9f Fix problem with string variable binary tables, possible math ;             overflow on non-IEEE machines  WL Feb. 2005 ;       V2.9g Fix problem when setting /USE_COLNUM   WL Feb. 2005;       V2.10 Use faster keywords to BYTEORDER  WL May 2006;       V2.11  Add ON_IOERROR, CATCH, and STATUS keyword to MRD_READ_IMAGE to;             trap EOF in compressed files DZ  Also fix handling of unsigned ;             images when BSCALE not present  K Chu/WL   June 2006 ;       V2.12 Allow extension to be specified by name, added EXTNUM keyword;                     WL    December 2006;       V2.12a Convert ASCII table column to DOUBLE if single precision is;                 insufficient  ;       V2.12b Fixed problem when both /fscale and /unsigned are set ;                  C. Markwardt    Aug 2007;       V2.13  Use SWAP_ENDIAN_INPLACE instead of IEEE_TO_HOST and IS_IEEE_BIG;                W. Landsman Nov 2007;       V2.13a One element vector allowed for file name W.L. Dec 2007;       V2.13b More informative error message when EOF found W.L. Jun 2008;       V2.14  Use vector form of VALID_NUM(), added OUTALIAS keyword;                                       W.L. Aug 2008;       V2.15  Use new FXPOSIT which uses on-the-fly byteswapping W.L. Mar 2009;       V2.15a Small efficiency updates to MRD_SCALE W.L. Apr 2009;-PRO mrd_fxpar, hdr, xten, nfld, nrow, rsize, fnames, fforms, scales, offsets;;  Check for valid header.  Check header for proper attributes.;  S = SIZE(HDR)  IF ( S[0] NE 1 ) OR ( S[2] NE 7 ) THEN $    MESSAGE,'FITS Header (first parameter) must be a string array'  xten = fxpar(hdr, 'XTENSION')  nfld = fxpar(hdr, 'TFIELDS')  nrow = long64(fxpar(hdr, 'NAXIS2'))  rsize = long64(fxpar(hdr, 'NAXIS1'))  ;; will extract these for each  names = ['TTYPE','TFORM', 'TSCAL', 'TZERO']  nnames = n_elements(names);  Start by looking for the required TFORM keywords.    Then try to extract it ;  along with names (TTYPE), scales (TSCAL), and offsets (TZERO)    keyword = STRMID( hdr, 0, 8);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -