Note: Winget
is generally preferred for Windows packages.
Scoop
brings easy install like scoop install gcc of developer programs in the
package list
to Microsoft Windows.
Scoop works from a fresh Windows install.
Install
Scoop,
then install Git via Scoop, so that Scoop can update its recipes:
scoop install git
Commmon development tools:
gcc / gfortran: scoop install gcc
make / cmake: scoop install make cmake
clang / LLVM: scoop install clang
GNU Octave: scoop install octave
From time to time scoop update gcc or similar to update individual packages.
If you have problems playing back the .avi file, try omitting the -c:v ffv1 parameter.
Don’t go below a framerate of about 3 frames/second because some viewers won’t work (e.g. VLC).
FFmpeg file globbing does NOT work on Windows, even with FFMPEG 4.x.
The error on Windows is like:
Pattern type ‘glob’ was selected but globbing is not supported by this libavformat build
Matlab and GNU Octave are constantly adding new functionality.
However, legacy versions remain in use for years.
Overloading a built-in function in Matlab and Octave requires logic to account for Octave providing many functions as m-files rather than builtin as in Matlab.
ZIP files or GZ files and the like can be quick-and-dirty ways to compress individual data files for retrieval from remote sensors.
In particular, the
GeoRinex
program has extensive capabilities for transparently (without extracting to uncompressed file) reading .zip, .z, .gz, etc. compressed text files, which benefit greatly from storage space savings.
It was surprising to find that transparently processing similarly compressed binary data is not trivial, particularly with numpy.fromfile.
Numpy has
unresolved bugs
with
numpy.fromfile
that preclude easy use with inline reading via
zipfile.ZipFile
or
tarfile.
Specifically, the .fileno attribute is not available from zipfile or tarfile, and numpy.fromfile() relies on .fileno among other attributes.
numpy.frombuffer
is not generally suitable for this application either, because it does not advance the buffer position.
We are not saying there’s no way around this situation, but we chose a more generally beneficial path.
When raw data files need to be compressed and then later analyzed, we use HDF5.
Even when the original program writing the raw binary data cannot be modified,
a simple post-processing Python script with h5py reads the raw data and converts to lossless compressed HDF5 on the sensor.
Then, when the data is analyzed out-of-core processing can be used, or at least the whole file doesn’t have to be read to retrieve data from an arbitrary location in the HDF5 file.
This allows getting nearly all of the size and speed advantages of HDF5 without modifying the original program.
Numpy is well known to be slower at scalar operations than pure Python.
But many data science and STEM application using arrays are vastly faster and more convenient with Numpy than pure Python methods.
fromnumpyimport isnan
%timeit isnan(0.)
CPython: 428 ns ± 1.74 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)