aXis 2000 - Analysis of X-ray Images and Spectra - Summary of changes

Contact Info

Adam P. Hitchcock

Canada Research Chair

in Materials Research
McMaster University
Hamilton, ON
Canada L8S 4M1
V: +1 905 525-9140
F: +1 905 521-2773



This version: 09 Apr 2024      Last version:  20 Jan 2024  

New or modified routines (since 20 Jan 2024 )

============= 09 Apr 2024 from 20 Jan 2024 ======= - seperate read-in for pixelator and pySTXM versions of read STXM (NEXUS);
                   - readin for Nanomax~{spectra,image, stacks, single_stacks} - add COMMON nanomax, last_spectrum, last_image, last_stack, last_type, last_energy - radd read~(spectra, images, stacks)~nanomax - add special read-in for pySTXM25 coarse. pt-by-pt files - early version reads set of files from raw area; probably only diode signals - read raw h5 data for single image - user can select I (integrated-Eiger), Io (ion chamber) or I/Io - read h5 files with Eiger-(stxm, ptycho) works on files in process, but NOT in raw - intermediate version of - ead raw h5 data for point spectrum (may only work with raw files) - read single file h5 stack files in Notebooks ==> user can choose stxm (integrated-Eiger) , ptycho ~(amp,pha) - NEW routine: reads *.hdf5 files written by pySTXM 2.5 where the image data is 1-d
                                        according to HDFView 2.11 and when read in with ax_nexus, only displays 1 y-value - reads *.hdf5 files written by pySTXM 2.5 using coarse stepper motors - corrected error in re-mesh program used to match pixelation or spatial sizes

============= 20 Jan 2024 from 17 May 2023 ======= - format NAME for html Help file - format NAME for html Help file - format NAME for html Help file - format NAME for html Help file - format NAME for html Help file - format NAME for html Help file - add mode as required keyword ; use cll, cur (common variables) to store limits - se ' Zc' tag to indicate cursor-based zoom

axis2000.pdf - updated on-line manual (in conjunction with J.El.Spec. 2023 article) - remove spikes from COSMIC ptychography images - modify to read *.csv files written by CLS ptycho processng - NEW; adapted from; extract energy; 'A' to extract all 4 SDD signals - format NAME for html Help file - format NAME for html Help fil - format NAME for html Help fil - improve in-file documentation - format NAME for html Help fil - format NAME for html Help fil - added /real option to call to stack_wb ==> works for MaxIV SoftiMAX ptycho processing - sort mixed amp, pha MaxIV SoftiMAX ptychography stack output into seperate folders

============= 17 May 2023 from 02 Apr 2023 ======== - add processing of CLS-SGM stacks (TEY, TFY, PD, pTFY) - added menus for processing CLS-SGM stacks

axis_programs.html - updated to add new routines - zoom (cut and move to buffer 0) using pixels - modified to work with pixels as well as data (x,y) values

contents.lst - updated to add new routines

h5_read_cls_sgm - NEW routine to read CLS-SGM *.h5 files - sorts out folders with both *.amp and *.pha fils (MaxIV softimax) - added /real option to call to stack_wb ==> works for MaxIV SoftiMAX ptycho processing

============= 02 Apr 2023 from 20 Sep 2022 =========== - rearranged codes to match changes in;
                     add image~replace line~auto-V - process time sequences of stacks automatically (first version) - macro to auto-process STXM chemi-movies - commented out unused menu items (see aXis2000_obsoleted-commands.pdf for a list of those procedures and functions) - improved but not functioning fully

============= 20 Sep 2022 from 28 Aug 2022 ===========

axis_c - re-arranged read~spectra menu; add read~CLS-SGM~csv

axis_dialog - changed read~spectra menu - change ring current normalization feedback

ax_sgm_csv_com - common block for new routine

ax_sgm_csv_load - widget to read CLS-SGM spectra from *.csv file

ax_zoom_cursor - change tag location

ax_zoom_curt - change tag location

ln_norm - correct code error - normalize by average for Hnorm and Vnorm now implemented correctly - modify x-axis label

============= 28 Aug 2022 from 05 Mar 2022 ===========

axis_c - modify image and stack codes for new ax_fix_rollover procedure

axis_dialog - modify image and stack pull down menus for new ax_fix_rollover procedure

ax_fix_rollover - revise to remove 2pi phase roll-over artifacts (as part of development of spectro-ptycho at MaxIV)

ax_sort_mono - add no_dup keyword - do not delete points that are duplicates

read_pty_pie_stack - assemble *.txt (ascii format) amp, phase images generated by Pty_PIE reconstruction of ptycho data into a stack

read_sgm - generate stacks from the multi-point fast-scan SGM hdf5 files (INCOMPLETE as of 28-May-2022)

stack_mesh - change mesh of a stack; correct error introduced 02-Aug-21

============= 05 Mar 2022 from 06 Jul 2021 ===========

ax_fix_rollover - add user selectable threshold and offset to undo 'wrap-around'

ax_img_line - adapt so user can replace either horizontal or vertical line (needed for MaxIV vertical-fast)

ax_sdf - stop from opening last stack written, when user selects 'cancel'

axis_c - modify image~fix_rollover ; utilities~change unified

axis_dialog - group various change commands under utilities~change

cj_img_align -(CJ routine) integrated in to aXis2000 (trying to run only the align portion of CJ's stack_analyze (NOT YET WORKING)

cj_stack_align - (CJ routine) (trying to run only the align portion of CJ's stack_analyze (NOT YET WORKING)

cj_stack_align_com - added to integrate the align portion of CJ's stack_analyze in to aXis2000

disp3col - fixed (was broken from Jan 31, 2022)

getbox - added as part of integrate the align portion of CJ's stack_analyze in to aXis2000 (Zawodny, NASA 1991)

read_maxiv_h5 - reads spectra from hdf5 files written by the MaxIV beamline acquisition software

read_sdf - add polarization to y-axis from STXM_control sdf formatted files t(ested with CLS aSTXM, 11.0.2 STXM (2016)

splot2d - comment out tracking print (from earlier modification to header)

stack_process - add dwell when write out images from stack_process

tweak - (CJ routine) added as part of effort to integrate the align portion of CJ's stack_analyze in to aXis2000

zstack_analyze - added keyword cj_align as part of effort to integrate the align portion of CJ's stack_analyze in to aXis2000

============= 06 Jul 2021 from 02 May 2021 ===========

axb_save - add overwrite keyword (so can use same name silently, for ax_fix_rollover)

ax_change_hdf5 - [NON_FUNCTIONAL] - script to change details of Hermes ptycho hdf5 files (which get lost)

ax_fix_rollover - set up to unwrap +/- pi (phase) as well as 2^16 signed [not working properly]

axis_c - set the path to DefPath before starting stack_analyse (Jacobsen) and writing from read~stacks~pynx

read_pynx_stack - modify to read-in new format with all files in one folder

splot2d - truncate header so it is left justified

stack_process - add filename to header when write stack images

============= 2 May 2021 from 03 Mar 2021 ===========

read_sgm - reads TEY, Io, clock, PD & FY) spectra from SGM *.hdf5 files - FIXED

============= 3 Mar 2021 from 03 Nov 2020 ===========

axis_c - increase Windows font (14 --> 18); add read~SGM (TEY)

axis_dialog - add read~spectra~SGM

read_sgm - reads TEY, Io, clock, PD & FY) spectra from SGM *.hdf5 files

sgm_com - common block for read_sgm

============= 03 Nov 2020 from 11 Oct 2020 ===========

ax_rgb - allow 1 or 2 color RGB if user selects an empty or spectral buffer

axis_c - provide option to write~ascii_(reals, integers) without headers

despike_median - despike data using a median filter (from web)

histo_wrap - code used in despike_medin

spc_load - modify multi-column to read comma seperated lists

spc_save - added option to saving ascii data tosave without headers and X,Y values

============= 11 Oct 2020 from 27 Aug 2019 ===========

ax_file_load - cosmetic change only

spc_load - modifed multi-column read to read-in (x1,y1, x2, y2) types of data where data set1 is longer than data set 2

============= 27 Aug 2019 from 18 Jul 2019 ===========

axis_c - correct format syntax in Xray spectra calculator (NB this is IDL 8.7 specific change in rules for format command); remove 'aXis2000-code' for unix path

axis2000 - make work with IDL8.7.2 in OSX

ax_sdf - change default ring current to 200 mA (suitable for CLS)

============= 18 Jul 2019 from 18 Feb 2019 ===========

axb_load - cosmetic change

axb_save - bug fix; tell user name of file that might be over-written

axis_c - add Transform~(flip, mirror, rotate) ; add read_images~ptycho_Soleil for STXM and ptycho images

axis_dialog - add changed menu items

axis_ini - replaced 'netscape' with 'chrome' as default browser

axis_ini_save - cosmetic change to reflect change from 'netscape' to 'chrome'

axis_web - got working again; updated all web links - CLICK to go aXis2000 web site OR web page of STXM or TXM at each facility

ax_nexus - add ptycho option: start with Sample_Image and click on associated *.tif file to generate STXM or ptycho image with correct dimensions; correctly display type of scan

ax_nexus_viewer - add type of scan, correct some bugs

ax_xycal - use real not integer pixel size (in nm)

ax_xydis - changed to get distortion working (probably not working right, even after change)

img_algn - fixed so will now write the shift files

img_load - add ax_color to set standard color scale for data read-ins ; add float option to read_tiff

read_ascii_img - modify to read *.csv files written by CLS ptycho processng

read_coarse_goni_scan - temporary special readin for CLS pySTXM coarse_goni_scans

read_nexus - add ptycho-mode to read images, linescans, focus as tif files from ptycho; rotate tif first (ROTATE,3) for 90 deg clockwise ; set standard axis color; fix linescan readin, add coarse_goni_scan

read_soleil_ptycho - read tif (stxm, ptycho_amplitude, ptycho_phase) and associated log file (Soleil) works for SETS of tif files ==> STACKS

set_digits - corected bug if the component amount was -ve (take log of absolute value to set # of digits)

============= 04 Jun 2018 from 18 Feb 2019 ===========

ax_9pad - new routine to automate analysis of 9-pad damage images / maps

axb_load - remove un-necessary tracking

axis_c - add SGM_Image read-in; put processing tags AFTER the old label; call stack_process if sdg or NeXus stack is read

axis_dialog - add ax_9pad and h5_read_sgm_image calls

clip - modify header info

h5_read_sgm_image - new routine to read data from CLS SGM XRF and XFR-yield imaging

read_nexus - remove call to stack_process (calling from axis_c leaves stack_process widget on top)

read_sdf - remove call to stack_process (calling from axis_c leaves stack_process widget on top)

stack_process - correct axes for rotating stacks on write-out

============= 01 Oct 2018 from 04 Jun 2018 ===========

axis_c - add read~images~PEEM~NSRRC - read in single NSRCC XPEEM images (unsigned 16-bit tif)

ax_nexus_viewer - fix discard function

ax_stack_expand - expand canvas of all images in a stack to facilitate alignment (incomplete)

img_algn - define energy parameter properly

img_algn_fill -aligns one image to the spatial scale of the first file, then inserts into a pre-defined canvas (incomplete)

img_load - enable read in of 16-bit unsigned tif fiels (for NSRRC image read in)

read_nexus - ensure files are closed and LUN freed at end of read

read_nsrrc_peem - enable read-in of large (>200Mb) NSRRC PEEM stacks by bining image by image

============= 04 Jun 2018 from 15 May 2018 ===========

ax_conc_calc - calculate concentration from water thickness & solute properties

ax_conc_calc_com - common block for ax_conc_calc

axis_dialog - add utilities~calculate concentration; reorganize

axis_web - update default browser (netscape ! => chrome)

============= 15 May 2018 from 25 Jul 2017 ===========

axb_load - add tracking print; identify problem of unreadable *.axb files (array dim <= 0 error) ; which turns out to be a problem with axb_save writing tmp(x,y,d) as doubles, ; and the ny integer after tmp.x not writing correctly (odd number of singles ??)

axb_save - troubleshoot unreadable *.axb files written from output of map generation in stack_process ; force tmp.x, tmp.y and tmp.d to be REALS (float) ==> they were doubles. ; since the routine sometimes worked, suspect there is a singles extra in some cases which made the ; the parsing to get ny incorrect. EXAMPLES: C180303048_000 * ___bad-doubles, axis_pass_test_data

ax_nexus - allow 'clear' of filename; entry of name only; fix lock-up if bad read, add 'preview' switch to GUI; fix single image read; implement 'pixelator' / 'pySTXM' switching; force channel to 'counter0' if pySTXM; fix error of non-structure nexus_head parameter on first read; add nexus_i_norm (200 mA for CLS, 500 for Soleil)

axis_c - add stacks~y_illumination correct (for CLS cryo-STXM ZP scanned stacks);change stacks~image alignment to work with *.axb files

ax_check_overwrite - NEW - probably duplicates existing routine - needs more work

img_algn - write files as *.axb unless input was *.nc

img_asav - change format of '*.sl' file to current one (folder only on first line); *.axb

make_square - if no energy in s, then make one

read_nexus - fix read of point spectra; get single image working

stack_illumination_correct - NEW routine; corrects for uneven vertical illumination on a line-by-line basis; needed for cryo-STXM in cases where OSA not scanned vertically

stack_process - modified axb_Save for avg and maps to get around unreadable maps. turned out problemw was ; axb_save was saving doubles. When forced tmp.(x,y,d) to float, problem disappeared ; improved label; auto-name; scale by 1/2; check name & ask to overwrite before generating stack

============= 25 Jul 2017 from 02 Apr 2017 ===========

ax_interp_square - (bw) ensure number of pixels is calculated as positive

ax_nexus - add reset (clear filename); entry of name only; read py-STXM 1-image 'stacks'

axb_save - force extension to '.axb'

axis_c - add read~stacks~duv-raman; make files from write~graphics~tif compatible with imageJ

axis_dialog - add read_duv-raman

buffer - add wait to make compatible with unix (BW)

duv_com - new common block for DUV-raman parameters

get_num - add wait to make compatible with unix (BW)

mbuf - add wait to make compatible with unix (BW)

read_duv_positions - read positons and lase parameters

read_duv_stack - read stack of DUV-raman/fluorescence spectra

read_nexus - adapt to read py-STXM 1-image 'stacks'

stack_process - enable write of images to old NSLS (*.nc) format

============= 02 Apr 2017 from 21-Dec-16 ===========

ax_frc - Fourier ring correlation (stand alone or embedded in aXis2000)

ax_sdf - partial fix for the ax_sdf widget freezing if cancel filename read (cancel not working)

ax_xyscl - fix bug introduced Nov16 when added 'remember last parameters for changing x,y scale'

axis_c - add images~FRC-resolution

axis_dialog - add images~FRC-resolution, new version

read_nexus - handle part images (from aborted acquisition at CLS) correctly

write_sdf - write (x,y) cordinates to 3 decimal places (1 nm)

============= 21-Dec-16 from 20-Nov-16 ===========

axis_c - add utilities~other~[ECHEM plot, ISEELS Display, print ISEELS Database]

axis_dialog - add utilities~other~[ECHEM plot, ISEELS Display, print ISEELS Database]

echem_plot - generate set of png files with line tracing point in 1d data (spectrum, I(t), CV, etc)

img_load - enhance 'silent' keyword to reduce excess diagnostic reports

print_is_database - routine to display/print/save a set of ISEELS spectra from the
                                   ISEELS database using axis_ISEELS_display & Gadwin Print Screen

tif_to_ncb - modify to generate (*.ncb) stack, with size of the smallest image

============= 20-Nov-16 from 09-Oct-16 ===========

ax_interp - change location of 'M' to end of label

ax_xyscl - remember last parameters for changing x,y scale

axis_c -add utilities~change~dwell

axis_dialog - add utilities~change~dwell; change set energy to change energy

read_xas - add ability to read iseels data files (used in sepearate project)

stack_process - make default image format *.axb (not *.nc)

============= 09-Oct-16 from 11-Sep-16 ===========

ax_nexus - implement flip option for pySTXM images & stacks

nexus_com - implement flip option for pySTXM images & stacks

read_nexus - implement flip option for pySTXM images & stacks

read_xas - modified to read ISEELS database files

stack_process - correct error introduced in Jul-2016 for reading sets of images as a stack_list

============= 11-Sep-16 from 17-May-16 ===========

ax_interp_square - adapt to work with NeXus files

make_square - adapt to work with NeXus files

============= 17-May-16 from 20-Apr-16 ===========

axb_load - strip out tracking print statements

axb_save - modified to deal with doubles

ax_clear - modify to work with old (indexed) and new (true color) logo files

ax_load_logo - tried to get spin globe working with new logo files (not yet!)

ax_sdf - fix freeze of widget if cancel in browse

ax_nexus - make file preview more robust and improve calculation of elapsed time

ax_nexus_viewer - new procedure to view and discard unwanted files (also standalone)

ax_interp_square - properly handle images that were scanned in negative x and/or y directions

make square - pass through energy variable

read_nexus - corrected errors in read_hdf5 protocols; remember channel & region selections

============= 20-Apr-16 from 20-Mar-16 ===========

ax_interp_square - interpolate non-square pixel images to square pixels

ax_nexus - add preview, efficiency and other parameters when reading NEXUS (hdf5) format STXM files

ax_sdf - fix error with norm_string

axis2000 - add read~ascii images and move write and read to correct main menu lists

axis_c - add stacks - Ratio to another stack; use online_help, book ='axis2000.pdf' to access manual

axis_dialog - modify version and menus

axis_ini, axis_ini_save - modify to work on windows and unix systems (I hope !)

read_nexus - fix various aspects of reading NEXUS (hdf5) format STXM files (B. Watts)

read_sdf - move interpolate to square pixels ot external routing (ax_interp_square) to use in NeXus read-in

spc_load - fix incorrect code fo reading ascii image files

spc_save - fix incorrect code for writing ascii image files

stack_process - fix problem of reading sl lists of *.axb files

============= 20-Mar-16 from 16-Feb-16 ===========

ax_nexus - new routine to read in NEXUS (hdf5) format STXM files

ax_sdf - fix error with norm_string

axis2000 - modify start-up to work on windows and unix systems (I hope !)

axis_c - add stacks - Ratio to another stack; use online_help, book ='axis2000.pdf' to access manual

axis_dialog - add Ratio to another stack

axis_ini, axis_ini_save - modify to work on windows and unix systems (I hope !)

read_nexus - improved using new NEXUS routines (B. Watts)

read_sdf - improve graphics for MacOS

stack_add - add Ratio to another stack

stack_process - rearrange to make more compact for Mac OS

============= 16-Feb-16 from 03-Aug-2015 ===========

axis_c - improve documentaton in label of computed elemental response (SF); add stacks~ratio to another image

axis_dialog - new version

axis_read_image - add filter keyword

plotbuf - change call of ax_colorbar() to ax_colorbar (stricter syntax rules in IDL 8.3)

read_nsrrc_peem - updated to read (nx, ny) from header; use uint for data to avoid rollover

stack_add - incorporate ratio of 2 stacks

stack_process - rearrange to make more compact for Mac OS; pull down menu for processing

stack_split - freed logical units after each use

stack_wb - freed logical units after each use

============= 03-Aug-15 from 02-Jul-2015 ===========

NB STARTING FROM 03-Aug015 aXis2000 wil be compiled in IDL8.3 to enable hdf5 NeXus read-in
      from this point on there will be a pre-8.3 legacy version (Windows only) and the 8.3 version

ax_colorbar - change 'colorbar' to 'colorbar_dwf' to avoid confusion with post8.0 COLORBAR routine

axis_c - add STXM NeXus read-in (SLS, Bessy-2, Diamond); OS-dpeendent in file names; change text to texta since IDL8.3 has a text program

axis_config_dir - NEW - save information about author and aXis2000 program

axis_ini - simplify. write axis_win.ini or axis_unix.ini depending on the operating system

axis_ini_save - write different files for Windows and Unix; changed to simplify writing DefPath

axis2000 - use OS dependent default ini file names (axis_win.ini or axis_unix.ini); activate auto detection of code path

ax_nexus - NEW - widget to control rad-in of hdf5 NeXus format STXM data files

ax_sdf - add View i-ring get_details buttons, re-arrange layout

colorbar_dwf - Fanning Colorbar from 1999 renamed (was called colorbar) to avoid confusion with post8.0 COLORBAR routine

nexus_com NEW - common block used for read_nexus

read_nexus - NEW -routine to read data in hdf5 NeXus format (SLS, Diamond, Bessy..)

read_sdf - remove pixel-by-pixel ring current mormalization, improve user feedback

sdf_com - changes to common block

sdf_stack_cur - extracted from read_sdf to allow auto-compile before read_sdf is called

stack_process - correct error associated with XY-calibrate (changing size of stack data)

zstack_align - ensure DefPath is defined correctly as exit Zstack_spectra; added @axis_com then change 'label' to 'zlabel' to avoid ambiguity

zstack_analyze - ensure DefPath is defined correctly as exit Zstack_spectra; added @axis_com then change 'label' to 'zlabel' to avoid ambiguity

zstack_buildlist - change 'colorbar' (IDL8.3 has this with different code) to 'colorbar_dwf' ; add axis_com then change 'label' to 'zlabel' to avoid ambiguity

zstack_display - change label to zlabel since label is an array in axis_com

zstack_spectra - ensure DefPath is defined correctly as exit Zstack_spectra; added @axis_com then change 'label' to 'zlabel' to avoid ambiguity

============= 02-Jul-15 from 15-Jan-2015 ===========

axis_c - processing links for reading Mistral TXM hdf5 files

axis_dialog - add buttons for reading Hdf5 TXM files (Alba)

ax_xycal - correct 1-point calibration / truncation system

read_txm_alba - single image and stack reader for Mistral TXM hdf5 files (new)

stack_process - apply correct (x,y) axes / scales to truncated stacks

stack_rotate - (x,y) axes / scales of rotated stack written correctly
                        alert user to stacks with non-square pixels; use avg. value

============= 15-Jan-2015 from 01 Dec 2014 ===========

axb_load - add keyword TITLE

ax_bin - get bin~energy to work correctly

ax_display_ptycho - new routine to display ptychography data from ALS BL 11.0.2

ax_display_ptycho_com - common block for ax_display_ptycho

ax_fix_rollover - add keyword, one, an option to process 1 file

axb_save - add no_aXis keyword to suppress loading result into aXis2000 buffer

ax_select - add no_axis keyword to allow use of ax_select outside of aXis2000

axis_c - fix image~warp, stacks~bin~energy, add ax_display_ptycho

img_warp - get 4-point warp aligning of 2-images to work properly

============= 01 Dec 2014 from 29 Oct 2014 ===========

axis_c - remove use of fpath (it is an IDL routine)

axis_ini_save - update informational text at bottom of axis.ini file; save path and last filename info

axis_ini - save path and last filename info

stack_process - write movie files reliably to defined path; allow spaces in path names;
                               remove all strcompress(/remove_all) calls which prevent strings for folder or filenames to contain blanks

read_sdf - read in ptycho STXM images

============= 29 Oct 2014 from 28 Jul 2014 ===========

axis_dialog - change spacing on X,Y,Z pixels to adapt to larger default Win7 font

ax_img_avg - corrected error - region - no zeros did not work correctly

read_sdf - compute map correctly for non-square pixel images

============= 28 Jul 2014 from 30 Jun 2014 ===========

(NB many files had headers updated to conform to IDL conventions for making a help file from the headers)

ax_ini_save - save last file name as well as path

ax_sdf - put normalization value on widget; start with last file loaded to gui if ax_sdf used last

axis_c - adapt scale bar to add xl, yl; add Axes switch to allow plotting without axes

axis_dialog - change display to remove tics & axis labels for 2d data in Axes = 0 mode - change xz_profile size

axis_ini - save last file name as well as path

parsestring - modify to read comma separated ascii files

plot2d - remove ticks & increase size of main window in Axes= 0 mode; adjust margins so side windows line up

plotbuf - add X-label on same line as scale bar length, when AXES = 0 (do not plot axes)

read_sdf - ensure stand alone operation works; variabilize the ring current normalization value

spc_load - modify to read comma separated ascii files

text_read1 - modify to read comma separated ascii files

zimba_run - start zstack_analyze independent of aXis2000 from stack list (*.sl) or binary stack (*.(dat,ncb))

================================== 30 Jun 2014 from 24 Apr 2014 ================

ax_clear - recover if logo_file cannot be found (e.g. if the CodePath is wrong)

ax_sdf - Browse function works even if start from a file or folder not present

axis_c - add convert to OD with line Io

axis_dialog - add convert to OD with line Io; update version; change stack_analyse to stack_process

read_sdf - corrected error introduced inDec-13 version (sdf_lastfile was defined with the '.hdr' extension)

stack_line_io - NEW - performs convert to OD with line Io

tif_to_ncb - NEW - generate an axis2ooo format stack from a set of tif files (for SSRL TXM tomography)

================================== 24 Apr 2014 from 14 Nov2013 ================

axis2000 - add @sdf_com - so now remembers last SDF file type

axis_c - add @sdf_com; correct command strings;  
               make histograms reals, so can smooth without loosing sparse image data

axis_dialog - get write_tif working; update version

ax_sdf - only display sdf_lastfile if it is a string ; make selector pick last file as default

make_tomo_list - output and write data to file

read_bessy_txm - add call to princeton_header_define

read_sdf - reversed change in what sdf_lastfile is - was main name; had changed to full (path, main * extension)
                      which ended up having the read_sdf widget displaying full version in the name box

stack_process -  rotate stack - correct x, y dimensions; check for existing name BEFORE completing stack write; add convert format~to axis binary from~ tif (to input stacks of tif files from ImageJ)

stack_wb - add OVERWRITE key word, to avoid dulpicated checks for overwriting

text_read1 - unsuccessful attempt to prevent crashes when reading text blocks without numerical characters

win2tif - get actual data and write as FLOAT

================================== 14 Nov 2013 from 01 Sep 2013 ================

axis_c - add stacks~tomography~ (generate stack of all data), add make_tomo_list

axis_dialog - add stacks~tomography~make tomo list

ax_angle_stack - generate full stack of all images

read_sdf -   sdf_lastfile, sdf_path defined in main routine; add keyword no_save ;
                       ignore request to normalize to ring current if beam current not defined or below a threshold

stack_rb - increased field size for indicating the E-range

================================== 01 Sep 2013 from 22-Jul-13 ===================

axis_c - add read_stacks~nsrrc_peem

axis_dialog - merge all write~graphics menu items

axis2000.pdf - updated help file (last one was Aug 2010)

contents.lst - updated list of all files (with a definition for each)

nsrrc_peem_com - (NEW) - common block for reading NSRCC PEEM stack files

read_nsrrc_peem - (NEW) - read in PEEM stack data (*.pem)

read_sdf - make number of stack file the default file name (no leading zeros)

stack_process - establish a correction for 2 identical energies (shift E(i) by 0.25*[E(i-1) -E (i-2)]
                               banner name now stack_process (stack_analyze refers to CJJ's GUI)

================================== 22-Jul-13 from 09-May-13 ==============================

ax_sdf - fix GTK bug (supplied by B. Watts)

axis2000 - adapt to Windows so it will work with IDL version 6.3; use internal routines for CodePath (supplied by B. Watts)

axis2000-batch - add axis standard header

axis_c - update for reading NSRRC SPEM files

axis_dialog - update for reading NSRRC SPEM files

file_overwrite - cleaned up

nsrrc_spem_com - (NEW) - common block for reading NSRCC SPEM files

read_nsrrc_spem - (NEW) - read in SPEM sample curent images & generate stack of 16-channel analyser data

read_nsrrc_spem_gui - (NEW) - widget for supplying parameters for reading NSRCC SPEM files

stack _wb - remove duplicate check for file overwrite

================================== 09-May-13 from 11-Mar-13 ==============================

ax_read_txrm - uses Java code (from Florian Meirer) to read in *.txrm files (Microsoft structured storage)

ax_read_txrm_stack - read in a stack of TXRM images (Xradia)

ax_rgb - remove scale bar (inaccurate)

axis_c - add TXRM image and stack readin

axis_dialog - dd TXRM image and stack readin; re-roder the Read menu to be strictly alphabetic

disp3col - add scale bar to RGB composites (but removed as code generates an inaccurate erorr bar)

stack_process - reduce recommended size of zoomed stacks

================================== 11-Mar-13 from 15-Jan-13 ==============================

gen_e - generate a list of energies from {start, step} file

tif_convert - modified to read in Saga-LS PEEM stacks

================================== 15-Jan-13 from 03-Feb-12 ==============================

ax_curvfit - display the header of the data with log

ax_file_load - implement automatic OD generation

ax_read_xas - add filename to label for 'xas' (NSLS) spectral format read-in

ax_regress_spectra - add header to log to track data

axb_load - get rid of NaN values when read image data

axis_c - clip numeric; add label in *.xas files ; add routines (stacks~rotate, read_Ptychography.Shapiro) ; correct label for calib

axis_dialog - add new routines (rotate stack, clip numerical, read ptychography)

clip - add numerical clipping

h5_read_ptycho - NEW - read Shapiro format pytchography output (HDF5) files (*.pt)

mbuf - position mbuf widget over calling widget

ptycho_select - NEW - widget to select among HDF5 entries (can generalize for any HDF5 file)

ptycho_select_com - common file for ptycho_select

read_h5_ptycho - reach in shapiro format HDF5 pytchography analysis output

read_xas_xrf_stack - allow user to generate '*.ssl' file

read_xrf_stack - correct error (with 'get_num')

spc_load - implement multi-column, read all columns; handle cases where file does not exist better

stack_process - solve problem of avg_image overwriting active buffer; preload filename with name of stack;
                                add stack name to label; default map (2-E); stop overwriting CurBuf when save map image

stack_rotate - NEW - rotates each image of a stack by an arbitrary user-defined angle

xas_xrf_extract - extracts absorption stacks from a 4-d array (*.ssb) & writes them as regular 3D stacks (*.ncb)

================================== 03-Feb-12 from 15-Dec-11 ==============================

ax_regress - add M correlate parameter

axis2000 - start up file modified to work on Macs (but hardwired to APH path)

img_warp - force plotting to be done on MainImg

ln_norm - add switchable normalization to the mean for the H, V lines (to use for pattern noise reduction)

================================== 15-Dec-11 from 24-Nov-11 ============================== - remove duplicate 'hist' label - handle images when all image is zero - rewrote algorithm to improve speed; add an hourglass symbol - correct method to work for all image sizes - rewrote algorithm to work properly; images meshed to finest scale prior to appending - correct method to distort (X,Y) axes in arbitrary ways - correct images~generate mask~manual to work for all image sizes - add energy value to result of 2d-normalization; make horizontal normalize preserve intensity

make_square - adapt to avoid error if there is only 1 x or y value - add hourglass for Oxford (Inca) stack read-in -adjust row / col values to IDL notation (0 to # - 1); add tooltips; add adjustable Path
                                   - preserve aspect ratio in the zoom

================================== 24-Nov-11 from 29-Oct-11 ============================== - add Images~Modify X,Y axes - update default info save (e.g. name of folder) - auto save without asking user unless folder or pre-existing ini file cannot be found

get_num - modify to add TITLE keyword; display '0' - improve reliability for *.sl stack list files in different formats

stack_rb - increased size of field to display stack size - uses fractional zooming for large stacks; selecting YIELD desensitizes OD;
                               read stacks from lists of *.axb as well as *.nc files; fractional zoom as defaults for large stacks

================================== 29-Oct-11 from 31-July-11 ============================== - new routine (derived from to bin single images (*.axb format) - change to default directory; read_bessy_TXM routines added - reads a stack of images from Bessy TXM - reads a single image from Bessy TXM - core routine to read the *spe (and associated *-positions.txt header file) images from Bessy TXM - add button to rotate the whole stack 90 degrees CW, CCW

================================== 31 July -11 from 17-May-11 ==============================

ax_angle_stack - change to read from a set of follders; add 'map' read function

axis_c - add read~spectra~alignment; bin (image, spectra) - add option to SUM; rationalize stacks~tomography;
               get working Read~spectra~NSLS~mapper' spectral files

axis_dialog - add read~spectra~alignment

read_sdf - remove obsolete 'read_bl5' ; converted map routine to use 1,2,3 (people) numbering of images
                   [ instead of 0,1,2,3 (IDL) ] so that the one_image and map image numbering protocols are the same

cryo_to_stxm, init_sd, read_bnl, read_bsp, read_mapper, read_csv, refresh, read_axm,
                 read_stxm, write_stxm, zstack_read_mapper
- changed init_stxm_sd to init_sd; standard header

sav_nsls - remove dead code

stack_process - remove 'wt_spec' (obsolete routine to read BL 7.0 STXM files) (all other stack_analyze versions)

================================== 17-May-11 from 19-Feb-11 ==============================

axis_c - changed default utilities~print to B/W and set up system to remember user selected size, color
               add images~remove lines~auto

ax_make_xyz - reads aXis2000 binary stack (*.dat, *.ncb) and writes data as ascii (x,y,z) tripets
                                  to allow import into other plot programs (SigmaPlot, Origin, etc)

ax_svd - re-activated query to user for global limits on component maps (force non-negativity)

read_xrf_img - improved auto reading of XRF elemental maps written by Oxford Inca softwawre
                          by automatically identifying the row/column limits of rectangular maps

remove_lines - new routine to auto-identify a line strongly deviating from others and automatically replace it
                           with average of 2 adjacent lines (needed due to many drpped lines in present 5321 data)

stack_process - add button to remove bad lines

================================== 19-Feb-11 from 03-Feb-11 ==============================

ax_mesh - OOPS - screwed up this code change & had to redo

read_sdf - corrected I-ring normalization to work with changed format (Nov10) of line in the *.hdr file

================================== 03-Feb-11 from 03-Oct-10 ==============================

axb_load - display only short filename (no path) in axis log

axis_c - remove link to Jacobsen's stack_analyze (& display message it can be run from VM directly)
              NB from Sep 2008 to this version, cannot read or write *.nc files due to conflict with stack_analyze
           - change Utilities~Calculate X-ray parameters (SF) to default to transmission and to compute OD at end

axis_dialog - add stacks~change mesh or size; update versioon

ax_image_append - ensure energy is included in output files

ax_img_del - enlarge small images and reduce large images prior to deletion  
                     (can now delete regions from images larger than the display window size)

ax_mesh - ensure energy is included in output files

ax_rgb_map, ax_rgb_com - add option to force all pixels with values > upper limit to be black

ax_select, ax_select_com - add newe buttos to allow saving of ROI_file or the mask image independently

gen_aa_string - corrected @axis-com to @axis_com

read_sdf - stack read-in - interpolate to square pixels

stack_mesh - new routine to modify mesh (same total image size) or modify image size (same pixel size)
                 NB this is useful if one wants to add or append stacks of same area but slightly different pixelation

stack_process - display Io from files; starts with image intensities rescaled at each image

stack_rb - corrected error introduced in Feb-10 - would not read files written by stack_wb if used integer scale factor

================================== 03-Oct-10 from 24-Jul-10 ==============================

read_XRF_stack - correct read-in of single energy STMX_contol XRF stacks

================================== 24-Jul-10 from 21-Jun-10 ==============================

aa_writeconfig - write configuration of Amino Acid spectra look-up (XSpecSim)

averageval - interpolate spectral data (XSpecSim)

ax_bin - add bin~energy - improve statistics by reducing number of energy points

ax_sdf - correct code errors found by compiling in IDL 7.1

axis_c - incorporate XSpecSim files into aXis2000; extend capabilities to read XRF data (hdf5, re-organized dialog)

axis_dialog - add read_ascii_img - 2d text image; add XRF-map readin for APS and CLS XRF systems; bin~energy

axis_log - fix code errors found by compiling in IDL 7.1

despike - add into package (CJJ routine to remove extrema from mages, called in zstack_analyze)

extrapolateaa - extrarpolate spectral data (XSpecSim)

genextrap - extrarpolate spectral data (XSpecSim)

parsecomposition - determine elemental composition from AA codes (XSpecSim)

pickfile2 - accomodate calls where defpath is not defined

read_aa_header - read AA spectral file header (XSpecSim)

read_aadata - read AA spectral file (XSpecSim)

read_dm_datacube - update to read in stack parameters from *.txt file written in export from Digital Micrograph

read_energies - read energies from an *.enf file (XSpecSim)

read_lox - get and display energy of image files

read_xrf_spectra - adapted to read hdf files written by XGLabs; fixed errors in read-in of *.dta spectra

read_xrf_stack_hdf5 - reads XGLabs XRF maps

region_analyze - region analysis - using single peaks in spectral domain to identify spatial regions (R. Coulombe)

rstack_analyze - Remy Coulombe version of stack_analyze - most of this is out-dated

sav_aa - sav peptide spectrum generated by X-ray spectral simulator (XSpecSim)

sfconvert - close header definition

stack_fit - fix code errors found by compiling in IDL 7.1

stack_process - update energies in filename_ev_msec list when use E_cal function; replot spectra;
                            - provide direct display without reading *.ncb file (use if stack in memory)

stack_rb - correctly read in stacks written as REALS (not scaled integers)

stack_wb - coreectly write stacks as REALS (-ve scale parameter indicates data is REAL)

write_cts - fixed errors in filename generation

xspecsim - X-ray spectral simulator (XSpecSim)

xspecsim_com - common for X-ray spectral simulator (XSpecSim)

xspecsim_init - initialization of energies and data files for X-ray spectral simulator (XSpecSim)

xspecsim_run - start file for X-ray spectral simulator (XSpecSim)

================================== 21-Jun-10 from (27-Mar-10) ==============================

ax_clear - resets to default color table right after logo loaded so do not need to select a buffer before executing a command for which the tesult is color table sensitivel

pickfile2 - remove 'forcing extension' warning

read_sdf - add no_display option

read_ascii_img - reads image files which are (x,y) ascii data without header

read_APS_xrf_maps - read XRF maps from APS XRF microscopes

read_cls_sgm_srf - read XRF excitation spectra fro CLS SGM beamline

read_xas_xrf_stack - read STXM_control format 4-d stack (XRF at each pixel of a normal stack)

read_xrf_img - improved - deal with situation when Amptek *.mca file does not have calibration info

stack2_rb - reads a 4d data set (XRF stack of stacks) - under development

stack2_wb - writes a 4d data set (XRF stack of stacks) - under development

xas_xrf_extract - extracts absorption stacks from a 4-d array (*.ssb) written by XAS_XRF_STACK and writes them as regular 3D stacks (*.ncb)

xrf_com - common block for xrf_map_selector

xrf_map_selector - used with read_APS_xrf_maps to select maps for each aXis2000 buffer

================================== 27-Mar-10 from (21-feb-10) ============================== - added parameters related to XRD (Inca maps) - enable read-in of multiple *.tsv files - correct for error on missing data tags - reads in stacks written by Gatan Digital Micrograph EELS software - trim to non-zero parts of Inca maps - allow read-in of fill 8095 XRF spectra; - adapt to XRF map files written by STXM_Control from XGLabs data - remove keyword axis in call for ax_sort_mono - converts an aXis binary stack to set of ascii spectra (*.cts) ; suitable for input to PyMCA

================================== 21-Feb-10 from (03-Aug-09) ============================== - changed name to avoid conflict with same common block inside stack_analyze.sav (CJJ) - correct syntax error on include common - correct number of channels in print tag - extend to up to 16 spectra (needed for XRF fitting) - (IDL file - modified its internal common block to avoid conflict) - NEW - converts {*.dta} to (*.cts) and an axis *.ncb XRF stack - NEW - reads interferometer positions and shifts to make a more accurate image (not yet in aXis2000) - ADDED (Twinmic XRF &Transmisison read-in; spectra fix_rollover; grouped power commands in image & spectra; EELS-MSA read-in; XRF (Amtek, XGLabs, Inca) spectra and stacks; DM_datacube readin (GIF EELS stack) - added buttons for new XRF-related read-in and conversions - removed axis_ini_save code to obey IDL 7.x conventions - isolated from to obey IDL 7.x conventions - changed axis_ini_save call from procedure to a function - removed embedded code to obey IDL 7.x conventions - updated to add Elettra, SSRL names and links - isolated from to obey IDL 7.x conventions - corrected read_png for correct orientation and color - isolated from to obey IDL 7.x conventions - NEW - reads in Twinmic format image or spectra - commented out all lines calling a routine '' - isolated from to obey IDL 7.x conventions - fix group ID problem - isolated \from LOADSPEM.PRO to obey IDL 7.x conventions - NEW - read in EELS datacube (exported *.raw file from Gatan Digital Micrograph) and convert to aXis2000 *.ncb binary stack format - add region name to label - NEW reads in XRF images from Twinmic STXM; Inca (Oxford SDD) or Tescan SEM - NEW reads in XGLabs X-ray fluorescence spectra - NEW - read is XRF stack written by STXM_control (*.xrf) or by Oxford Inca (*.raw, *.rpl) files - name changed from sav-hdf (hyphens not allowed) - added read in for EMSA/MSA EELS spectral files (1-column); Amptek (*.mca) and XGLabs (*.dta) XRF spectral - add /silent keyword - check for different numbers of images in the 2 stacks - replace @aligncom with @stack_process_align_com to remove name conflict with same common block inside stack_analyze.sav (CJJ) - filename_ev_list problem fixed - add spatial scale calibration (x-axis - full range) - changed name to remove conflict with stack_align_common in stack_analyze.sav - adapt to reading in stacks written as reals - add real option (for high dynamic range data such as TEM-EELS); add over write protection for *.dat ; add hourglass for large stacks - removed embedded code to obey IDL 7.x conventions - isolated from to obey IDL 7.x conventions - REMOVED axis_com common - changed write_gif procedure to ax_write_gif procedure to work-around the conflict of the named write_gif_common common block in IDL's with that embedded in stack_analyze.sav (CJJ)

================================== 03-Aug-09 from (07-Mar-09) ============================== - changed analcom to stack_process_com (update to stack_process) - changed analcom to stack_process_com (update to stack_process) - add additional paramaters (ScanType, Energy) to GUI widget; i-ring normalization - add stack name to component map; remove 'clip at limits' option; re-arrange menu - add stack name to component map; remove 'clip at limits' option; re-arrange menu - changed analcom to stack_process_com (update to stack_process) - changed analcom to stack_process_com (update to stack_process) - changed analcom to stack_process_com (update to stack_process) - change normalization current to 500 mA (ALS) - improve alphabetization of some menus - changed analcom to stack_process_com (update to stack_process) - write out files if use stretch-shift with different tag (path problem before) - correct error in reading png format files - changed analcom to stack_process_com (update to stack_process) - changed analcom to stack_process_com (update to stack_process) - fixed code error (xsize, ysize) - changed analcom to stack_process_com (update to stack_process) - fix loss-of-energy scale problem (wrong common block)
                            add ScanType and other information from parameter file; i-ring normalization - changed analcom to stack_process_com (update to stack_process) - change sdf_normalize so it adapts to changes in norm_value - changed to short file name feedback (no path) - changed analcom to stack_process_com (update to stack_process) - changed analcom to stack_process_com (update to stack_process) - corrected a problem with filename_ev_list array indices - add stack name to component map; remove 'clip at limits' option; re-arrange menu - changed analcom to stack_process_com (update to stack_process) - auto-transfer name of roi to name of output - changed analcom to stack_process_com (update to stack_process) - changed analcom to stack_process_com (update to stack_process) - changed analcom to stack_process_com (update to stack_process) - changed analcom to stack_process_com (update to stack_process)

zstack_(align, analyze, buildlist, display, plot, profile, readlist, save, spectra, tune).pro
                     - extract all common to external files; change alog10 to alog when computing OD

================================== 07-Mar-09 from (29-dec-08) ============================== - used longer version from later CJJ - modified towork with IDL5.2 (switch) - modified to work with stxm filenames containing letters - allow access to olf CJJ alignment routine (select read_alignment, then cancel) - add read~stacks~(FTIR, PEEM) PEEM routine same as stacks~convert format~peem - add routine to interpolate images using interferometer (x_pos, y_pos) values saved by STXM_control - add xy_correct_flag to identify if interferometric correction is valid - differentiate a stack (option for FTIR stack processing) -(new) routine to change requested (x,y) co-ordinates to interferometric (x,y) co-ordinates for a single image - replace read_mapper with zstack_read_mapper to allow correct reading of all types of *.aln formatted files

zstack_(align, analyze, buildlist, display, plot, profile, readlist, save, spectra, tune).pro - introduce @zstack_common - add binary_filename (to allow auto generation of align file name)

================================== 29-dec-08 from (17-Sep-08) ==============================

axis2000.pdf - updated help file

ax_read_roi - puts ROI image in the current buffer (not buffer 0)

read_ftir - (new) converts FTIR maps (Thermo ver 7) to ncb binary stack files

stack_process - checks for overwrite when writing any type of output

spc_save - remove duplication of overwrite check

read_bessy_stack, read_bessy_stxm, read_bessy_xml - (new) - read in data from old Bessy STXM

ax_name - adapt to work with names containing '.'s

================================== 17-Sep-08 from (15-jun-08) ==============================

tif_convert - allow read in without ring current normalization

read_peem3 - remove ring current normalization if ring current less than 1 mA or absent

stack_analyze.sav - add Jacobsen version (Version 2.6.1, Dec. 9, 2005) - use directly if only have VM

pca_gui.sav - update to Version 1.1.1, Dec. 9, 2005

stack_process - new name for aXis2000 version (old stack_analyze); add check for file overwrite

many files (stack_xx, ax_svd, ax_pc, ax_tomo_read, ax_pol_map, ax_cgo, ax_slicer3, stack_rb, stack_wb) - convert common block name from analcom to stack_process_com to differentiate from analcom block in Jacobsen's stack_analyze.sav

================================== 15-jun-08 from (20-Apr-08) ==============================

axdeltamin - new routine to find minimum spacing between adjacent points in an array

axis_c - add multi-column writing of multiple spectra (over the range displayed) using write~xas single/multiple

ax_write_xas, write_xas - modified to perform multi-column format writes

read_lox- modified to read binned images correctly

plot_buf - now ignores NaN and infnities, so one can visualize spectra or images even when there are divide-by zero errors

================================== 20-Apr-08 from (01-feb-08) ==============================

axis2000 - startup file now auto direct to c:\axis2000 folder in codePath not found

stack_append - isolated form aXis2000 - NB need to preview the first stack for it to work

stack_analyze - overwrite protection implemented for saving spectra; saved in aXis format ( retired)

Zimba package (all files) - modified to have fixxed GUI size on non-windows operating systems (allows use on MacOS)

================================== 01-Feb-08 from (29-Dec-07) ==============================

spectra~convert to. (OD, OD1, IP) - convert to OD   - now uses interpolation so energy spacing in I, Io can differ
                                                                 convert to OD1 - converts spectrum to absolute linear absorbance for 1 nm

================================== 29-Dec-07 from (11-Dec-07) ==============================

stacks~RGB color composite map - new widget (ax_RBG_map) to generate RGB composites with more control
                                                                     (CAUTION: does not work in VM version or pre-IDL 6.3)

images~generate mask~threshold - new widget (ax_select) with lower/upper bounds and more control 
                                                                     (CAUTION: does not work in VM version or pre-IDL 6.3)

ax_histogram - segregated from main routine and corrected

cw_rslider - introduced from IDL share site (Thomas Döring 6/1/2007) - allows lower/upper bounds and move window

plotbuf - removed date/time from the label

================================== 11-Dec-07 from (13-Sep-07) =================================

Remove_zeros - hot and cold spot removal implemented (called from stack_analyse)

Stacks~bin~(*.ncb, lox) - Lox (CLS PEEM) stack files can be read in, binned, and written as *.ncb files

================================== 13-Sep-07 from (01-Jun-07) =================================

Read_peem3 - improve readin routine & adapt to further changes in data format

ax_cimage - clean up images by removing very low and very high values. (from A. Scholl)

================================== 01-Jun-07 from (14-May-07) =================================

Stacks~statistical analysis~pca_gui - Jacobsen's PCA routine accessed as a sav file
                                    - manual at

Read STXM (sdf) - selected images from any channel (bug fix)

Utilities~Write image ascii - corected to write axis images as text not binary (bug fix)

stacks~maps~polarization fit - default values improved
spectra~Curve fit~polarization fit - default values improved

================================== 14-May-07 from (23-Jan-07) =================================

Utilities~compute peptide spectra - new routine to predict peptide and protein spectra from sequences

Read~images~PEEM~ALS PEEM3 - corrected for evolution on file format

Stacks~map~polfit - access to convergence properties added

================= 23-Jan-07 (from 05-Dec-06) ========================================

Linescans~Locate Line - working for SDF files

Stack_analyze (viewer) - multiply by constant, image
                                            - write out inmages in axis format (correct error)

Read~images~PEEM~ALS PEEM3 - new data format for ALS PEEM (on PEEM-2 and PEEM-3)

Stacks~convert format~PEEM - reads new data format for ALS PEEM (on PEEM-2 and PEEM-3)

Read_lox - errors fixed

Spectra~ convert _to_BE - error fixed

================= 05-Dec-06 (from 12-Nov-06) ========================================

axis_dialog - screen scroll set to be implemented only in Windows version (Linux compatibility)

============== 12-Nov-06 (from 10-Oct--06) ===============================
- set user selected ROI to 1, all other pixels =0

images~generate_mask~threshold - set all pixels > user-defined threshold to 1, all other pixels =0 (old code)

stacks~append - append (combine) two stacks

stack_analyze - modified to add ratio~constant - gain adjustment of the z-scale of the stack



© 2024 A.P. Hitchcock / McMaster University - All Rights Reserved
web site design by Christopher Amis (2002). Last updated on 20 Jan 2024 (aph)