source: trunk/CHANGES @ 1087

Last change on this file since 1087 was 1087, checked in by MatthewWhiting, 12 years ago

Updating information about installing Duchamp, both in the README file and the user's guide. Also updating other bits of README and the CHANGES files.

File size: 50.6 KB
Line 
1Duchamp version 1.2.1 (2012/10/09)
2----------------------------------
3
4New feature:
5
6* Duchamp can now produce region files to annotate images displayed in
7  SAOImage DS9. There are new parameters flagDS9 and ds9File that work
8  in the same way as the Karma annotation file parameters. The region
9  files can also be displayed in (at least some versions of)
10  casaviewer.
11
12* There is a new script to fix occasional problems with the
13  automatically-detected Makefile, and the verification script has
14  been updated and improved.
15
16Bug fixes:
17
18* The main bug fix for this release corrects a problem with the
19  velocity width measurements made when searching for negative
20  detections. It was possible to get very small (and incorrect) widths
21  in some cases - this was due to the integrated spectrum not being
22  inverted correctly.
23
24* In the case of smoothing, the stats of the full cube that were being
25  reported in the output files were actually those of the un-smoothed
26  (input cube). This only affected the output files, not the detection
27  process itself.
28
29* The units were not being reported in the VOTable. This has been
30  fixed.
31
32* The UCDs for the spectral parameters in the VOTable were not being
33  adapted to the user requests, so didn't always match the types of
34  the parameters. All should be consistent now.
35
36Other changes:
37
38* The codebase relating to the creation of and writing to output files
39  (results, logs, annotation, VOTables) has been overhauled, with a
40  cleaner interface. This was instigated by ASKAP/Selavy development,
41  but also allowed the expansion of output formats to include DS9
42  region files. No change to the user should be visible, but anyone
43  using the software will notice differences. Please get in touch if
44  changes are difficult to follow.
45
46Duchamp version 1.2 (2012/08/08)
47--------------------------------
48
49Key changes:
50
51* The way the wavelet reconstruction is done in the presence of BLANK
52  voxels is slightly different, specifically when there were BLANK
53  voxels on the edge. While BLANK voxels are always ignored by the
54  reconstruction (and left in place), the previous approach dealt with
55  BLANKS on the edge by moving the effective edge of the image inwards
56  until the first non-blank voxel. This meant that the size of the
57  dimensions used to determine the number of scales, and the location
58  where boundary reflections took place where different to the input
59  image size.
60
61  However, this meant that BLANK voxels on the edge were treated
62  differently to those not on the edge, so this inconsistency was
63  removed. The full image dimensions are always used to calculate the
64  number of scales, and reflections (which is how the reconstruction
65  deals with the boundaries) will occur at the actual image edges.
66
67  If your data has this property (BLANK pixels at the image
68  boundaries), then any reconstruction will be affected (most likely
69  only in a small way) and potentially any subsequent searching. You
70  are advised to check this (for instance by saving the results of the
71  resonstruction from 1.1.13 and 1.2 and comparing).
72
73* The way the spectral world coordinate system is dealt with has been
74  improved. Previously Duchamp tried to convert to a velocity axis,
75  and got a bit grumpy if that didn't work well. Now it will express
76  the spectral units in the axis type indicated by the FITS
77  header. Duchamp will also allow you to change this type by providing
78  an appropriate WCS type as an input parameter. You may also provide
79  a rest frequency in the parameter file and this will be used to
80  calculate velocities. And, as before, you can provide specific units
81  for the spectral quantities to be converted into.
82
83* Since v1.1.13 was released, the journal paper describing Duchamp has
84  been published. It can be found at MNRAS 421, 3242 (2012), or
85  http://onlinelibrary.wiley.com/doi/10.1111/j.1365-2966.2012.20548.x/full. It
86  includes descriptions of the various algorithms used for Duchamp, as
87  well as some indicative comparisons of the relative completeness &
88  reliability. Please cite this paper when describing Duchamp.
89
90Other new features:
91
92* The default value of snrCut has changed from 3 to 5. This is
93  espeically important if you use the -f option, but also if you don't
94  provide snrCut in your parameter file.
95
96* The XML VOTable output now includes a more complete list of
97  parameters, matching the output given in text form in the results &
98  log output files. Only those parameters affecting the results are
99  included - things like the output file names and so on are left out.
100
101* The minVoxels parameter is now adjusted to be at least (minPix +
102  minChannels - 1). If it is changed, a warning message is triggered.
103
104* The warning/error reporting has been overhauled, with an improved
105  interface for developers. Also, some ERROR instances that previously
106  resulted in the program terminating now allow it to continue
107  (provided that is possible given the error).
108
109* It is now possible to give the convergence criterion for the wavelet
110  reconstruction via the parameter reconConvergence. When the relative
111  change in standard deviation of the residuals from the
112  reconstruction falls below this value, the a trous algorithm stops
113  iterating.
114
115* The way one-dimensional arrays were dealt with was unsatisfactory,
116  both with the way positions were registered and the format of the
117  graphical output. Improvements have been made such that a 1D data
118  structure is assumed to be a spectrum, and so positions in the
119  spectrum are reported as z-pixels (or the equivalent world
120  coordinate). Instead of a 2D moment map, the X-windows display will
121  show the spectrum with all detected pixels plus the final list of
122  detections highlighted, along with the detection and growth
123  thresholds. This plot will also be written to the "detectionMap"
124  image.
125
126* All spectral plots will now show the detection (and growth, if
127  applicable) thresholds when plotting the peak flux spectrum.
128
129* Accessing FITS files when a subsection string is provided has been
130  streamlined. The cfitsio package, which handles the FITS access,
131  creates a temporary file containing this image section, and this
132  meant the previous approach was slow, particularly for large
133  files/sections. Now the file is only opened once and the overhead of
134  creating the temporary file is only encountered once.
135
136* Several aspects of the processing & output did not handle a
137  non-existent WCS well. This has been improved, so that all stages of
138  execution will proceed without errors.
139
140Bug fixes:
141
142* The absence of a BLANK keyword when trimming will now not trigger a
143  failure, only a warning message.
144
145* The flux unit conversion (eg. from Jy/beam to mJy/beam) was not
146  being applied correctly when an existing reconstructed or smoothed
147  array was being read in. This is now applied properly.
148
149* When saving reconstructed or smoothed arrays, the data type is now
150  set to FLOAT, so that the correct values are written (and
151  subsequently read in). The previous version was potentially saving
152  to a FITS file with integer data type (this depended on the type of
153  the input array). In this case, the full precision of data values
154  would not be preserved, so reading back in and doing an identical
155  search could yield different sources.
156
157* For certain cases, the reconstruction attempted to use a very large
158  number of scales. This has been fixed.
159
160* The maximum scale for the reconstruction was not always being
161  applied. The scale ranges are now enforced for all types of
162  reconstructions.
163
164* When saving a mask image while using a subsection of a cube, the
165  offsets for the subsection were not being accounted for
166  correctly. This is now fixed.
167
168* The detection map plots were not recording pixels added from the
169  growing stage. This has been fixed.
170
171* The RA & Dec now have appropriate precision, rather than an
172  arbitrary 2 decimal places on the seconds value. The RA will be one
173  decimal place more than the Dec, and they will reflect the degree of
174  precision in the image pixels.
175
176* A number of data type conversions (typically ints to floats) led to
177  errors in some calculations, such as WCS conversions. Care has been
178  taken to make sure all indexing is done appropriately with no
179  overflow, and that all conversions (where necessary) are done
180  appropriately.
181
182* It was possible to get world positions looking like 11:59:60.0! Not
183  any more.
184
185* Reading previous detections from the log file (via the use of the
186  usePrevious parameter) did result in error messages due to slightly
187  incompatible formats. These have been fixed, and all graphical
188  output should work properly.
189
190* When using a spectral search, having a blank pixel in the first
191  channel could lead to that entire spectrum being ignored, leading to
192  inconsistent results between spectral and spatial searches. This
193  issue has been fixed, with both types of searches returning the same
194  catalogue.
195
196
197Code base development notes:
198
199* Most instances of integer overflow due to insufficient precision
200  have been tracked down - many of these were indexing variables of
201  type int, which have been changed to size_t.
202
203* Importantly, for code interfacing with the duchamp::Cube and related
204  classes, axisDim is now an array of size_t elements, rather than
205  long.
206
207* Object3D now carries its spatial map with it, rather than
208  calculating it on the fly when requested. This saves a lot of
209  unnecessary computational effort.
210
211* The warning/error interface has improved, making use of C++
212  exception handling. This should be compatible with external logging
213  infrastructure (such as log4cxx).
214
215* The interface to the FitsHeader & WCS structures for external code
216  has been improved, so that the WCS can be set up via function calls.
217
218
219
220Duchamp version 1.1.13 (2011/04/10)
221-------------------------------------
222
223Bug fixes:
224
225* The median statistics calculations had a bug in the test for whether
226  the array under consideration was of even size. The correction for
227  this can mean small differences in the resulting values. This can
228  flow through to calculated detection thresholds - please check this
229  with your data if you use this mode!
230
231* The reconstruction code had a bug where the incorrect number of
232  scales was being used. This occurred when the blank pixel flag was
233  set, and when the spectral dimension was smaller than both the
234  spatial dimensions.
235
236Other:
237
238* The default value of the blank pixel flag has been set to false,
239  rather than true. For Duchamp, this should not matter, as it is set
240  when the FITS file is read in. For external code using, for
241  instance, the reconstruction algorithms, this default may be
242  important. Having it true was contributing to the second bug listed
243  above. It also makes more sense for it to be false unless explicitly
244  set in some way.
245
246* The reconstruction code has been streamlined a little, reducing its
247  memory impact and using more appropriate variable types
248  (eg. unsigned ints instead of ints and so forth).
249
250* For those who care about the actual code base, the statistics
251  functions have been expanded, and separated from getStats.cc into
252  "normal" and "robust" versions.
253
254
255Duchamp version 1.1.12 (2011/03/18)
256-------------------------------------
257
258Bug fixes:
259
260* The velocity width calculations had a bug that occasionally led to
261  very large values. The widths are calculated using the integrated
262  spectrum, using a threshold relative to its peak. In v.1.1.10 and
263  1.1.11, however, the peak was searched for over the entire spectral
264  range, rather than just the range for the current object. This led
265  to spurious values. This has been fixed, so that the peak is only
266  searched for within the detected ranage of the object.
267
268* Both the pixel and statistics subsections are now more carefully
269  examined, with errors reported if there are no valid pixels in the
270  pixel subsection, or if the statistics subsection does not intersect
271  with the pixel subsection.
272
273Other:
274
275* The configure script has been slightly improved so that the pgsbox
276  library is only added if PGPlot has been enabled - this is
277  particularly necessary with the slightly changed build procedure for
278  recent wcslib versions.
279
280* In a related note, one file - momentMap.cc - had some #include
281  statements that failed when PGPlot (and hence pgsbox in WCSLIB) was
282  not enabled. These were actually unnecesssary and have been removed.
283
284* There is a new input parameter - flagPlotSpectra - that allows the
285  user to turn off the production of the spectral plots. It defaults
286  to true (meaning the plots are produced).
287
288
289Duchamp version 1.1.11 (2011/03/01)
290-------------------------------------
291
292Improvements:
293
294* The largest changes in this release involved improving the
295  efficiency of the code, resulting in further speed-ups. The code
296  affected was the low-level object-handling code, with the merging
297  stages in particular showing good speed-ups.
298
299* The default value for the beam size, when the beam parameters are
300  not in the FITS header, has been dropped. Now the default behaviour
301  is to simply not make any beam corrections if the beam is not
302  specified by either the FITS file or the input parameters. Thanks to
303  Tobias Westemeier for the suggestion.
304
305* The reporting of the beam size has changed slightly to provide a bit
306  more information.
307
308Bug Fixes:
309
310* The statistics section (statSec) could be larger than the image
311  subsection (if provided), yet the pixels required would never be
312  read in from the FITS file. The behaviour has been changed so that
313  the statSec, if requested, is trimmed to be wholly within the image
314  section.
315
316* It was possible to request, for instance, spectral smoothing on a 2D
317  image. This resulted in a blank smoothed array, which led to
318  problems in the calculations of statistics (and hence the
319  threshold), as well as subsequent calculations. This has been fixed,
320  so that in cases like this the smoothing is turned off (and a
321  warning message is displayed).
322
323* There was a problem with using a MW range and subsectioning when
324  growing objects, as a result of changes in 1.1.10. This has been
325  fixed.
326
327* Inversion was failing when no array was allocated (not a problem for
328  standard Duchamp, but affected its use as a library by other code).
329
330* Writing text spectra would only occur when PGPlot output was enabled
331  in the build (it was combined with the plotting of the spectral
332  graphs). This has been changed so that this output can be requested
333  without requiring PGPlot.
334
335* The equation for the beam size in Sec.4.2 of the User Guide was
336  incorrect and has been fixed.
337
338* Minor change to the configure script to improve the detection of the
339  PGPlot library.
340
341Code development notes:
342
343* The main work has been additions and improvements to the interfaces
344  for the Param and the Section classes, as well as new classes to
345  manage the beam information. The efficiency changes mentioned above
346  also affected the internals of some of the PixelInfo classes, and
347  provided additional functions for judging the closeness of
348  neighbouring objects.
349
350Duchamp version 1.1.10 (2010/11/15)
351-------------------------------------
352
353Improvements:
354
355* The major change for this release is a greatly improved growing
356  algorithm. The previous incarnation was very inefficient (testing
357  all pixels in an object, most of which only have neighbours that are
358  already in the object), and could take an unnecessarily large amount
359  of time in the case of extended sources. The improved algorithm
360  makes use of voxel flags to quickly identify those voxels not yet in
361  an object and only examines them. For a certain test case
362  (observations of extended Galactic HI), the time required reduced
363  from about a day to about a minute! (Note that compact sources, such
364  as HI galaxies, will not show this degree of speedup...) Many thanks
365  to Tara Murphy for pointing out this bug and her help in
366  diagnosing/fixing the problem.
367
368* There have been a number of further improvements to the code to
369  speed it up, based on some profiling. The most important was the
370  function to add pixels to a 2D object, but there were several other
371  minor changes as well.
372
373* The minimum size of the detections can now also be specified in
374  terms of the total number of voxels (in addition or instead of
375  specifying the minimum spatial pixels or channels).
376
377* The way memory is allocated when reading the image has been
378  streamlined. The amount of memory being allocated is also now
379  reported - this is in an effort to allow users to identify problems
380  with running out of memory.
381
382* The version number is now reported in the results and log files.
383
384* Only the filename of the input image (ie. not the leading
385  directories) is now shown on the detection and moment-0 maps. This
386  is to avoid problems with large directory paths being too wide for
387  the plot.
388
389* The verification script was improved for readability (although no
390  functional change was made).
391
392Bug fixes:
393
394* Growing was not being done when a single source was found. Now
395  fixed.
396
397* For particular WCS setups, the RA can be interpreted as being
398  negative, which corrupted the Source ID (ie. the IAU-format
399  string). This has been fixed.
400
401* When the flux units were changed, problems had been seen when
402  writing a reconstructed cube to a FITS file. Any unit change is now
403  undone prior to writing and there should now be no problem.
404
405* Filenames with spaces in them were not handled well. New functions
406  were included and moved to a more obvious location. These filenames
407  now work as expected.
408
409* Spectral axes of type FREQ that had a rest frequency were not being
410  put into velocity units. Now fixed.
411
412* Improvements to the output to screen, making sure everything is
413  covered by the verbose flag.
414
415* Better management of the allocation of arrays.
416
417* The minSize parameter in Image was never initialised, leading to
418  unpredictable behaviour. Now fixed.
419
420Code development notes:
421
422* New functionality includes: a function to return a vector list of
423  voxels in an Object3D or Detection; a new generic Search function
424  (basically a front-end to each of the individual functions); more
425  complete copy constructors for the DataArray classes; new methods
426  for finding the velocity widths.
427
428Duchamp version 1.1.9 (2010/03/26)
429-------------------------------------
430
431Improvements:
432
433* There is now the ability to save the moment-0 map as a FITS
434  file. This is controlled by the parameters flagOutputMomentMap and
435  fileOutputMomentMap, which work in the same way for the mask file.
436
437* There is a new parameter flagRejectBeforeMerge that, when true,
438  rejects sources according to the minPix/minChannels requirements
439  before the merging and growing is done. This defaults to false (so
440  default behaviour is as before). Thanks to Tobias Westmeier for
441  suggesting this and the above improvement.
442
443* There is also a new parameter flagTwoStageMerging. When true (the
444  default), newly-detected objects are merged with the first close
445  object in the list. When false, they are simply added to the end of
446  the list. In both cases, a second round of merging is done to pick
447  up all close matches.
448
449* The way the beam is specified in the absence of the BMAJ/BMIN/BPA
450  parameters has been slightly changed. The use of "beamSize" was
451  somewhat ambiguous (it meant the number of pixels covered by the
452  beam, not the FWHM), so new parameters have been introduced. The
453  beam can be specified by beamArea (which replaces beamSize), or
454  beamFWHM (the FWHM of the beam in pixels). If beamFWHM is provided,
455  it will be used, else the beamArea will be.
456
457* There is a new parameter searchType that allows the user to choose
458  how the searching is done. The behaviour up till now has been to
459  search the 2D channel maps one at a time to build up the 3D
460  detections. This is the default, and can be obtained by setting
461  searchType=spatial. Alternatively, you can set searchType=spectral
462  to do the searching in the 1D spectra.
463
464* Profiling of the code has led to a few changes that have sped up
465  some calculations, particularly those involving the median. Rather
466  than using std::sort, the code now simply uses std::nth_element,
467  which shows a substantial speedup factor.
468
469* When using the objectList parameter, the maps will now only show the
470  selected objects, rather than all detected objects.
471
472* There is a new verification test that looks at the "growing"
473  functionality.
474
475Bug fixes:
476
477* When saving a mask FITS file, there was an occasional memory leak
478  that caused Duchamp to crash (only when the cube was suitably
479  large). This has been fixed.
480
481* The median calculation had a bug that led to an incorrect value
482  being reported. The difference will not be great (the element of an
483  array being reported as the median was out by one), but could be
484  noticeable depending on the dataset.
485
486* The MW range parameters did not respond to the use of a
487  subsection. They should refer to channel ranges in the original
488  cube, and changes have been made to the code to reflect this.
489
490* There was an occasional error in writing out FITS keywords, due to
491  the way comment strings were intialised. This has been improved and
492  made more robust.
493
494* Testing with gcc-4.3.2 showed a number of compilation warnings &
495  errors, which have been fixed.
496
497* The Gaussian smoothing kernel was too small - it is now made big
498  enough to encompass all possible values. It was also being
499  incorrectly scaled. This had no functional effect on the detection
500  of objects, but for other uses was incorrect. This has been
501  rectified.
502
503* Some outputs that weren't caught by the verbose flag now are.
504
505
506Code development notes:
507
508  The following notes only apply if you want to use the code as a
509  library, rather than the stand-alone package. These have generally
510  come out of the ASKAP software development. If you just use the
511  stand-alone package, they won't be a concern.
512
513* The API for storing detected objects has changed, making it more
514  robust from a programming point of view.
515
516* Additional versions of some functions (and the Gaussian smoothing
517  class) have been added - this has come out of the ASKAP development
518  work.
519
520* A number of instances of "unsigned int" being used for loops have
521  been changed to iterators or "size_t". There shouldn't be any
522  functional change from this -- the code should just build more
523  cleanly.
524
525* The Detection class now records whether the parameters have been
526  set, and unsets that flag when objects are merged. This allows
527  external programs to track which objects have been merged and deal
528  with them appropriately.
529
530
531Duchamp version 1.1.8 (2009/07/20)
532----------------------------------
533
534Improvements:
535
536* The final source list can now be sorted on one of a range of object
537  parameters: x-value, y-value, z-value, ra, dec, vel, w50, iflux,
538  pflux (integrated and peak flux respectively), or snr. Simply use
539  the new input parameter sortingParam. Its default value is vel, so
540  the default behaviour stays the same.
541
542* The FDR method involves calculating how many pixels are
543  correlated. This previously involved multiplying the beam area by 2,
544  implying that 2 neighbouring channels were correlated. This factor
545  is now a user-selectable parameter, so that if you know how many
546  spectral channels should be correlated, you can set the parameter
547  FDRnumCorChan and the FDR calculation will be done correctly.
548
549* Screen output now has more information on the growing threshold when
550  the cube statistics are printed.
551
552
553Bug fixes:
554
555* When reading in previous detections, there was a bug causing a
556  segmentation fault. This has been fixed and made more robust.
557
558* There was an apparent bug when writing out the reconstructed cubes
559  to a FITS file that caused the new file to be very large. Changing
560  the cfitsio function used has fixed this.
561
562* Using NCP projections near the equator could result in a large
563  stream of error messages, due to coordinate transformations being
564  done in blank regions outside of the acceptable range of world
565  coordinates. This has been fixed.
566
567* The function that grows objects had a major bug, that stopped it
568  working when flagAdjacent=false. This has been fixed and should work
569  fine.
570
571* The input parameter spectraTextFile was not being read
572  properly. This has been remedied.
573
574* The units for the integrated flux were wrong for some types of pixel
575  flux units. This has been fixed.
576
577* A minor bug caused incorrect calculation of the 20% widths.
578
579* All calls to uint were changed to unsigned int, as some compilers
580  had problems recognising that they were the same thing.
581
582* src/fitsHeader.cc was missing an include statement for stdlib.h,
583  again causing some compilers to fail.
584
585
586Duchamp version 1.1.7 (2009/01/16)
587----------------------------------
588
589Improvements:
590
591* The mask file that can be created with flagMask can now specify
592  which object a given detected pixel belongs to, by taking the object
593  ID as its value. This applies if you set flagMaskWithObjectNum=true
594  (it defaults to false, which means each detected pixel has the value
595  1). Non-detected pixels still have the value 0.
596
597* The names of the output FITS files are now able to be specified
598  directly by input parameters. These will override the default names
599  that Duchamp provides.
600
601* The Karma annotation file now specifies a font - previously it did
602  not and so was at the mercy of whatever was specified in other
603  annotation files being viewed at the same time. Please let me know
604  if the font I've chosen (lucidasans-12) is not suitable.
605
606* The default flag, used in the absence of 'E', 'S' or 'N', is now '-'
607  rather than blank. This will ensure that each column in the results
608  file has something in it.
609
610* The configure script is somewhat more robust to non-standard
611  systems, particularly when the X11 libraries are in unusual
612  places. It can also deal with the slightly different way that
613  wcslib-4.3 installs itself.
614
615* The installation part of the Makefile was altered so that the
616  symbolic link Duchamp that points to Duchamp-1.1.7 does not have the
617  absolute path encoded in it. This will enable the files to be moved
618  around at a later date.
619
620Bug Fixes:
621
622* Fixed a bug that caused problems when the flux units were less than
623  5 characters long (e.g. 'K')
624
625* The new velocity width values were not getting proper headers in the
626  VOTable output. This has been remedied.
627
628* Minor improvements to help non-pgplot use
629
630* Minor fix in WCS functionality.
631
632* Minor fixes to the FitsHeader class.
633
634* Improved FITS data reading, that doesn't require a nullarray
635  array. This will reduce memory usage.
636
637* Improved subsection parsing, particularly for non-standard WCS
638  systems.
639
640* Improving the memory allocation of the Cube class.
641
642* Fixed a bug that meant the growthThreshold values were sometimes
643  being lost.
644
645* Improving the way the growing and merging is done, particularly in
646  the case of non-adjacent merging.
647
648* Fixed a scaling bug in the GaussSmooth function.
649
650Other:
651
652* Numerous changes to the code that do not affect how Duchamp itself
653  runs, but were necessary for code development with the Duchamp
654  libraries (primarily as a part of the ASKAP code development).
655
656
657Duchamp version 1.1.6 (2008/09/08)
658----------------------------------
659
660New features:
661
662* The velocity widths can now be quoted in two additional ways: the
663  full width at 50% of the peak flux (ie. the FWHM) and the full width
664  at 20% of the peak flux (w_50 and w_20 respectively). The w_50
665  parameter is now quoted in the results printed to the screen
666  (instead of w_VEL), but all three are written to the results file.
667
668* The facility now exists to bypass the searching step and go straight
669  to the output stage using a list of previously detected objects. The
670  list is extracted from a previously-created log file. The user can
671  change the way the spectra are plotted (e.g. choose to plot
672  integrated rather than peak spectra), and select a subset of the
673  detected objects to be printed to individual postscript files. Use
674  the input parameter usePrevious (set to true) to use this facility,
675  and provide a list of objects using the objectList parameter
676  (eg. 1,2,4,7-10,15)
677
678* A new parameter "growthThreshold" has been created, that goes with
679  "threshold". If you manually specify a threshold, and you wish to
680  grow detections, you need to manually specify a growthThreshold (in
681  flux units).
682
683Bug fixes:
684
685* Cubes that do not have a spectral axis (such as Stokes cubes) were
686  causing memory leaks and crashing, due to some assumptions of the
687  existence of the spectral axis. These bugs have been fixed, so that
688  Duchamp will run on such cubes, although the WCS transforms may not
689  always work appropriately. Please let me know via bug reports of
690  difficulties you encounter!
691
692* The growing function has had a few bugs fixed and is now more
693  efficient.
694
695* The FDR method was previously overriding any manually-specified
696  threshold. This has been fixed so that if the user specifies
697  threshold=X, then the FDR method is not called.
698
699* Some undefined things were happening with textual output when no
700  objects were detected. This has been fixed.
701
702* Memory leaks caused by FITS WCS irregularities have been fixed
703  (specifically, if a FITS header had NAXIS=2 but more than two WCS
704  axes were defined).
705
706
707
708Duchamp version 1.1.5 (2008/03/20)
709----------------------------------
710
711Bug fixes:
712* A major bug was discovered in the calculation of integrated
713  fluxes. The flux was incorrectly being weighted by the spatial size
714  of the detection, resulting in a (often considerable) overestimation
715  of the integrated flux. This has been corrected.
716
717* The beam size calculation was also incorrect, being out by a factor
718  of 1/ln(2).
719
720* The "make install" command previously failed to work properly if the
721  library had not been created. This has been fixed so that the
722  installation works even if there is no library file.
723
724New Features:
725* You can now provide a new flux unit string, so that the pixel fluxes
726  will be converted to these new fluxes before any calculations are
727  done. This is done with the newFluxUnits input parameter. The new
728  units should be directly convertible from the old ones (given by the
729  BUNIT header -- e.g. if BUNIT = Jy/beam, you can give newFluxUnits
730  as mJy/beam, but not mJy).
731
732* You can now specify the precision used in the output files for flux,
733  velocity and S/N ratio columns, via new input parameters precFlux,
734  precVel and precSNR. These will apply to the VOTable output as well
735  as the text table and information on the spectral plots.
736
737* The Karma annotation files previously provided just a circle at the
738  spatial location of the detected object. You now have the option to
739  draw a border around the detected pixels (in a similar manner to the
740  PGPLOT moment maps). Karma does not do this perfectly, so the lines
741  may not line up exactly with the pixel borders, so the option
742  remains to keep using the circles. This is controlled by the
743  parameter "annotationType", with possible options being "borders"
744  (the default) or "circles".
745
746* There is a new function getMetadata() that loads the header and WCS
747  data, but no pixel information. This is only of interest if you are
748  doing code development with the Duchamp library -- it does not
749  affect the running of Duchamp itself.
750
751Duchamp version 1.1.4 (2008/02/15)
752----------------------------------
753
754Most of the changes incorporated in this update result from ASKAP code
755development (that makes use of some of the Duchamp functionality),
756but do not actually affect the way Duchamp runs (other than, in a
757couple of cases, making it a bit faster). Changes that are
758relevant for regular users of Duchamp are as follows:
759
760* A new option has been made available (thanks to Mary Putman et al
761  for the suggestion!) to save the spectra of all detected objects in
762  a text file. This has the form of one column for the spectral
763  coordinates and one column of fluxes for each object. This is
764  enabled by the input parameters flagTextSpectra and spectraTextFile.
765
766* Slight changes to the output include he formatting of the way the
767  detected objects are written to the log file. This meant the
768  verification files were also updated. Also the cube statistics are
769  not printed to the results file if a user threshold is specified (as
770  they are not calculated!).
771
772* The determination of beam size has been made more reliable, as has
773  the BUNIT determination.
774
775* Fixed a bug that meant source merging was not done for 2D images
776  (not usually a problem, as the source-finding takes care of this,
777  but came up in parallelisation development).
778
779Duchamp version 1.1.3 (2008/01/08)
780----------------------------------
781
782A minor update that just improves the build process. The location of
783the wcslib include files was not specified correctly, so that some
784machines were unable to find them. The configure script has been fixed
785so that the compilation should work in all cases.
786
787Some minor changes have also been made to the code in the PixelMap
788directory, and to param.cc, to fix warnings or errors that may appear
789in compilation.
790
791However, there are no changes to the actual workings of the code in
792this minor version, so if you have a working version of Duchamp 1.1.2
793there is probably no reason to update.
794
795Duchamp version 1.1.2 (2007/12/07)
796----------------------------------
797
798Compilation:
799
800* The compilation had problems working correctly when the cfitsio and
801  wcs libraries were not in standard locations. The configure script
802  has been tweaked to make sure the libraries are found.
803
804* Problems with compiling in the absence of pgplot have been fixed,
805  and it should now compile fine.
806
807* Improved the configure script for use with Mac OS X and gfortran.
808
809
810Bugfixing:
811
812* A major problem with the text-based output was fixed. The widths of
813  the columns were not being calculated correctly, and were running
814  together. This should no longer be the case.
815
816* There was a bug in the way Duchamp interpreted spectral axes,
817  particularly AIPS types such as FELO-HEL, leading to incorrect
818  scaling of the velocity axis. This has been fixed, so that
819  non-standard types are now dealt with appropriately and the velocity
820  scaling should be accurate.
821
822* Another bug meant the beam correction was always applied to the
823  integrated spectra, regardless of whether the flux units involved
824  the beam (e.g. Jy/beam). This has been fixed. Note that the values
825  of the integrated flux presented in the results table were always
826  calculated correctly.
827
828* Other minor changes to improve the speed and efficiency, especially
829  of the merging code.
830
831New user parameters:
832
833* There is now the possibility to save a FITS file that contains a
834  mask array, indicating where the detected objects are. This is
835  governed by the flagOutputMask parameter.
836
837* The header information that is printed at the start of the results
838  file -- that is, the list of parameters, the statistics of the cube,
839  and the number of detections -- can now be written to a separate
840  file. Set the flagSeparateHeader parameter to true or 1 and it will
841  go to the file indicated by the headerFile parameter (the default is
842  duchamp-Results.hdr).
843
844* A "scaleMax" parameter has been added, so that the wavelet
845  reconstruction can include only a specified range of scales (for
846  instance, if one wants to search just for narrow features such as
847  absorption lines).
848
849* A "flagRobustStats" parameter has been added. This allows the user
850  to elect to use robust statistics (median and median absolute
851  deviation from the median) to estimate the noise parameters. If set
852  to false, the mean and standard deviation will be used. The default
853  value is true.
854
855New Feature:
856
857* When Duchamp is run on a 2D image (i.e. with no spectral output), it
858  now produces a postscript file that shows information each
859  individual source plus the image cutout of the source. This is
860  similar to the spectral output file, but without the spectra. The
861  filename is given by the spectraFile parameter.
862
863* Ability to save a FITS file containing a mask array, with pixel
864  values of 1 for pixels in a detected object, and 0 elsewhere.
865
866
867Duchamp version 1.1.1 (2007/07/20)
868------------------------------------
869
870Minor update to the release, with just a few changes:
871
872* The verification script was generating diffs due to differences in
873  the precision of some calculations when done on different machines.
874  One of these was the integrated flux, and this has been corrected so
875  that the same value should appear on all machines.
876  The verification script has also changed so that just the number of
877  sources and their positions are tested, as well as the
878  logfiles. This should avoid the reporting of spurious differences.
879
880* The grey-scale used in the image cutouts (in the spectral plots) has
881  been inverted. This makes it consistent with the scale used in the
882  maps, and hopefully easier to see when printing.
883
884* The configure/make system has been altered to make it easier to
885  install, and to specify different external libraries. In particular,
886  it is now not necessary to have PGPLOT installed on your system to
887  run Duchamp. In the absence of PGPLOT, Duchamp will run as normal,
888  just without any graphical output. Some source code needed to be
889  restructured to make this work. Please read the README file, or the
890  Installation appendix in the User's Guide, for complete details.
891
892* The time of completion is now written to the log file, so that the
893  user can have some idea of how long the program took.
894
895
896Duchamp version 1.1 (2007/05/17)
897------------------------------------
898
899Changes made since the last numbered release:
900
901EFFICIENCY OF EXECUTION:
902
903* Major change to the way detections are stored. They are now recorded
904  via run-length encoding in the x-y plane, and stored as collections
905  of channel-maps. This improves the memory usage and the speed of
906  execution (particularly for routines such as the merging
907  routines). The memory usage has also been improved by changing the
908  way the list of detected objects is stored.
909
910SMOOTHING:
911
912* Addition of ability to spatially smooth the cube before
913  searching. This is done with a Gaussian kernel, the size and shape
914  of which can be specified by the user, using the parameters kernMaj
915  & kernMin (which are the FWHM for the major & minor axes -- if
916  kernMin is not given it is assumed to match kernMaj) and kernPA (the
917  position angle of the major axis).  There is a new parameter
918  smoothType that distinguishes this method from the spectral (Hanning)
919  smoothing already in use.
920
921DETECTIONS:
922
923* Changed the way detection is done -- now only search in 2D images,
924  keeping all detections (ie. no minimum-pixel requirement). This
925  should be the same as doing both the 1D and 2D searches with the
926  minimum pixel requirement in, but simpler. The rejection is done at
927  the end after all the merging and growing has been done. This leads
928  to a larger number of intermediate detections (ie.  the number
929  before merging), which may increase the run-time slightly, although
930  this is offset by the changes to the efficiency (see above).
931
932* Increased the range over which objects can be grown to match the
933  threshSpatial & threshVelocity parameters, as well as rejecting new
934  pixels based on the BLANK and MW tests.
935
936INPUTS:
937
938* There has been a subtle change in the way BLANK pixels are dealt
939  with. To enable trimming of BLANK pixels, users should use the new
940  parameter flagTrim. The parameters flagBlankPix and blankPixVal are
941  no longer accessible via the parameter file -- warning messages are
942  given if they are provided in the parameter file.
943
944* Added ability to specify a statsec, so that the statistics are only
945  calculated from a given subsection of the cube, rather than the full
946  cube.
947
948* The subsections can also specify the ability to remove a border of n
949  pixels from the edges of an axis (ie. n from the start and from the
950  end) -- as requested in Trac ticket #5.
951
952* Changed the default value of the reconDim parameter from 3 to 1, and
953  the default value of the flagATrous parameter to false.
954
955OUTPUTS:
956
957* The output now includes three different estimates of the "centre" of
958  the detection: peak location, centroid (flux-weighted), or average.
959
960* Some slight improvements to the user feedback during execution.
961
962* Spectral output now includes the baseline, if one was fitted. The
963  format of the plot headers is slightly changed, to stop information
964  falling off the edge of the page.
965
966* Added command-line option -x to directly disable the PGPLOT X-window
967  map plotting. This overrides the setting of flagXOutput in the
968  parameter file.
969
970* Fallback spectral units (in case the FITS header fails to record
971  them) changed to SPC, but code has been fixed so that any problem
972  should be caught before this becomes an issue.
973
974BUGFIXES:
975
976* Fixed bug (Trac ticket #4) that meant the velocity units were not
977  correctly dealt with. Duchamp should be more robust for different
978  velocity axis setups now.
979
980* Fixed bug (ticket #9) with the VOTable output, where the tags were
981  not closing.
982
983* Fixed a bug that meant the integrated fluxes were not calculated
984  properly -- no allowance was made for the number of spatial
985  pixels. This should also work properly for 2D images now as well.
986
987* Fixed minor bug in calculating the flux threshold from the p-value
988  threshold when the FDR method is used. This did not affect the
989  actual thresholding, merely the quoted flux threshold in the results
990  file. Also, the MW channels are kept out of the p-value threshold
991  determination if they are being flagged.
992
993
994
995Duchamp version 1.0.7 (2006/11/22)
996----------------------------------
997
998One new feature, and some improvements and bug-fixes.
999
1000* The user can now elect to Hanning-smooth the spectral direction of
1001  the cube before the searching is done. This can be done instead of the
1002  wavelet reconstruction (although if both are selected, the
1003  reconstruction takes precendence). This functionality is switched on
1004  and off by the flagSmooth parameter, and the width of the Hanning
1005  kernel is governed by the hanningWidth parameter.
1006
1007* The smoothed array can also be written to a FITS file and read in at
1008  the start in the same manner as the reconstructed array.
1009
1010* Several improvements have been made to the memory
1011  management. Several memory leaks were fixed, and the memory usage of
1012  Duchamp is considerably less, which will be a help for running it on
1013  large cubes. The speed of some routines has also been improved, by
1014  removing unnecessarily repetitive loops.
1015
1016* The sorting routines have been changed, and should now be slightly quicker
1017  (and a bit more robust).
1018
1019* Enabled the scale bar (plotted on the 0th moment map in the spectral
1020  output file) to be able to deal with much finer spatial scales (as
1021  may be expected from VLBI data).
1022
1023* Other minor changes to code and presentation.
1024
1025
1026Duchamp version 1.0.6 (2006/11/01)
1027----------------------------------
1028
1029Some incremental improvements and changes to the code:
1030
1031* The statistics used for the detection are now calculated once for
1032  the entire cube, rather than being calculated separately for each
1033  channel map and spectrum. This results in a uniform threshold value
1034  across the entire cube. The way the statistics calculations are
1035  implemented in the code was changed, using a new statistics class.
1036
1037* This means we can report a peak signal-to-noise value for each
1038  detection. This is given in the text-based output, as well as in the
1039  summary information above the spectral output for each source.
1040
1041* The user can now elect not to have the moment map displayed in a
1042  PGPlot window, through the use of the new flagXOutput
1043  parameter. This should help in cases of running Duchamp on a dumb
1044  terminal (with no X-display capabilities), or as part of a batch
1045  script where the continual popping-up of the PGPlot window might
1046  become annoying.
1047
1048* There are different Flags reported for the case of an object lying on
1049  the spatial edge and spectral edge of the cube (E and S respectively).
1050
1051* A few minor bug fixes:
1052  - When providing a subsection, any axes with the range given by *
1053    had the pixel values offset incorrectly. This has been fixed.
1054  - Negative searches now correctly invert the reconstructed array
1055    when it is read in from a file.
1056
1057* Other minor changes to the code, to improve memory handling and
1058  remove redundant arrays and variables.
1059
1060
1061Duchamp version 1.0.5 (2006/09/06)
1062----------------------------------
1063
1064Since version 1.0, there have been a range of mostly minor
1065changes. These are generally bug-fixes, thanks to feedback from a
1066number of users, as well as a few extra features.
1067
1068Here is a summary of the changes since version 1.0:
1069
1070USER INTERFACE:
1071
1072* The user is now able to enter the value of flag parameters in the
1073  parameter file as strings, as well as integers (so one can enter
1074  true or 1 to give the same result).
1075
1076GRAPHICAL OUTPUT:
1077
1078* Added a new function that draws the edge of the blank region on the
1079  maps and image cutouts. There is a new flag parameter --
1080  drawBlankEdges -- that controls the use of this function (the
1081  default is true).
1082  Also, the edge of the field is plotted on the image cutouts as a
1083  yellow line. This distinguishes it from the purple blank pixel
1084  dividing line.
1085
1086* The size of the tick mark in the image cutout (indicating the
1087  spatial scale of the image) is now adaptable, so that it shows the
1088  scale that best fits the image (ranging from 1 arcsec to 15
1089  degrees). (This is a change from the previous standard length of 15
1090  arcmin.)
1091
1092* The zoomed spectrum had its flux scale determined by all points in
1093  the zoom box,including those flagged by the Milky Way (MW)
1094  range. This has been fixed so that any MW channels will not affect
1095  the flux scaling, potentially improving the appearance of objects
1096  detected close in velocity to strong MW emission or absorption.
1097
1098* Improved Karma Annotation file output, so that files without good
1099  WCS are dealt with appropriately.
1100
1101TEXT-BASED OUTPUT:
1102
1103* The position resolution in the IAU-format names has been increased,
1104  so that distinct objects close to one another are more readily
1105  distinguished.  Overlapping sources at different velocities may
1106  still have the same name, but this is a more general problem.
1107
1108* The presentation of the results in tabular format has been improved,
1109  so that the precision of faint sources is sufficient to show their
1110  flux, for instance, is not 0. This also applies to the information
1111  presented above the spectral plots.
1112
1113* Improved error and warning reporting, so that the formatting and
1114  presentation of information is clearer.
1115
1116FITS I/O RELATED:
1117
1118* The previous version was did not deal well with 4 (or greater)
1119  dimensions in the FITS file -- the memory allocation was badly done,
1120  and the axes needed to be in a particular order. This has been
1121  fixed, so that the FITS I/O routines can now handle any sized FITS
1122  file, with axes in any order (as long as there are two spatial and one
1123  spectral axes).
1124
1125* When the FITS file does not have a rest frequency defined, there is
1126  no way to transform the frequency axis into velocity. In this case,
1127  the spectral axis is left as frequency, and put into units of MHz.
1128
1129* If the beam size is not indicated by the FITS header (through the
1130  BMAJ and BMIN keywords), the user can manually specify the size
1131  through the parameter file (using parameter beamSize).
1132
1133* The FITS I/O routines make use of the command fits_file_exists. This
1134  was introduced into the CFITSIO package from version 2.5, so Duchamp
1135  will only work with this version or higher. Version 3+ is preferred.
1136
1137OTHER BUG-FIXING:
1138
1139* Several bugs related to the blank-pixels were dealt with.
1140  The correct values were not propagating through correctly, meaning
1141  that the default values were being used. Also, there was the
1142  potential for blank pixels to be detected when the FDR method was
1143  used. Finally, the image cutout displays occasionally did not
1144  obscure the blank pixels. All these problems should be fixed now.
1145
1146* The FDR setup routine was occasionally failing with a segmentation
1147  fault, due to it accessing unallocated memory. This has been fixed.
1148
1149* Fixed bugs that affected the way 2D images (rather than 3D cubes)
1150  were dealt with. The minChannels test failed when minChannels=0.
1151
1152* If there is no beam information in the FITS header, the user can now
1153  enter a beam size as a parameter.
1154
1155* Other minor fixes to the code, to improve its structure and
1156  robustness.
1157
1158
1159Duchamp version 1.0 (2006/06/30)
1160--------------------------------
1161
1162The first full release version.
1163
1164Several major changes compared to previous version:
1165
1166* Incorporated a FitsHeader class, to keep track of header information
1167  (including WCS) from the FITS file. All units-related calculations
1168  are done with this class, such as conversion to velocity, and
1169  pixel-to-WCS conversion.  The main advantage of this is improved
1170  speed of execution, more adaptable to different units, and improved
1171  code (easier for me!).
1172
1173* Able to select the dimensionality of the reconstruction, rather than
1174  just doing it in 3-D.
1175
1176* Robust text output, so that the columns are sized correctly given
1177  the data being written, and the relevant units (derived from the
1178  FITS header) are included in the output table.
1179
1180* Improved the way the reconstructed image is saved and read back in,
1181  with a better naming scheme and a better set of new FITS header
1182  keywords. The MW headers are now not written.
1183
1184Other, more minor changes include:
1185
1186* MW channels now not set to 0, but just ignored for searching
1187  purposes (and for the scaling of the spectral output -- they are
1188  plotted though and highlighted with a hashed box).
1189
1190* The scale bar in the moment map in the spectral output file has its
1191  length indicated.
1192
1193* Improved VOTable output, with more information about the way Duchamp
1194  was run.
1195
1196* Made sure all statistics calculations in the reconstruction are
1197  based on robust (ie. median) methods.
1198
1199Also moved to an autoconf based configure/make compilation, for ease of use.
1200
1201
1202Duchamp version 0.9.2 (2006/06/27)
1203--------------------------------
1204
1205* Added the use of warning flags for detections: for either edge
1206  location or negative enclosed flux.
1207
1208* A new command line option added so that the user can specify a FITS
1209  file to be searched with the default parameters, rather than giving
1210  a full parameter file.
1211
1212* The scale bar on the moment cutout now works in general case, using
1213  an iterative process to get to the correct length.
1214
1215* RA axes are now done correctly on the full-scale maps.
1216
1217* Various coding fixes, improving the readability of the code,
1218  particularly regarding the declaration of temporary variables.
1219
1220* Changed the way the time of execution is called : now using time.h
1221  functions, rather than a system call.
1222
1223* Changed output in Detection/outputDetection.cc for the pixel
1224  information of detected objects (the info printed above the spectral
1225  plots) -- now print out number of voxels in object, and have
1226  improved the formatting a little.
1227
1228* Improved the functionality of saving the FITS file containing the
1229  reconstructed array. Added ability to save and read back in the MW
1230  parameters when saving a reconstructed cube (if a reconstructed cube
1231  has different MW range to that being considered, it would cause
1232  problems). ReadRecon now just returns a FAILURE and will reconstruct
1233  the cube anew.
1234
1235* Changed default value of flagGrowth to 0.
1236
1237
1238
1239Duchamp version 0.9 (2006/05/05)
1240--------------------------------
1241
1242First public release version.
Note: See TracBrowser for help on using the repository browser.