-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathchange.log
1047 lines (671 loc) · 35.7 KB
/
change.log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
0.30-3
[TWEAK] {BufferedRandom} Simplified, with reduced initialization load
and storage requirement.
[TWEAK] {Data} Add static option for controlling whether or not
standatd long FITS keywords (using CONTINUE) are used when constructing
FITS headers, or if using the CRUSH standard instead.
0.30-2
[BUG] {AngleFormat} parsing negative angles was incorrect. Fixed.
[FIX] {Grid2D} FITS header writing/parsing fixes.
[FIX] {CoordinateEpoch} Fix case mitmatch in comparison.
[FIX] {CoordinateEpoch} Parsing of FITS headers even if RADESYS is
not present.
[FIX] {AbstractMap2D1} Write WCSAXES=3 in FITS headers.
[TWEAK] {Observation2D+} deperated accumulate() call with weight only.
Instead call with gain and weight.
[TWEAK] {PrecessingCoordinates} Default to J2000 when parsing
coordinates with no epoch given in String or defined in parsing
object.
0.30-1
[BUG] AstroTime.forFITSTimestamp(String) parsed only the date part
of the supplied string, ignoring anything beyond the first 10
characters. Fixed.
[BUG] {ArrayUtil} Some offset / scale methods were garbled. Fixed.
[FIX] {Map2D} editHeader() did not write FITS properties.
[FIX] Fixed a couple of issues found by FindBugs. such as a bad check
for equality between two Doubles.
[FIX] Steve Maher's fix for possible deadlock when ParallelTask
encounters an Exception.
[FIX] {FlagConflictException} Change default serialVersionUID to
a generated one.
[FIX] Flagged2D/Observation2D parallel processing control
[API] Upgraded source and build Java 1.6 -> 1.8.
[API] Flagging moved to jnum.data, and changed to int->long, s.t.
the interface can support 64 flag bits. (Of course, the classes that
implement it can operate with 8, 16, or 32-bit flags all the same.
[API] Projector2D and AstroProjector API made more robust, and
intiutive (hopefully).
[CODE] {Data2D1...} Use newPlaneInstance() instead of new Image2D()
where possible.
[CODE] {ArrayUtil} Upgraded to use Java 8 streams.
0.23-1
[NEW] Configurator has new method clear() that resets the Configurator
object to its initial empty state.
[BUG] Fix FITS CRVAL header value not being cast into the proper units
for Cartesian coordinates (such as the spectral axis for HIRMES
spectral cubes) and instead being written in the natural (SI) units.
[API] {CoordinateEpoch+} Changed to inmutable, and therefore not
cloneable or copiable, since it is safe to keep referencing the
same object everywhere...
[API] {Counter} Remove class, superceded by RealValue, which provides
all the same functionality and more.
[API] {Constant} {Unit} Removed some superfluous definitions. Some
remain though allowing the user to chose referring to the constant
either by name or conventional notation (e.g. Constant.speedOfLight
vs. Constant.c).
[API] Added explicit 'throw' (e.g. NumberFormatException) to some
of the method definitions.
[API] {Configurator} Some changes to conform with downstream use:
isConfigured(String) -> hasOption(String), get(String) ->
option(String), getExact(String) -> exactOption(String)
[API] Broadcaster add(Reporter) & remove(String) methods now return
The Reporter object that is replaced or was removed, or null if
there was no existing Reporter in use that mathes the argument.
[FIX] RegularData.getSmoothed() was using loop() instead of
smartFork(). (Probably a debug residue.). Fixed.
[FIX] Statistics.median could throw unexpected
ArrayOutOfBoundsException in certain cases. Fixed by checking those
corner cases and returning NaN instead.
[CODE] Simplified Statistics.Inplace.median(WeightedPoint[] ...).
[DOC] Removed a bunch of auto-generated Javadoc. The goal is to
fill in the missing javadoc sooner than later...
[DOC] Javadoc updates: Reporter, plus all classes and interfaces
directly under jnum (but not yet the subpackages...)
0.22-1
[NEW] New class astro.SunPosition for calculating the Sun's position
with the 5th order approximation described by the Astronomical Almanac
2010, and adopted by JPL ephemeris. Should be good to within an
arcminute over a few centuries...
[NEW] {TrueVector+} New method multiplyByComponents(v) for component-
by-component multiplication.
[NEW] {Data1D} plot generation via gnuplot.
[NEW] New array creation static methods for Coordinate2D/3D and
subclasses.
[FIX] Classes where equals() tested for approximate floating point
equality did not have hashCode methods that would match. In fact, it
is not trivial to have hashCode that would match. Therefore, reverting
to equals(Object) that check for exact equality. (That does not exclude
the possibility of another method providing approximate equality
checking...)
[FIX] {AstroTime} LST calculation had a rate flaw, as it was advancing
at the same rate as UT from midnight. Fixed.
[FIX] {TrueVector+} static copyOf(array[]) methods did not deal with
null elements properly. Fixed.
[FIX] {Index1D} get/setValue() bad check on dimension fixed.
[FIX] PointOp.Sum / ParallelPointOp.Sum to return NaN when no data
is summed.
[FIX] AbstractMap2D1 now includes the FITS coordinate header info.
[FIX] Fixes and improvements to 2D+1D initialization, templates, and
units handling.
[FIX] Identifying spherical / celestial coordinate systems based on
FITS CTYPE keyword did not deal well with some non-standard
definitions (e.g. 'RA-XXX' instead of 'RA--XXX'). Fixed.
[FIX] MapProperties.copy(template) was neither a fully independent copy
nor did it deal with null fields. Both issues fixed.
[CODE] Java 11+ compatobility: Class.newInstance() is deprecated in
Java 11. Updated source to use Class.getConstructor().newInstance()
instead.
[CODE] copy() keeps, rather then reinstantiates, String references.
Java Strings are non-mutable objects, and non-mutables do not need
to be deep copied.
[CODE] Removed super.equals() calls in classes derived directly from
Object since it only checks for identity.
0.21-1
Overview
======================================================================
This version of jnum provides even more generalized implementation for
1D-3D (and beyond!) data structures, including cropping, smoothing,
resampling, and FITS writing. It also fixes problems and weaknesses
in the prior release.
======================================================================
[NEW] {Data} Several new Data-related classes introduced to provide
more generalizations from Data2D to any regularly spaced data
(RegularData), including cropping, smoothing, filtering, re-sampling,
cleaning and FITS writing.
[NEW] {Data} Simplified general typing with single type parameter
(IndexType), and RegularData with additional VectorType.
[FIX] {Observation2D} Simpler structure helps solve tricky cloning
problems, which still occurred.
[TWEAK] Cleaner ParallelTask process(...) hierarchy all based on
a single non-final method.
0.20-4
[FIX] NaN values from source fitting no longer written to the FITS
header where they can produce unhandled exceptions...
0.20-3
[BUG] {ParallelPointOp} ParallelPointOp was not interchangeable with
PointOp, resulting in unpredictable behavior in smart forks (which
process in parallel or in loop, depending on the number of elements
to be processed). It really only affected ParallelPointOp.Average,
which in turn was called by Data[...].getMean() and
Data[...].getVariance() methods. Fixed.
[BUG] {MapProperties} getFilterCorrectionFactor() was totally botched
due to a missing set of brackets.
[BUG] {SphericalCoordinates} distanceTo() method had an arithmetic
error in haversine formula.
[FIX] {GaussianSource} Intregrated fluxes were calculated with the
wrong beam size for logging. Fixed.
[FIX] Flagged2D and subclasses (Mapped2D) and Observation2D had a
little too zealous point validation and discarding. Now, only the flags
are used to mark bad data, which is also faster :-).
[FIX] {AstroTime} MJD2000 referece point was off by 1/2 day. Not that
it made a difference. Still, it's better to have it right...
[FIX] {EllipticalSource} Better propagation of FWHM errors under
convolve/deconvolve.
[TWEAK] {SphericalCoordinates} New distanceTo() formulae for fast
and precise distance calculation everywhere (using the law of cosines
or the Vincenty formula, depending on the distance itself).
[TWEAK] {CircularRegion} Improved adaptation of region to image, now
more focused on the main peak, handles negative peaks, and not stalled
by too small starting radii.
[TWEAK] Allowing only base units to register into lookup tables.
This way, there is less chance that we end up with strange constructs
such as putting a k prefix in front of km/s...
[CODE] Local unit support moved upstream: Map2D -> Data.
0.20-2
[NEW] {Statistics} A host of statistics methods operating on arrays
Lists and Iterables, inclusing mean, median, weightedMean, selection
variance and rms. Medians and selections here operate on copies,
leaving the ordering of the supplied data unperturbed. When keeping
the order is not important, Statistics.Inplace offers more efficient
implementations.
[CHANGE] {Statistics} Funtionality that reorders the supplied data
(e.g. medians and selection) have been moved to the Inplace subclass,
to make their destructive behaviour more transparent.
[CODE] Data has generalized mean() and median() methods. Also
similar methods can now take a weight Data object for calculating
weighted means and weighted medians. Observation2D and Observation2D1
will use the weighted methods always.
0.20-1
[NEW] {CoordinateAxis} Axes now carry their own units for parsing
and formatting.
[NEW] Common Data interface for handling multidimensional data.
[NEW] New 1D image classes (Data1D, Samples1D, Overlay1D...), which
act similarly to their 2D counterparts.
[NEW] New 3D and 2D+1D image classes that act similarly to their
2D counterparts.
[NEW] Coordinate2D.convertFrom()/To().
[NEW] Parallel now has synchronize() method to provide common
synchronization points among the worker threads.
[FIX] {DoubleFFT} {FloatFFT} Fixed amplitude normalization of Nyquist-
unrolled real transforms.
[FIX] {MultiFFT} Fixes to multidimensional FFT
[FIX] {FFT} NyquistUnrolled amplitude scaling now applies to unrolled
Nyquist component also.
[FIX] {FFT} Fixed amplitude normalization for NyquistUnrolled real
transforms.
[FIX] A bunch of potential bugs found and fixed with the help of
FindBugs.
[FIX] Reinstated standard long FITS header keywords. Problems occur
only when trimming comments...
[FIX] More fixes to home-brewed long FITS header cards.
[FIX] Flawed implementation of equals() for many of the classes.
Classes that derived directly from Object should not rely on
super.equals() typically, as it will return false always, unless
the two objects are one and the same.
[CHANGE] {FFT} FFTs now work with oversized arrays, setting
untransformed trailing elements to NaN or null, as appropriate.
[CHANGE] Complete overhaul of 2D image classes and related classes,
with the aim of more versatile, more powerful and cleaner code, that
is easier to maintain.
[TWEAK] {FFT} FFTs now clear away leftover input data when processing
oversized arrays.
[TWEAK] SphericalCoordinates now have default coordinate systems that
format coordinates in DMS or HMS formats, and offsets in arcseconds
with 3 decimals, by default.
[TWEAK] {SphericalCoordinates} Parsing now recognizes 2-letter codes
in front of coordinates and will attempt an appropriate conversion if
possible (or throw an exception if not...)
[TWEAK] {CubicSpline} Streamlined spline calculation slightly.
[TWEAK] {FFT} Parallel FFTs migrated to use Parallel for threading.
Some simplifications (especially MultiFFT) and cleanup.
[FIX] {AngleFormat} Better rounding for formatted output, plus much
improved parsing of various angle formats...
[FIX] More consistent and robust parsing of 2D coordinates from text.
[FIX] {CubicSpline} was not properly initialized, returning NaN
when evaluated at 0 first. Fixed.
[FIX] {CubicSpline} Poorly handled negative indices due to simple
modulus (%) operator. Not a big issue since negative indices weren't
really used. Fixed anyway...
[FIX] {Data2D} mean() was not actually a weighted mean.
[CODE] More potential bugs found and fixed with the help of Eclipse.
(e.g. null pointers, hidden variables). Streamlined to avoud
unnecessary casts, tailored clone() return types, unnecessary else
statements.
[CODE] Grids read/write FITS headers using the axis units.
[CODE] Lots of tweaks to Grid classes. More generalized hierarchy.
[CODE] Vector2D, Vector3D, RealVector and GenericVetor classes now
use common superinterfaces that provide interoperability.
0.11-3
[FIX] Fixed constructor of CompoundUnit(String).
[TWEAK] ExponentUnit recognises both "**" and "^" as exponent markers
by default.
0.11-2
[CODE] Data2D.fwhm2size moved to Constant.
[CODE] Data2D.getHistogram() refactored to more universal
Histogram.createFrom(Object data).
0.11-1
[NEW] {Configurator} methods for processing environment-based and
Java property-based conditionals.
[NEW] {CircularRegion+} possibility of reporting properties to FITS
header.
[FIX] {Configurator} 'relock' was not working.
[FIX] {Broadcaster} Concurrency issue with Broadcaster if new message
is created while reporting another one. Fixed.
[FIX] {Parallel} Parallel processing errors during init(), or cleanup()
were uncaught and could result in hangs. Now, these are reported as
proper parallel exceptions, just the those produced by the main body.
If multiple exceptions occur (e.g. both during processing and cleanup),
only the first one encountered will be reported.
[TWEAK] {ConsoleReporter} Console reporting of details now has space
between leading '...' and message for cleaner visual appearance.
[UPDATE] Leap seconds updated to latest -- now 37 seconds...
[CODE] MatrixIterator class is hidden (private subclass of
AbstractMatrix).
[CODE] Reorganization: jnum.data.mesh.* --> jnum.data.*
[CODE] Reorganization: Matrixes and related classes moved to new
jnum.math.matrix package,
[CODE] Multidimensional arrays (Mesh and subclasses) are taking shape
(more or less)...
[CODE] TableFormatter simplified generation of entries and toplevel
formatting.
[COPYRIGHT] Fixed stale reference to kovacs.util in copyright notices
in all source files.
0.10-1
[BUG] {CircularRegion} isInside() methods treated radii as pixels not
angle.
[BUG] Handling of empty ranges (inclusion, restriction, or intersection
checking) was crazy bad. Fixed.
[NEW] Range2D class.
[NEW] TextWrapper class to aid wrapping texts, with a bunch of useful
add-on features (line headers, indentation after first line, justified
output).
[NEW] SmartTokenizer class (based on StringTokenizer) to simplify
parsing tokenized values.
[NEW] LineParser class to uniformize the reading of text input files.
[NEW] Util class now contains a default Reporter for conveying JNUM
messages. Few jnum classes use it at this point, but the plan is that
they will all use it in the future to communicate messages to the user.
[FIX] {Region} Integrated fluxes were calculated in enclosing box, not
strictly the region itself.
[FIX] {FITS} Long HISTORY entries ended up producing corrupted FITS
files (due to a bug in the nom.tam.fits libraries). A workaround has
been added to break long history entries into multiple lines. Wrapped
lines start with "... " for easier human recognition...
[CHANGE] {Data2D} The 2D data classes (Data2D and derivatives) now
report through the default reporter of the Util class.
0.09-2
[BUG] ArrayUtil.copy() misbehaved (hung) when trying to copy
heterogeneous arrays. Fixed.
[NEW] Brand new jnum.data.fitting API. Includes fixes to covariance
calculation. Allows for restricted parameter ranges, and formulating
fitting constraints.
[NEW] Added expm1() and log1p() functions for Complex numbers.
[FIX] {FFT} Recalculation of twiddle factors when skipping over data
blocks is made safer for multithreading.
[FIX] {ExtraMath} Fixes to various long integer functions.
[FIX] {Data2D} autocrop to check for and avoid null ranges.
[CHANGE] {ExtraMath} updated integer functions log2XXX() and pow2XXX()
with faster methods using builtin integer methods.
[CHANGE] {Data2D} Added LONGSTRN keyword to properly identify the
convention used to store long FITS header entries. It is set to
'OGIP 1.0' by default, when long strings are enabled in the FITS libs.
Otherwise it's set to 'CRUSH' if and when CRUSH's own convention is
used instead.
[CHANGE] {FitsExtras} Long FITS header entries are now written using
the default FITS long strings convention by default (with CONTINUE
keys). However, the parsing of long keys will continue to recognise
CRUSH's own convention for legacy.
[TWEAK] Improved address bit counting, based on builtin functions.
And safer bitshift-down operations with '>>>' instead of '>>'.
[COSMETIC] {SignificantFigures} Formating of zero values without
exponent.
0.09-1
[NEW] New class Angle for faster rotations of Vector2D (or Complex
numbers), using precalculated sin and cos terms.
[NEW] Parser for enclosed expressions (EnclosureParser). E.g.
for expressions enclosed in brackets (BracketParser) or in quotes
(QuoteParser).
[NEW] Additional classes Brackets, QuotationMarks, Subscript and
SuperScript for looking up common unicode symbols.
[NEW] Offset2D to represent an offset from a particular 2D coordinate.
The subclass Projected2D can be used to bundle offsets with the
particular projection as well.
[NEW] TelescopeCoordinates for representing native telescope
coordinates in cross-elevation and elevation. (Uses FITS WCS naming
TLON/TLAT).
[NEW] Improved flag management.
[NEW] Introducing the ability to lock, unlock and relock configuration
settings, e.g. to prevent changes to these later (e.g. by
conditionals).
[NEW] Improved polling of settings via the '-poll' command. Apart from
listing current settings for all keys that start with the specified
pattern (as it used to), it now also list any matching settings that
were blacklisted (as bracketed). And, it also lists any conditions
that might change a matching settings conditionally.
[FIX] LocalAverage indexBefore() lookup could be off by a little
since the step size was not forced to be a power of 2. Fixed.
[FIX] SphericalProjection FITS header comment was identical for both
axes. Fixed.
[FITS] The nom.tam.fits package updated to the official 1.14.2
release.
[CODE] Conversion from median variance to sigma^2 is now a constant
in Statistics.
[CODE] {CoordinateAxis} Improved labelling by allowing long, short and
fancy labels. For example the equatorial RA direction might have a long
descriptive label, such as "Right Ascension", a short text label "RA"
and a fancy (non-ASCII) label with the unicode greek letter alpha.
[CODE] {Symbol} Added a bunch of unicode characters to Symbol
(especially common math and physics related ones).
[CODE] Plugges some potential resource leaks.
[CODE] Changed how blacklisted settings are handled by the
Configurator. The new approach is cleaner, and faster, and is a step
towards allowing locking settings in their state also. More changes
will follow...
[CODE] Many classes now implement Serializable, and also override
hashCode() and equals() more consisitently.
[CODE] nom.tam.fits libraries upgraded to ver. 1.13.1.
0.08-1
[NEW] {Data2D} Parse and write back existing history entries.
[NEW] Additional merging and flagging convenience methods added to
Data2D (and derivatives).
[NEW] Static createArray(size) methods added to WeightedPoint,
DataPoint, Vector2D, Complex -- aiding the array creation of these.
[FIX] parsing of coordinate pair produced error if only a single
character followed the comma separator.
[FIX] Empty ranges returned -Infinity spans. Fixed.
[TWEAK] Data2D use of executor still uses the requested number of
parallel threads only.
[TWEAK] editHeader(Cursor) -> editHeader(Header, Cursor) allowing more
access to existing keys.
[TWEAK] Parallel to optionally process through ExecutorService.
[TWEAK] 'Doppler' colorscheme slightly altered to dim on both ends.
This makes for a visually more pleasant range...
0.07-1 (16 June 2015)
[BUG] Aperture flux uncertainties in prior release were garabage.
Fixed.
[BUG] {AstroTime} FITS timestamping time part malformed in previous
release. Fixed.
[FIX] {Configurator} Condition value checking [key?value] made case
insensitive (i.e. the match to 'value' is case independent).
[TWEAK] {GridMap} Smarter reading of FITS images into weighted maps.
If it has multiple HDUs, the noise and coverage information is
collected from any HDUs with meaningful labels (EXTNAME header key).
If the FITS does not contain additional HDUs, or none that are suitable
for determining weight or coverage (even in a rudimentary way), then
uniform weights are assumed.
[TWEAK] {ExponentUnit} Negative exponents bracketed by '(' and ')',
following the FITS standard, rather than '{' and '}' before.
[TWEAK] {Unit} Added some more unit names to lookup for acceptable
FITS aliases. E.g., see:
https://astropy.readthedocs.org/en/v0.1/wcs/units.html
[CODE] {MultiFFT} Use ExtraMath.roundupRation where possible.
0.06-1 (31 March 2015)
[NEW] Added units for speed [kmh], [mph], and knots [kn, kt, kts],
and nautical mile [nmi, NM, M].
[NEW] SafeMath class for asin(), acos() and sqrt() to return normal
values when rounding errors could push the argument outside of the
strict domain. The tolerated level of rounding error should accomodate
a good deal of float-precision calculations (on the order of a few
thousand compounded rounding errors).
[NEW] {FitsExtras} Ability to parse units from comment or header values
whose unit appears in the comment. The comment is parsed for the
unit specification according to the following priorities:
1. the value inside the first square brackets, e.g. '[arcsec]'
2. the value inside the first brackets, e.g. '(arcsec)'
3. the first word of the comment. E.g. "arcsec blah-blah..."
[NEW] {GridImage} Updated to use proper Gaussian beams (see more
below).
[NEW] {GridImage} keeps track of the underlying FWHM (such as an
instrument beam).
[NEW] GaussianPSF class for handling elongated Gaussian beams, in
general.
[FIX] {Grid2D} parsing of reverted coordinate axes did not invert
sign of transformation terms as expected. (Grid2D is defined on native
coordinates, whereas FITS headers are written in apparent coordinates).
[FIX] Many fixes to AstroTime: more precise GMST and LMST calculations.
Improved FITS timestamping of integer MJD dates. Timestamping always
based on UTC otherwise.
[FIX] {SphericalGrid} non-default constructor did not properly
initialize before.
[TWEAK] {CoordinateAxis} wcsName removed. Its function is overtaken
by SphericalCoordinates.getFITSLongitudeStem() and
getFITSLatitudeStem().
[TWEAK] {Grid2D} Removed hard units (degrees). Non-default Units are
properly parsed from, and written to, the FITS headers.
[TWEAK] {CoordinateAxis} Handling of CNAMEia standard FITS keys that
contain the preferred coordinate labels.
[TWEAK] {FITS} Some header keys in output images are deprecated (but
still written for now for backward compatibility), in favor of new
keywords based on the standard beam definitions based on BMAJ, BMIN,
and BPA. Thus:
SMOOTH (arcsec) --> SBMAJ, SBMIN, SBPA (radians)
EXTFILTR (arcsec) --> XBMAJ, XBMIN, XBPA (radians)
CORRECTN (arcsec) --> CBMAJ, CBMIN, CBPA (radians)
Also introducing IBMAJ, IBMIN, and IBPA to record the underlying
instrument beam properties.
[TWEAK] {Data2D} improved header parsing (BUNIT, EXTNAME).
[TWEAK] {GridImage} fftFilter updated to use the much faster new FFT
classes instead of the old.
[TWEAK] {GridImage} Removed hardcoded (angular) units to better support
general purpose images. Header editing/parsing to use smarter units.
(arcsecs for sperical grids, and standard units otherwise. Preferred
grid units can be set and queries via get/setPreferredGridUnit().
[TWEAK] {SphericalCoordinates} Changed default decimal formating to
0.01 s resolution (from 0.001s).
[CODE] {SignificantFigures} There appears to have been a regression
in DecimalFormat, on which SignificantFigures was based, by which
the overridable format methods were not called. Thus,
SignificantFigures is now derived directly from NumberFormat to work
around it. Various classes had toString(DecimalFormat) methods, which
have now been changed to toString(NumberFormat).
0.05-3 (13 January 2014)
[NEW] FloatFFT and DoubleFFT now both have a NyquistUnrolledRealFT
subclasses which store the Nyquist frequency component as an extra
packed complex value at the end. Thus, these transforms take float[] or
double[] data with sizes 2^p + 2, respectively. The base classes
FloatFFT and DoubleFFT remain packed in the convention of Numerical
Recipes, with the Nyquist component stored in the imaginary component
of the index 0 (constant) complex value.
[FIX] {GridImage} Fixed weight normalization when re-smoothing. Also
improved the CLEAN-type deconvolution algorithm.
[FIX] {MultiFFT} Proper handling of Nyquist frequencies (in last index)
on real transforms. The Nyquist component is now included as an extra
complex value (2 extra real values) at the end of the bottom float[]
or double[] arrays. Thus, multi-dimensional arrays used for real
transform have dimensions [n1]...[nm], where all by the last dimension
is a power of 2, whereas the last dimension nm is 2^p+2 to properly
accomodate the Nyquist components in that direction.
[TWEAK] {Configurator} Added static 'silent' switch. If enabled the
Configurator won't report on loading config files.
[SPEED] {FFT} Faster bit reverse boosts FFT speeds by ~5%.
0.05-2 (9 December 2014)
[FIX] Reporting the configurations loading on console is reinstated.
0.05-1 (21 August 2014)
[TWEAK] {ColorBar} connected to ImageLayer not ImageArea.
[TWEAK] {SignificantFigures} Format numbers with no decimal part as
integers (e.g. simply '42' instead of '42.0').
[TWEAK] {FancyRuler} colliding labels skipped for cleaner look.
(works even on reversed axes, and unsorted custom divisions).
[TWEAK] {plot} Generalized ImageLayer.
[TWEAK] {plot} enabling/disabling rulers made easier.
[FIX] {plot} Initial sizing, resizing, and validation.
[FIX] {plot} default axis labels.
0.04-4 (6 August 2014)
[BUG] {EquatorialCoordinates} RA direction inadvertently inverted when
printing equatorial coordinates. Introduced in prior release. Now
fixed.
0.04-3 (9 July 2014)
[BUG] {AngleFormat} Was still broken, now for all negative angles.
[TWEAK] {sphericalCoordinates} static method get/setDefaultDecimals()
added to control how toString() will format angles by default. Also
toString(int decimals) method added to provide control on an ad-hoc
basis also.
[TWEAK] {Precession} Made concurrent safe (no more recycled temporary
storage, but still just as fast, or even faster than before.)
[TWEAK] {Util} All decimal formats extended up to 12 decimals,
including Angle (afN), Time (tfN), and HourAngleFormats (hfN). Like
decimal formats, these are also available in simple array lookup form
(E.g. Util.af[3] = Util.af3);
0.04-2 (19 June 2014)
[BUG] {AngleFormat} Angles between 0 and -1 degrees were wrongly parsed
as positive angles. Fixed.
[BUG] {EclipticCoordinates} Greek letters (axis labels) in FITS headers
make FITS unreadable.
[TWEAK] {Precession} Changed to be threadsafe.
[JAVA] Recompiled for Java 1.6.
0.04-1 (2 June 2014)
[BUG] {Data2D} Gaussian smoothing beam had missing values on axes.
[BUG] {dirfile} Little-endian byte-reorder was botched. Fixed.
[BUG] {SphericalProjection} Projection orientation issue due to
incorrect native pole in most projections. Zenithal (ZEA, SIN, TAN) and
GLS projections were unaffected by this bug.
[BUG] {Grid2D} Inverse transforms were wrong when not a square grid.
Fixed.
[NEW] {CelestialCoordinates} getEquatorialPositionAngle() returns the
orientation of the longitude axis relative to equatorial longitude.
[NEW] {Data2D} Smoothing with rotated Gaussian.
[NEW] {text} FixedLengthFormats imported from xcrush.
[NEW] {Data2D} {GridMap} A few new useful methods.
[NEW] VAXDataInputStream for handling native VAX data format
(e.g. for SHARC).
[NEW] imported LittleEndianDataInputStream from APEXBridge2.
[NEW] PolygonalRegion moved from crush.
[NEW] Imported Matrix support from xcrush.
[NEW] Imported ArrayUtil, and dependent classes/interfaces from xcrush.
(removed ArrayData, which is no longer needed).
[NEW] Rulers are starting to look good :-).
[NEW] Added log and sqrt scaling to ImageLayer.
[NEW] Added Stereographic (STG) and Zenithal Equidistant (ARC)
Bonne's Projection (BON), Cylindrical Perspective (CYP), Cylindrical
Equal Area (CEA), Parabolic (PAR), and Polyconic (PCO) projections.
[NEW] Added optional FITS WCS keywords WCSAXES and WCSNAMEn to map
coordinate descriptions.
[NEW] {util.ExtraMath} roundupRatio(a, b) introduced, which returns
the rounded-up ratio of two integers (or longs).
[RENAME] CelestialProjector -> AstroProjector.
[BUG] {MultiFFT} Radix-4 was still broken due to badly compactified
indexes. Now fixed.
[FIX] {AngleFormat} Extra 0 digits when seconds round up to 10 has
been fixed.
[FIX] {FFT} Eliminated some unneeded InterruptedExceptions.
[TWEAK] {AstroTime} Fits date formatting made consistent.
[TWEAK] {EquatorialCoordinates} Conversion to horizontal simplified.
[TWEAK] {Data2D+} addDirect() extended to superclasses of GridMap and
properties, such as smoothing, are taken into account also...
[TWEAK] {AstroTime} Conversion to and from strings assumes UT times
(no leap seconds needed). Separate new methods can be used for UTC
comversions.
[TWEAK] {LeapSeconds} can suppress error messages from LeapSeconds via
setVerbose().
[TWEAK] {GaussianSource} Adaptive integral tweaked with a smaller
incremental change criterion.
[TWEAK] {Grid2D} SphericalGrids labelled with XXLN and XXLT are now
understood as by Calabretta & Greisen (2002).
[TWEAK] {Grid2D} Choose correct Grid2D class for FITS header.
[TWEAK] Configurator.toString() now returns the option argument. This
allows for more elegant code that omits explicit .getValue() calls.
[CODE] {SphericalProjections} Support for inverted axes (lat/long vs
long/lat).
[CODE] Cleanup of the spherical projections code. Removed duplicate
sin()/cos() calls, general performance tweaks, and better FITS support.
Made sure spherical coordinates are set natively.
[CODE] {kovacs.plot} Work on plots. Some fixes to rulers and side
panels. Still under construction...
0.03-1 (9 December 2013)
[NEW] Added some math interfaces, while thinking of a generic
parser for expressions.
[NEW] Configurator now has getSign(), which returns -1, 0, or +1
depending whether the argument is negative, zero, or positive. It
also understands '-', '*', and '+' to mean the same thing, as well as
'positive', 'negative', 'plus', 'minus', 'pos', 'neg', or 'any' .
[NEW] LocalAverages now have the ability to get consistency check
values before averaging based on a reference value. Based on this
it is possible to get a checked avearage value, where a second-round
aevraging is consistency checked against the mean of the first round.
[FIX] {MultiFFT} (What used to be called GenericFFT). Many many fixes.
As a result it now seems to work More testing is needed to be sure...
[FIX] {Coordinate2D} Parsing of coordinates from text has been revised.
It also provides more useful error messages, when the parsing fails.
[FIX] {dirfile} Little-endian reading of longs fixed, and streamlined
all little-endian conversions.
[FIX] GridImage.regridTo(image) did not use the correct intermediate
image size. Now fixed.
[SPEED] {MultiFFT} Much improved parallelization of Multi-dimensional
(and general FFTs).
[CHANGE] Coordinate2D.getX() and getY() renamed to x() and y() for
simplicity.
[CHANGE] FFT APIs changed slightly for better consistency and
separating 1D FFTs from multi-dimensional ones (e.g. padding and
average power).
0.02-2 (19 August 2013)
[NEW] cbrt() added to Complex.
[CODE] Added Serialization to some classes (just a beginning...)
[CODE] HashCode to deal with Object[] arrays more comprehensively.
[CODE] Added hashCode() to Data2D().
0.02-1 (15 July 2013)
[BUG] Complex division bug found and fixed.
[BUG] Comparison of Units was messed up with the multiplier comparison.
[NEW] WeightedPoint multiplication and division operations.
[NEW] Division interface. Applied to Complex and CompoundUnit.
[NEW] Hankel functions.
[NEW] Zeta function evaluations for Complex arguments
[NEW] Complex gamma function with Lanczos approximation. Also complex
BetaFunction.
[NEW] Brought in a bunch of interfaces from xcrush.util.math, and
applied these to classes where appropriate. This is one small step
towards reintagrating the extensive xcrush brach of utilities.
[NEW] Added Javadoc stems. These are generated by JAutodoc so some of
the automatically generated javadoc is nonsensical. In time, it should
be filled with meaningful documentation.
[NEW] Statistics.lineFit expanded for different argument type
scenarios.
[NEW] Imported math.specialfunctions from xcrush.
[NEW] ExtraMath class with math functions migrated from Util.
[NEW] fits.FitsExtras class with FITS functions migrated from Util.
[NEW] Added data.FauxComplexArray (Float and Double) for performance
applications. FauxComplexArrays outperform proper Complex[] arrays
because of the reduced memory (hence caching) requirement. Below is
a summary of the storage required, per element, in each type:
Complex[]: 32 bytes
FauxComplexArray.Double: 16 bytes
FauxComplexArray.Float: 8 bytes
The performance advantage becomes significant (2-3x) for arrays
comparable to, or larger than, the CPU cache size.
[NEW] Added fft.ComplexFFT (tested). For large data, Complex FFTs are
a 2-3 times slower than the same sized float or double FFTs. Therefore
if performance is a concern, one should use FauxComplexArrays with
their appropriate FFTs instead of proper Complex FFTs...
[FIX] Comparison of angles in SphericalCoordinates could misbehave
when the two angles were + and - of 0 within the requested precision.
Now fixed.
[MIGRATE] Various classes migrated from kovacs.util to kovacs.math
and kovacs.projection. Also from kovacs.astro to kovacs.projection.
[MIGRATE] Util.lineFit -> data.Statistics.lineFit.