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
|
$Header: /cvsroot/nco/nco/doc/TODO,v 1.430 2004/09/24 00:54:12 zender Exp $
******************************************************************************
NCO Wish list:
Numbers were assigned in chronological order in three categories:
Building (bldXXX), ncap-related (ncapXXX), and generic NCO (ncoXXX):
bldXXX: Items specifically related to building and installation.
ncapXXX: These items do not affect rest of NCO
ncoXXX: 15 high priority items are shown first, then another ~100 items
Question marks indicate items or implementations are debatable
Please help out wherever your experience allows.
******************************************************************************
Highest priority NCO-wide items that You can help with:
nco59. Add "averaged over dimension x from y to z" attribute to ncwa-processed variables
nco97. Add x_op=average... attributes to averagers for ncar_csm
nco124. Use `install' program and mkdir -p in bld/Makefile method
nco128. Ensure target 'dir' is made before *.d dependency files
nco152. Change make or nco_dst.pl to add docs to /usr/doc in RPM
nco164. Spiff up NCO homepage web page (Logo?)
nco165. Create Makefile dependency to do 'make dir' if lib, obj, bin directories do not exist
nco178. Make _FillValue behave same as missing_value
nco212. Ensure structures are always passed by reference (default is pass by value)
nco312. Make TODO list more legible (change to, e.g., Emacs list/outline mode, LaTeX, Wiki?)
nco313. Redo TODO subject categorization by discriminating based on skills required to tackle. Initial cateogorization might be e.g., autotools, bison, C, C++, Debian, flex, HTML, Perl, RPM, www, TeXInfo
nco356. ncwa benchmark yields incorrect answers for arrays exceeding 10^7 elements with xlc and gcc, why?
is this related to nco354?
zender@esmf04m:~/nco/data$ date;ncwa -O ${DATA}/mie/big.nc ${DATA}/mie/foo.nc;date;ncks -H ${DATA}/mie/foo.nc
Mon Jul 19 16:58:22 PDT 2004
ncwa: INFO No dimensions specified with -a, therefore reducing (averaging, taking minimum, etc.) over all dimensions
Mon Jul 19 16:58:47 PDT 2004
wvl_1e0 = 1
wvl_1e1 = 1
wvl_1e2 = 1
wvl_1e3 = 1
wvl_1e4 = 1
wvl_1e5 = 1
wvl_1e6 = 1
wvl_1e7 = 1
wvl_1e8 = 0.167772 (NB: this is approximately 1/6)
nco405. Modify multi-slabbing so that it places the output slabs in the order in which they were specified rather than the order they appear in the input file
NCO-wide items of lesser priority:
nco28. Use var.nc_id as file ID from now on and rewrite old routines to do so
nco50. Allow user-specified scalar weights to ncwa
nco51. Make getopt() a shared subroutine?
nco53. Add -t wall clock timer option? (then again, users can always use, e.g., timex())
nco55. nco_var_cnf_dmn() should be able to expand (x,64,128) array into (nx,64,128) array (maybe)
nco60. Make something that can mask field without having to average over dimension
nco66. Make history attribute get appended, rather than overwritten, when in append mode
nco69. ncks option for file/field summary: var name list,var min,max,avg,mss_val,# mss_val,
nco75. Add warning to ncwa triggered by averaging over lat without weighting by gw with NCAR_CSM_FORMAT
nco79. Allow ncrename .$var_nm syntax to work on all operators (so variables not present cause warning, not error)
nco82. Make libnco namespace-safe by prefixing all library subroutines with nco_
nco86. Extend stride/wraparound capability to all operators possible
nco92. ncrcat -O -v base_time,time_offset arm.cdf arm.cdf foo.nc;ncks -H -C -h foo.nc | m gives bad time_offset on LINUX not SUNMP (problem with LINUX adding record coordinate to open file?)
nco99. Allow ncatted to dump file in ncatted format
nco103. Implement trapezoidal rule option in ncra, ncea
nco104. Investigate/Document reliability of -A operator when appending from large rank variables to small rank files. Add error message when variables are same size but one has a degenerate dimension.
In general, adding large rank variable to small rank file does work, e.g.,
ncks -C -O -v one_dmn_rec_var in.nc foo.nc
ncks -C -A -v three_dmn_rec_var in.nc foo.nc
ncdump foo.nc
nco105. Add easy-to-read tabular display option for file contents for ncks, i.e, allow ncks -s to print multiple variables in column format
nco106. Add switch to keep degenerate dimensions with ncwa, remove them from ncra
nco111. Investigate whether using ncwa to average files where variables of type
NC_CHAR have a record dimension causes core dumps or other problems.
i.e., LSM variable timecom caused subtle ncra problems for a while.
Problem caused when weight or mask has dimension not in dimension extraction list
ncwa -O -C -D 5 -v fl_nm -w gw ~/nco/data/in.nc ~/foo.nc
fails because fl_nm has dimension char_dmn_lng but gw has dimension lat
call to nco_var_fll() for gw requires that lat be in dmn_lst
nco113. Rethink normalization switch options in ncwa
nco114. Fix nco_var_cnf_dmn() so that returned weight always has same size tally array as template variable
nco115. SIGFPE when sum of denominator in ncwa (i.e., sum of weight) is zero
Users should not be doing weighted averages if denominator sums to zero, but...
Desired fix here is a graceful exit instead of core dump
nco123. Add HTTP protocol to fl_get() (independent of DODS)
nco127. Make mss: signal retrieval from NCAR mass store
nco134. Problem on CRAY with ncra test #2, averaging float whose
missing value is double:
ncra -O -C -v rec_var_flt_mss_val_dbl in.nc foo.nc;ncks -H foo.nc
ncra -O -C -d time,0,1 -v rec_var_flt_mss_val_dbl in.nc foo.nc ; ncks -H foo.nc
Not too worried about this since it is Cray specific,
Maybe 1.0e36d does not convert to 1.0e36f on Crays?
nco143. Add -W or -q switch to turn off squelch most warning messages in ncra, ncrcat (especially warnings about non-monotonicity)
nco144. Add option(s) to select all N-D variables where N=0,1,2...
nco145. Talk to Brian and implement latest netCDF and CF conventions, e.g., time_op
nco146. Allow proxies for coordinate variables so that, e.g., hyperslabs
may be specified for "date" even though "time" is the coordinate.
Proxies must be one dimensional and monotonic, of course.
nco147. Use builtin mkstemp() so file is built in fast directory rather than, say, NFS-mounted directory like /fs/cgd
nco148. Put in more useful error diagnostics for Schweitzer's data holes
These only appear in ncra/ncrcat because ncks treats same hyperslab as a wrap!
Must define a consistent convention here
cd ~/nco/data
ncks -O -C -d lon,10.0,80.0 -v time_lon in.nc foo.nc;ncks -H foo.nc
ncrcat -O -C -d lon,10.0,80.0 -v time_lon in.nc foo.nc;ncks -H foo.nc
nco149. Add ncks hyperslab tests to nco_tst.pl to catch inconsistencies like #148
nco151. Dynamically modify web pages so files with changing version numbers can be directly linked
nco154. Add mirror capability to web pages
nco158. Add policy for hyperslabbing single level values to User's Guide
Multi-file operators with record coordinate
treat single point hyperslabs differently than single file operators
or than any operators with single point cuts on non-record coordinates.
See explanatory notes in nco_lmt_evl().
nco159. Add capability to handle superfluous intermediate files to ncra,
ncrcat when lmt_typ = dim_idx.
This would allow these multifile operators to handle hyperslabs where,
for example, every other file was not needed. This capability is already
implemented for lmt_typ = crd_val.
This is an issue only when stride is non-unity.
Does multislabbing algorithm fix this?
nco162. Add GiNaC (Computer Algebra System) support to ncap www.ginac.de (maybe?)
nco166. Document 'make test' so people know it exists and use it
nco173. Add switch to ncra which allows user to remove degenerate time dimension from result
nco174. Setup ncra,ncea,ncwa to do standard deviations sdn with one call
nco176. Replace Bison, Flex components of ncap with smaller C++ parser?
nco177. Make RPM production allowable by non-root, since building RPMs as sudo root screws up permissions in obj/bin directories of user
nco179. Add netCDF to required packages list in RPM build?
nco182. Add -L, --license switch to print license terms (as suggested by GNU coding style)
nco187. Are OpenMP critical regions sufficient for netCDF or must all other threads stop completely?
nco189. Verify ncrcat multithreading works, produced "not a netCDF file error" once
nco190. Make typ_pck et al. use nc_type enum or something sane for default
nco192. ncdiff will sometimes subtract files of incommensurate sizes without complaint
ncks -O -v one_dmn_rec_var -d time,0,1 in.nc foo1.nc
ncks -O -v one_dmn_rec_var -d time,0,2 in.nc foo2.nc
ncdiff -O foo1.nc foo2.nc foo3.nc
This may make sense, e.g., for 1-D record variables of different lengths, but not for multidimensional variables
Former case should print warning, latter case should exit with error
nco193. Convert dimension sizes from type "long int" to type "size_t"?
nco195. Itanium builds!
nco199. Internationalize (i18n) NCO with gettext()
nco203. Perform benchmarking tests to quantify arithmetic performance improvements, I/O bottlenecks, etc.
nco206. Add sample NCO script, such as dst.sh, to doc directory
nco209. Add rules to automagically make MANIFEST and update Sourceforge download area
nco214. Disable threads > 1 on SGI temporarily because thread #0 does all work, why?
nco215. nco_var_cnf_dmn() does not abort when variables do not conform because dimension list of one is subset of other but ORDER of dimensions differs, e.g., a(lat,lev,lon) !~ b(lon,lev). Attempting this will return incorrect answers!
nco222. Warn when ncea/ncra/ncrcat/ncecat operate on scaled variables ("Results will be meaningless if scale_factor and add_offset are not identical in each file")
nco224. Copy var_nm from command line so program, not system, owns memory. Then modify nco_var_free() to release var_nm structure member, and nco_var_dpl() to copy it. Same for dimension names and nco_dmn_dpl()
nco225. Pass aed by reference in nco_aed_prc()
nco226. Is xrf in nco_var_cnf_dmn() is really necessary? If not, remove it and make wgt arg const var_sct * const
nco228. g++ linking requiring #ifndef GNUC++ around fabsf,fmodf defs in nco_var_scv.c
nco230. Keep track of type of missing_value field in variable structure for reasons described in nco_cnf_var_typ()/nco_cnv_mss_val_typ()
nco232. Warn when arithmetic operators encounter packed variables?
nco233. Makefile.old rule for make tst appears broken for long FTP rule
nco237. Break down nco.texi into bite-size chunks, e.g., one file per section
nco238. Replace y=(typ *)nco_malloc(nbr*sizeof(typ)) with y=(typ *)nco_malloc(nbr*sizeof(*y))?
nco239. Create one global compatibility file (nco_xpf.[ch]?) activated by HAVE_ or NEED_ actions so do not have multiple platform dependent #includes as is case now with HAVE_STRCASECMP, HAVE_STRDUP requiring nco_sng_utl.h
nco241. Add run-time switch which requests that output be missing_value where ANY input field is missing_value. NCO discussion forum 20021212.
nco244. Get builds working on testdrive.hp.com
nco245. Eliminate all instances of passing naked constants
nco246. Deprecate USE_FORTRAN_ARITHMETIC from Makefile
nco250. ncks -s should refuse to print strings formatted with %s unless they contain NUL-terminator. This will avoid segfaults like
nconcks -C -H -s "%s" -v fl_nm ~/nco/data/in.nc
nco251. Does ncks -B correctly write packed variables in binary format?
nco255. Desktop icon for NCO gui interface
nco256. Turn udunits into .deb
nco257. Put hybrid_sigma_pressure etc. definitions into in.cdl
nco258. Develop syntax/procedure for specifying lists of hyperslabs for single pass, low memory consumption MSA jobs like Martin Schultz's in Discussion forum on 20030506
nco259. Variadic function extension to nco_malloc() to support printing debugging messages?
nco260. Warn (but work) when coordinate variable has more than two dimensions
nco261. Switch from toggling defaults to --no-option format for all Booleans. e.g., --abc should ensure alphabetization is True, and --no-abc should ensure it is false, rather than toggling.
nco265. ncbo: Promote before operations using nco_typ_cnv_rth() in ncbo
nco266. ncbo: Finish ncbo.1 manpage
nco268. ncbo: use ncap var_cnf_dmn() technique so fl_1 fl_2 broadcast interchangeably
nco270. Automate uploading of tagged .deb builds to ftp://ftp.debian.org
nco275. Use nco_mss_val_cnf() in ncflint
nco276. Use nco_mss_val_cnf() in ncap
nco277. Use nco_mss_val_cnf() in ncwa
nco285. Kevin: ncap segfaults on packing segfault.tar.gz
I cannot replicate this bug
ncbo -O -y add -D 3 -d date,0,100 /data/zender/tmp/convecPrecip00z.nc /data/zender/tmp/convecPrecip00z.nc /data/zender/tmp/sum.nc
ncap -O -D3 -s 'cp=pack(cp)' /data/zender/tmp/sum.nc /data/zender/tmp/packed_sum.nc
ncbo -O -y add -D 3 ${HOME}/debug/hundred.nc ${HOME}/debug/hundred.nc ${HOME}/debug/sum.nc
ncap -O -D 3 -s 'cp=pack(cp)' ${HOME}/debug/sum.nc ${HOME}/debug/pack_sum.nc
nco287. Develop dianostics for OMP OpenMP implementation in ncra
nco292. nco_fl_utl.c: Use autoconf HAVE_NETWORK instead of WIN32
nco293. nco_fl_utl.c: Use autoconf HAVE_MKDIR_M instead of SUN4
nco294. Globals variable in NCO operators are prg, prg_nm, dbg_lvl
If possible, modify so that shared-library (rather than main.c) holds
and returns thread-specific values for each, set with, e.g., prg_set().
Make prg, prg_nm, and dbg_lvl local to main(), not global to main.c
nco295. Understand/maintain re-entrant behavior of shared library.
nco298. Localize ncap's three globals: ncap_ncl_dpt_crr, ncap_ln_nbr_crr, ncap_fl_spt_glb?
nco299. Prefix prg,prg_nm,dbg_lvl globals with nco_ for namespace cleanliness
nco300. Activate ccmalloc libdl into configure.in for enable-debug-custom
nco301. Unable to use DDD on autotools NCO executable with --enable-debug-custom
nco302. Add speedy GCC optimization flags to --enable-optimize-custom
nco303. Make test suite more comprehensive
nco304. Use/improve flex --header-file=ncap_lex.h to de-lint compiler warnings instead of __GNUC__-specific hacks in ncap_lex.l (NB: probably requires upstream changes in flex)
nco309. Free memory allocated in nco_fl_utl.c: fl_lst_in=(char **)nco_malloc(sizeof(char *)); /* fxm: free() this memory sometime */
nco310. Add ENABLE_DEBUG_CUSTOM, ENABLE_OPTIMIZE_CUSTOM, ... to bld/Makefile
nco311. Automatically convert int,short to float in nco_var_pwr()
nco315. GNUC non-ANSI rank reduction methods in nco_var_avg.c fail on large files. Problem with stack memory allocation?
nco316. Change offending nco_malloc() to nco_malloc_flg() calls for #315
nco317. Understand stack memory problem. ulimits? compiler switches?
nco318. Solve stack memory problem and benchmark vs. ANSI code branch
nco320. How to do TeX-like hyphens in TeXInfo?
nco321. Do not promote NC_FLOAT to NC_DOUBLE in ncra/ncea(?)
nco322. Implement integer empowerment in var_scv_pwr() with, e.g., GSL
nco323. Collect all past ANNOUNCE files and place in reverse chronological order in ANNOUNCE file
nco324. Add release date to "Version Summary" section on homepage
nco326. Add manual override of writing *tmp* file for intermediate results?
nco328. Ability to reverse specified dimensions (use negative stride?)
nco329. Ability to re-order dimensions nco_var_dmn_rdr()
nco333. Clean up preprocessor symbols with cd ~/nco/src/nco;ifnames *.c
nco334. Same as nco354.
nco335. ncflint: implement interpolation/mss_val algorithms two and three as options?
nco336. Allow input file lists to be specified in a text file and to supercede command line arguments. This will be useful on platforms with limited buffers for command line arguments and globbing expansions (e.g., AIX)
nco337. When input file is a symbolic link, print name of linked-to-file as debugging information
nco340. o/a/e stdin is overwritten when stdin input method used
cd ~/nco/data;echo "in.nc" | ncecat -D 3 -o foo.nc
nco342. Get canonicalize_file_name() working in nco_fl_info_get()
nco344. Create sophisticated etags regular expressions for change version number in all documentation tags_doc.sh
************** Important ***************************
nco345. OpenMP implementation in ncwa core dumps on ESMF: wgt_avg problem?
ncwa -D 5 -O -C -a wvl -v ss_co_alb ${DATA_MIE}/mie/mie_1.nc ${DATA_MIE}/mie/foo_avg_1.nc
nco346. Add LFS documentation to nco.texi
nco351. Ask Jim Edwards to fix make test rtld errors on AIX with OpenMP
nco352. Probably related to 351: OpenMP directive must appear in main() or ldd will not associate /usr/lib/libxlsmp.a(smprt_64.o) with executable so rtld errors occur on AIX
************** Important ***************************
nco354. ncwa dumps core on ESMF on large files regardless of OpenMP (related to nco334, nco345):
ncwa -D 5 -O -a wvl -v ss_co_alb ${DATA_MIE}/mie/mie_1000000.nc ${DATA_MIE}/mie/foo_avg_1000000.nc (works)
ncwa -D 5 -O -a wvl -v ss_co_alb ${DATA_MIE}/mie/mie_10000000.nc ${DATA_MIE}/mie/foo_avg_10000000.nc (fails)
fails with
Segmentation fault (core dumped)
nco357. Add OpenMP robustness test to nco_bnch.sh
nco358. Document ncwa -z switch: Get rid of separate -M -m -T?
nco359. Allow spaces between variables names in -v var_lst arguments (assuming list whitespace is quoted, of course)
nco362. reduce memory during run by free()'ing var_fix[idx],var_fix_out[idx],var_prc[idx],var_prc_out[idx] after writes
nco363. ncpdq: document netCDF limitations in nco.texi
nco367. fix ncwa list collapse errors. Unfortunately ncwa uses dim_avg_lst after it is collapsed
nco375. Do something more consistent with: nco_exit(EXIT_FAILURE)
nco379. ncpdq: Add packing/unpacking capabilities
nco385. ncpdq: dynamically allocate arrays in nco_var_dmn_rdr_mtd(), nco_var_dmn_rdr_val()?
nco386. Remove purely diagnostic arrays from nco_var_dmn_rdr_mtd(), nco_var_dmn_rdr_val()?
nco389. ncpdq: Single dimension in re-order list with no negative sign is always identity transformation, warn? exit?
nco390. ncpdq: make -a optional? (all switches are optional in all other operators)
nco392. OpenMP: thread main loop of ncatted
nco393. OpenMP: thread main loop of ncflint
nco394. strdup() all system-owned memory so var_free() can free strings
nco395. ncpdq: document rdr shr lists
nco396. free() memory at end of each operator
nco397. make ncpack symbolic link to ncpdq? Re-order/pack are completely independent yet need same structure of program
nco402. Leave alone [un-]packing of fixed variables in arithmetic operators
See notes about this in nco_var_dfn()
nco404. Does Ersoy's XML stylesheet nco.css work?
nco406. Add advantages/disadvantages of NCO (compared to e.g., ANTS) description
nco408. How to get new SDO tasks done? How to advertise pay-per-feature requests? How to evaluate responses? GNOME has something similar
nco421. ncpdq: Make packing offer to move missing value to inside range
nco425. ncpdq: Make unpacking offer to unpack missing value to preserve its usefulness
nco426. ncpdq: Make packing offer to pack missing value to the packed type to preserve its usefulness
nco427. ncpdq, ncra: Fix pck_dbg problems in nco_var_get() which automatically down-convert missing value to typ_dsk. How to reconcile with nco457?
nco441. Packing NC_DOUBLE->NC_CHAR, NC_INT->NC_CHAR, or
NC_SHORT->NC_CHAR and then unpacking, places 0.0
instead of 1.0 in first element, why? implicit conversion of NUL byte when value = 0.
ncpdq -D 5 -O -C -P all_new -M flt_chr -v three_dmn_var_dbl ~/nco/data/in.nc ~/foo.nc
ncks -m -H -v three_dmn_var_dbl ~/foo.nc
ncpdq -D 3 -O -C -P upk ~/foo.nc ~/foo_upk.nc
ncks -m -H -v three_dmn_var_dbl ~/foo_upk.nc
nco450. Run ncra on two multiple record files with packed variables and look for pck_dbg memory problems with valgrind
nco453. Re-think handling of dangling pointers in nco_pck_val()?
nco454. ncpdq: Combine nco_pck_map,nco_pck_typ into new nco_pck_sct to avoid proliferation of argument passing
nco457. ncpdq: missing_value is not converted to variable type when variable is not packed three_dmn_var_dbl. How to reconcile with nco427?
nco461. Always plenty of great ideas for new NCO functionality in http://tinyurl.com/6pzqd
nco462. ncpdq: pack/unpack missing_data just like variable data? The reason I did not do this originally is because I did not want the missing_value to contribute to the dynamic range of values which need packing. Since my missing_values are always huge (1.0e36), packing missing_values would greatly diminish the precision of the valid packed data. Best solution appears to be to check if missing_value distorts valid_range, and, if so, pack missing_value to default value of packed type.
nco463. add optional scale_factor, add_offset arguments to ncap pack()?
nco464. ncpdq: convert missing_value to packed type
ncpdq -O -D 4 -C -P all_new -v mss_val ~/nco/data/in.nc ~/foo.nc
ncpdq -O -C -U -v mss_val ~/foo.nc ~/foo_upk.nc
ncks -C -m -H ~/foo_upk.nc
nco465. Create UCI IP-compliant license/copyright notice for version 3.0+
nco466. Change ncks -H -M -m switches to toggles?
nco467. Keep track of CDO "Climate Data Operators" http://www.mpimet.mpg.de/~cdo/
nco468. Make -H toggle variable printing so ncks -M only prints metadata
nco469.
ncap-specific items:
ncap04. Fix memory leak in ncap_var_cnf_dmn() or delete routine completely after replacing it with ncap_var_stretch()
ncap07. Combine binary operations into binary_op_var_var and binary_op_var_att types to reduce number of functions
ncap09. Add outer loop over files so script may apply to each file
ncap12. Ensure lexer does not perform un-necessary work during initial_scan (e.g., LHS casting...)
ncap13. Test that LHS casting works regardless of value of LHS template. If true, remove value initialization block
ncap15. Link to GSL functions, especially gsl_sf_* (special functions)
ncap16. Get ncap build working with pure_parser turned off so lex/yacc builds work
ncap17. Start in console mode if no script and no output file specified, e.g., nco>
ncap19. Make all binary operators handle ordering of operands consistently, e.g., divide(1,2)=1/2 not 2/1
ncap20. Print out contents of each non-comment statement when dbg_lvl==1
ncap21. Add two-argument functions like fmodf to ncap_sym_init() (using va_args?)
ncap25. Turn arbitrarily fixed size array tokens NCAP_ATT_LST_NBR_MAX, NCAP_SPT_NBR_MAX into dynamically allocatable arrays
ncap26. Make sym_tbl_nbr dynamic by implementing sym_add(), sym_rm() functions or linked list
ncap28. Make provision for pack() and unpack() to copy all attributes except scale_factor and add_offset from disk into new variable on disk?
ncap29. Rewrite nco_var_pck() to use var_scv() arithmetic operations rather than more complex var_var() operations
ncap30. Allow -S to specify multiple input scripts to be sequentially parsed
ncap31. Put globals fl_spt_crr,ncl_dpt_crr,ln_nbr_crr in prs_arg or remove fl_spt from it
ncap32. Need filename expander and $NCO_DATA_PATH handling so #include's may be generic
ncap33. Document new math/rounding functions (acosh, floor...)
ncap34. Make parse errors always print current line to terminal rather than silently failing
ncap36. cygwin builds of ncap.l and netcdf fail because of dependence on syslimits.h. non-kludge fix may require updated gcc and mingw packages
ncap37. Implement float function definitions in nco_rth_flt.c as inline to improve speed for MACOSX builds (inline is OK in C99 but will it break C89?) using AC_C_INLINE
ncap38. Finish dimension-reducing operations (min/max/avg)
ncap41. Make ncap function prototypes consistent with rest of NCO (ncap.h mainly)
ncap42. Add switch allowing derived variable to take on all attributes of specified variable
ncap43. Alphabetize ncap function list prior to printing it with -f
ncap46. Define YYMALLOC/FREE/REALLOC etc so lexer/parser use nco_malloc() etc.
ncap48. Search ncap_yacc.y for non-symmetric arithmetic operations, implement symmetric operations
ncap49. Cause "**" in arithmetic context to cause error, print HINT to Fortran syntax users
ncap52. Combine pow() with ^ parsing in parser ncap_yacc.y
ncap53. Bug in ncap pack() on Alpha/Tru64: ncap -O -D 10 -s 'hsig=pack(hsig)' foo.nc foo2.nc details on sourceforge
ncap54. Add option (true by default?) to retain variable attributes when variable re-defined or defined in terms of single other variable or perhaps always retain attributes of left-most variable on RHS of definition?
ncap -v -O -s "one=one*1" -s "two=one*2" -s "pck=pack(upk)" ~/nco/data/in.nc ~/foo.nc
ncks -m -H -v one,two,pck ~/foo.nc
ncap55. Add pre-defined named_constants, e.g., nco_pi, nco_e, to make math easier
ncap56. Introduce way of making function synonyms, e.g., ln=log, without growing symbol table?
ncap57. Raising transcendental functions of NC_FLOATs to powers fails on AIX
AIX thinks it has the trancendental float functions, so NCO uses system-supplied versions.
Symptoms are consistent with breakage of system-supplied logf, sinf, etc.
# Fails on AIX
ncap -D 1 -O -v -s "foo=log(e_flt)^1" ~/nco/data/in.nc ~/foo.nc
ncap -D 1 -O -v -s "foo=sin(e_flt)^1" ~/nco/data/in.nc ~/foo.nc
ncap -D 1 -O -v -s "foo=log(e_flt+0.01f)^1" ~/nco/data/in.nc ~/foo.nc
# Works on AIX
ncap -D 1 -O -v -s "foo=log(e_dbl)^1" ~/nco/data/in.nc ~/foo.nc
ncap -D 1 -O -v -s "foo=sin(e_dbl)^1" ~/nco/data/in.nc ~/foo.nc
ncap58. Implement ncap test script in nco_tst.pl format so that errors are flagged at build-time.
ncap59. ncap always gives points in first quadrant for
ncap -O -v -s 'water_dir=(180/4*atan(1))*(atan(water_v/water_u) + 4 * atan(1) * ((water_u-abs(water_u))/(-2*water_u)))'
ncap60.
Build items:
bld14. Replace #ifdef tokens in NCO code with autoconf-style tokens, e.g., #ifdef HDF5 -> #ifdef HAVE_HDF5, etc. Other tokens to consider are WIN32, _OPENMP, USE_FORTRAN_ARITHMETIC (deprecated). Of course must modify bld/Makefile to pass these style tokens as well so that config.h is not _required_, and that token use is consistent.
bld23. Implement ncra i18n support I18N with autotools: Add .po files, update doc/i18n.txt
bld30. Search for libstdc++ with AIX/DODS/GCC breaks NCO build
bld32. Why have --enable-shared and --enable-static both default true? override one?
bld33. Use PACKAGE_BUGREPORT, PACKAGE_NAME, PACKAGE_STRING, PACKAGE_TARNAME, PACKAGE_VERSION?
bld35. Add pgcc, pgCC switches to configure.in
bld36. Improve precision/wording of nco_ctl.c tokens on shared/static libraries
bld37. Ensure C99 used by compilers with AX_CFLAGS_SUN_OPTION AX_CFLAGS_HPUX_OPTION AX_CFLAGS_AIX_OPTION AX_CFLAGS_IRIX_OPTION
bld38. Use OPeNDAP 3.4.4 opendap-config script to ease build process, e.g., `opendap-config --cxx --cflags --libs` -o sample sample.c
bld39. Fix autoconf build warnings (from including ncap_yacc in ncwa?):
Makefile:472: warning: overriding commands for target `ncap_yacc.h'
Makefile:440: warning: ignoring old commands for target `ncap_yacc.h'
bld40. Automate splicing trailer ~/nco/doc/man_end.txt to man pages
bld41.
************************************************************************
End NCO Wish list
************************************************************************
|