- removed warnings when modules have different numbers of PMTs
10.0.1 - 2024-10-18 ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ * Fixes a 100% CPU issue when Ligier is disconnected in the middle of receiving
a message
10.0.0 - 2024-10-09 ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ * Removed support for the online ROOT format since it's not supported anymore
in km3io due to the lack of maintainers (it relied on uproot3 which is deprecated)
- Python 3.10+ is now required
9.13.12 - 2024-06-10 ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ * Fixes a freeze at the process end which rarely happens in Slurm jobs
9.13.11 - 2023-09-04 ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ * Minor fix of CI/publishing
9.13.10 - 2023-08-31 ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ * Fixes numba warning
- Fixes an issue in the parsing of the timestamp of the DAQHeader which is caused by the CLB (bit flipping?)
- Removed font-family setting in default style to suppress tons of warnings on some systems where fonts are not (properyl) installed
- Improves buffer handling of controlhost streams. This fixes a very rare bug where the prefix (4 bytes) is not fully retreived, in which case the connection was reset.
- Controlhost client now reconnects automatically if socket connection is lost
- Fixed a bug when a hit recarray from DAQ is directly passed to the
calibration and crashes Numba because it's cannot work with big
endian types (fields). This caused crashes in the
triggered_hits
script of thekm3mon
monitoring system
- Cosmetics and typos
- Fixed a crash in
h5extractf
which happens when the input ROOT file has no events
- Better error reporting in
h5extractf
- Updated dependencies (km3io)
- The
h5extractf
command line tool was updated to extract additional information from the ROOT files.
- Fixed the calibration of MC hits when using
kp.calib.Calibration().apply()
onkm3io
MC hits.
- Hotfix for the incident where ligier sends EOF. Now the Controlhost client resets the connection
- Fixes version discovery in deployment
- DETX V5 support added
- Removed
file_mode="append"
fromHDF5Sink
- Hotfix for parsing triggered hits in online streams
- Fixed typo in
io.daq
- Minor fixes in CI
- Forces the usage of HTTPS connections to ELOG and when updating
Calibration.dus(hits)
added, which returns the DU for each hitCalibration.floors(hits)
added, which returns the floor for each hit- Performance improvements in
DAQEvent
parsing
kp.stats
removed as it is not used- added
memory
option tokp.shell.qsub()
kp.io.daq.is_3dmuon
,kp.io.daq.is_3dshower
andkp.io.daq.is_mxshower
have been removed in favour ofkm3io.tools.is_3dmuon
etc.
uriwd
is now an optional dependency and needs to be installed separately forpipeinspector
- Improved logging behaviour when setting a level using
kp.logger.set_level()
- Removed
numpy
from build stage
- Minor cosmetics and bug fixes
h5extract
got two new options:--without-calibration
to skip hit-calibration information and--without-full-reco
to skip writing the complete reconstruction information (best tracks are written by default)
- Minor refactoring of dependencies
- New command line tool
h5extractf
, which is similar toh5extract
but much faster. It has limited options but does the conversion in one go.
km.common.MultiFilePump
now takes a dictionary via thekwargs
parameter which is then passed as keyword arguments to the pump- Fixed a bug which assigned the wrong floor when the calibration was applied
- Fixed a bug which prevented to retrieve a detector from the database via
kp.hardware.Detector(det_id)
- DAQ io is refined and is now a bit faster
- Add support for Numpy compatible arrays (e.g.
awkward.Arrays
) inkp.calib.slew
h5extract
now has the option--aashower-legacy
which is needed to account for the old number of aashower reco_stages which has now changed.
- Fixed parsing of DETX v4 in
kp.hardware.Detector.get_pmt()
andkp.hardware.Detetor.xy_positions
h5extract
now has the option--best-tracks
which will create separate datasets of best tracks for each known reconstruction
- Added the CLI
tres
to extract hit time residuals from reconstructed files.
kp.physics.cherenkov
now works withawkward.Records
which are e.g. returned from km3io when iterating over events
- Updated containerisation
- km3db>=0.5.1 is now required which fixes an issue when IPv6 was used, resulting in a >2 minute lag each time the database is accessed
- Fixes issues when reading converted HDF5 files which contain invalid parameter names in the header
- Added
-n N_EVENTS
option toh5extract
to limit the number of events to extract. - Python 3.5 support officially removed.
- RRZE HPC options for number of nodes, CPUs and node type added to ``km3pipe.shell.qsub`
km.FilePump
added which is just a simple pump providing filenames
- Fixed UUID provenance entry for ROOT input files
- km3io v0.19 and uproot4 compatibility
- Small bugfixes
- Fixed imports for awkward
- DETX v4 support added
- Minor bugfixes in the
ztplot
command line tool
- The
h5extract
tool replacestohdf5
km3pipe.db
has been removed and all database functionalities replaced bykm3db
.StreamDS
,DBManager
,CLBMap
and other helper functions are now inside thekm3db
package: More information here: https://git.km3net.de/km3py/km3db- New
kp.physics
module to consolidate physics related functions andkm.physics
to gather physics related pipeline modules - Provenance tracking! See https://km3py.pages.km3net.de/km3pipe/auto_examples/plot_provenance.html
- No ROOT or aanet dependency anymore. Every I/O is done by
km3io
with native ROOT support written in Python - Removed all deprecated functions (no mercy)
- A lot of clean-up has been done. If you miss anything, create an issue.
numba
is not optional anymoreCalibration.apply()
now addsdom_id
andchannel_id
when calibrating MC hits andpmt_id
when calibrating regular hits
h5extract
now extracts everything by default, when no other options are passed- Fixed a bug in
HDF5Sink
when blobs where skipped andNDArrays
written Thegroup_id
is now reset automatically and is guaranteed to be continuous. - The DAQ structures (
DAQEvent
,JDAQSumaryslice
andJDAQTimeslice
) now have a version field in Jpp v13 and were updated inkp.io.daq
accordingly. There is no backwards compatibility for this change. If you see "corrupt data" errors, either downgrade km3pipe to 9.0.0-alpha.13 or less, or update Jpp to v13+ (recommended).
- Minor bugfixes
kp.physics.cut4d
added which allows the selection of e.g. hits within a given sphere shell while respecting the light propagation limitskm3pipe.db
has been removed and all database functionalities replaced bykm3db
.StreamDS
,DBManager
,CLBMap
and other helper functions are now inside thekm3db
package: More information here: https://git.km3net.de/km3py/km3db
- Time slewing corrections are now automatically applied when
using
kp.calib.Calibration().apply()
- New functions added to check if points (e.g. hits) are
within a sphere:
kp.math.spherecut
andkp.math.spherecutmask
kp.math.angle_between
now takes anaxis=
parameter to calculate multiple angles in one shot
- Improved provenance for ROOT files (UUID handling)
- The
h5extract
CLI has been added which replaces the oldtohdf5
tool and is a modular version of it. - The
triggermap
CLI now supports reading offline files using the--offline
parameter and also accepts DETX files via-d
- New
kp.physics
module to consolidate physics related functions andkm.physics
to gather physics related pipeline modules kp.db.show_ahrs_calibration
andkp.db.clbupi2ahrsupi
are now deprecated in favour ofkp.db.show_compass_calibration
andkp.db.clbupi2compassupi
and also support LSM303 in addition to AHRS
- Fixed a bug where
kp.Table
modified scalar entries of the dictionary which was passed to instantiate the table
kp.calib.Calibration().apply()
now also takes km3io offline hits fromkm3io.OfflineReader().events[EVENT_ID].hits
runtable
can now filter on job target (e.g.-t run
)- Switch from yapf to black for code formatting
- Added access to old slewing calculations
- Provenance functionality from
thepipe
has been integrated
- Minor fixes
- Clean up deprecated tools and functions, including
tohdf5
. - Updates in the documentation
- Minor fixes
- Minor changes
kp.db.clbupi2ahrsupi
has been updated to use the new method to find the AHRS UPI for a given CLB UPI.
kp.io.clb.CLBPump
has been modernised and is now returnkp.Table
instances- A new command line utility called
daqsample
has been added, which creates dumps of a given DAQ stream.
- minor fixes
km.ahrs.get_latest_ahrs_calibration()
now takes the newest one, regardless of the version number
- All the aanet/Jpp/ROOT/pickle stuff has been removed. Preparing for v9.
kp.db.DBManager().doms
is now removed after a deprecation period. Please usekp.db.CLBMap(det_oid)
instead (see the User Guide in the docs)km.ahrs.get_latest_ahrs_calibration()
now chooses the latest AHRS calibration set by theEndTime
parameter (the latest one)
kp.io.daq.TimesliceParser
is fixed, it crashed before when no hits were present
kp.io.offine.EventPump
added, which is a preliminary offline event reader based on km3io
- Fixed time slewing
- Fixed time slewing
- Updated time slewing to use the latest lookup table from Jpp
km3pipe retrieve DET_ID RUN
will now use a local cache in Lyon and create symbolic links to save space.
- KM3Pipe v8.x will be the last version to support Python 2. v8.26.0 was
branched out to
v8
and will only receive bug fixes. Themaster
branch is now the pre-v9 withthepipe
integration and Python 3.6+
interaction_channel
defaults tonp.nan
in case of a lookup error in aanet
is_cc
is now defaulting to0
if there is a lookup error in aanetby
(Bjorken-y) defaults tonp.nan
in case of a lookup error in aanet
- Quite a few python packages needed to be frozen to make it work with Python 2.7. We hope this is the last v8 patch
- statsmodels is now frozen at 0.9
- statsmodels is now unfreezed in the dependencies
km3pipe retrieve
now uses XROOTD instead of iRODS
- Fixed
triggersetup ...
andruninfo -t ...
which crashed when no ADF data is available
- New
kp.io.i3.I3Pump
to read ANTARES I3 files
km3pipe retrieve DET_ID RUN
will now use a local cache in Lyon and create symbolic links to save space.
kp.io.HDF5Sink
now offerswrite_table()
as service, which takes akp.Table
and writes it to the HDF5 location defined by itsh5loc
attribute
km3modules.communication.ELOGService
has been added to talk to the ELOG server
km3modules.hits.count_multiplicities
now supports the latest numba version (and is fast again)km3modules.plot.ztplot
improvedkm3modules.common.LocalDBService
has now an option to disable thread safetystatsmodels
version was fixed to 0.10.1 due to Python 2.7 compat, which will drop by the end of 2019
- Removed deprecated properties from
CLBMap
- Added
km3modules.LocalDBService
which provides an easy to use interface to local sqlite3 databases. km3modules.plot.ztplot
can now be used to recreate the zt-plots shown by the online monitoring
Module.print
andPipeline.print
have been deprecated, please use*.cprint
from now on (the black formatter has issues withself.print
)- Fixes coloured output for e.g.
streamds
- The header readout is now fixed for ROOT6+Py3+aanetv1
kp.io.hdf5.HDF5Sink
is changed to try to convert dtypes when the original table is defined and the data has the same names but slightly different field types. This only occured so far when using Python 3 with aanet, where aanet returns unicode strings in the raw_header instead of bytes.
kp.io.evt.EvtPump
now allows read-in of entries which has additional undefined fields (those are simply ignored)
- Bugfixes
- Added
kp.tools.sendmail
which can be used to send mails.
- Improved
qrunqaqc
, which now runs much faster kp.tools.ifiles
now returns a list ofkp.tools.File
, a named tuple with the fieldspath
andsize
(in bytes) instead of a plain list of filepaths
- Fixed Jpp version determination due to changed output of JApplications
- Fixed persistent DB connections
- Fixed small bug which prevented
qrunqaqc
to run properly under Python 2.7 when set a max job count
- Remove strict lib requirements for a couple of Python 2.7 incompatible libs
- Downgrade Matplotlib requirement to v2 due to Python 2.7 and 3.5 compat
- Updated requirements (especially numpy>=1.17 which has fixed its memory leak)
- Added plotting style for Johannes
- Session cookie is now available on [jupyter.km3net.de], no auth needed there
kp.controlhost.Client
now hasput_message(tag, data)
to send messages to the Ligierstreamds upload
now allows the option-x
which will disable the SSL certificate verification
runinfo
now also prints the iRODS and xroot paths
- Added a module to process multiple files with a given pump:
km3modules.common.MultiFilePump
. - Improved error message when calibrating with wrong DETX using the
calibrate
command line utility. - Added a function to calculate the time slewing of a PMT response in
km3modules.mc.slew
- Python 2.7 compatibility fixes
- Fixed a bug in the command line tool
calibrate
where the t0s were not added to the hit times in real data files
- Fixed numpy version requirement to 1.16.2 due to a memory leak in recarray: numpy/numpy#13853
HDF5Sink
now acceptskeys=['BlobKey1', 'BlobKey2']
which can be used to selectively write the keys. All other keys will be ignored- The
io.ch.CHPump
now accepts theshow_statistics=True/False
parameter which will print queue size and idle time ligiermirror
now prints performance statistics by default
- Fixes an issue of setting log levels below
WARNING
, which had no effect after the recent update of the logging facility
AanetPump
now acceptsfilenames
(again ;)
- Fix unit tests for aanet readout
- Fixes bug in the
AanetPump
where not all event information was extracted and added to theEventInfo
- Pipeline configuration files can now have a
[VARIABLES]
section where values can be defined to be reused in other sections
- Minor fixes
- Minor fixes
-b
inqrunqaqc
is now optional and it will process all runs distributed over the maximum number of jobs if not specified
CalibrationService
->detector
has been deprecated, useget_detector()
insteadCalibrationService
now also addsload_calibration
to update the calibration data during runtimekp.db.CLBMap.upi
and.dom_id
are deprecated, use.upis
and.dom_ids
instead
qrunqaqc
now needs-u
to automatically upload data to the DB
- A new command line utility called
qrunqaqc
was added which processes runs to determine the quality parameters usingJQAQC.sh
and submits the results to the runsummarynumbers table of the KM3NeT database. - New option to directly log to a file for example via
kp.logger.get_logger("foo", filename="bar.log")
- Added
kp.tools.isize
andkp.tools.xrdsize
to look up the size of a file on iRODS or via xrootd respectively
- Improved error handling in streamds runsummary upload
- Fixes an issue (which only happened on Lyon) where a
UnicodeDecodeError
was raised during installation
- Multiple filereadout with
kp.io.aanet.AanetPump
removed due to multiple issues (tohdf5
freeze, header mixup and group ID problems)
kp.io.aanet.AanetPump
now reads multiple files whenfilenames=...
is provided.
- Fix
ModuleNotFoundError
exception in Python 2.7
- Massive speed-up of the calibration procedure using
numba.typed.Dict
numba v0.43 or later is required
- Minor changes in
setup.py
- Adds a workaround for converting aanet ROOT files when the dtype dict is mixed up
[self.]log.once
can now be used to print a log message exactly once!- Fixes a problem where hit times could be overwritten by applying the calibration more than once.
kp.toos.timed_cache()
now can be used to created LRU caches with timeout- Fixed a missing import (
healpy
) inkm3modules.plot.make_dom_plot
- Changes dtype of time of Timeslice hits from integer to double
- Bugfixes
- Fixes
IndexError
when reading sparsely writtenTables
to HDF5
- Changed dtype of
du
andfloor
of calibrated hits from<f8
to<u2
- Major performance upgrade for large HDF5 when reading with the
HDF5Pump
- A new class
kp.io.daq.DMMonitor`
to able to communicate with the Detector Manager. It can be used to monitor e.g. CLB parameters in real time before they are put into the KM3NeT database - Performance improvement of the
HDF5Pump
when reading in lots ofTable
- Minor bug fixes
- Bugfixes
- Add verbosity argument to calibrate tool.
- Massive improvement of
HDF5Sink
when writingNDArrays
- Add
flush_frequency=...
option toHDF5Sink
to set the number of iterations to wait before the internal cache is dumped to the disk - Fixes consistency when reusing the
HDF5Pump
with multiple files.
kp.hardware.Detector
now provides aTable
with DOM information via its.dom_table
property.kp.math.dist
is fixed, it had no return statement.
TMCHRepump
now accepts aversion=...
parameter to force a specific version just like forTMCHData
.
TMCHData
now accepts aversion=...
parameter to force a specific version.
Table
can now be instantiated withfillna=True
when created fromdict
anddtype
where keys in thedict
are missing. Those will be filled with NaNs.- The
Module.only_if
parameter now also accepts a list of keys, which has to be present in the blob, otherwise theprocess
method is not called. - The
HDF5Sink
now also accepts "chunksize", "complib" and "complevel as arguments."
- Fixed read-in of split tables when shuffling in
HDF5Pump
- A new standard parameter called
blob_keys=['list', 'of', 'blob', 'keys']
can now be used to filter the blob keys before passing it to a module during the cycle
- The
RandomState
is dead, long live theGlobalRandomState
! (We renamed it...)
- Minor changes in Dockerfile and docs
io.pandas
has been removed- DETX v3 supported (including the ability to
kp.hardware.Detector.add_comment()
which are preserved when writing - DUSJ readout fixed, now every parameter is written by default (with NaNs if missing)
HDF5Sink
now only writes instances ofTable
andNDArray
to simplify the implementation and avoid future bugsHDF5Sink
now can shuffle the blobs whenshuffle=True
, additionally ashuffle_function
can be defined to have more control (mutating).km3modules.mc.RandomState
can be used to set the global random seed of numpy to be able to create reproducible pipelines- In
HDF5Pump
when reading multiple files, each file is only opened when needed to avoid unneeded memory and computational overhead
qtohdf5
can now be used to convert multiple files using the batch farm use the-i
option to indicate that the input path is an IRODS path if you convert files from IRODS to SPS for examplewtd
is the "what the DOM???" command line utility, which will print information (like DU and floor) for a given DOM (and DOM [O]ID).JHIST__XXX
is now parsed using reconstruction chains defined inio/aanet.py
Module
can now require services with theself.require_service(service_name, [reason])
- Logging can now show deprecation warnings with
[self.]log.deprecate()
runinfo
optionally prints out the trigger parameters when-t
is used
Vec3
is a new standard datatype for 3D vectors. Mainly used in RainbowAlga- The modules attached to a pipeline can now be configured using an external
file. The default filename is
pipeline.toml
and uses the TOML format. You can specify your own configuration file with theconfigfile
parameter in thePipeline
constructor. The module configuration has precedence over keyword arguments!
- added Dusj fitinf enum names and extended reco enum to hold Dusj reconstruction information (range 200-299) * the
AanetPump
now reads the metadata usingJPrintMeta
, which will be automatically captures by theHDF5Sink
to dump it to/meta
. A simple table which can be read bymeta = pandas.read_hdf(filename, 'meta')
tohdf5
can now convert multiple files in one shot (again). There is no merging anymore, this will be done byh5concat
in future.runtable
now accepts ranges of runs-r FROM_RUN-TO_RUN
- fixes a bug in
tohdf5
where the default output filename isdump.h5
now it's original filename + .h5 if no output filename is specified - Adds
HDF5Header
which is a convenient way to access the/raw_header
data fromKM3HDF5
formatted files. It can be used likeheader = km3pipe.io.hdf5.HDF5Header.from_hdf5(filename)
- prettier Blob when printed
- KM3HDF5 v5.1 - introducing a new raw_header definition to store file/MC info
- Read only aanet data when passing
bare=True
tokp.io.aanet.AanetPump
- AA: If
rec_type
(defined in JFitApplications.hh) is not available, use the JHistory (rec_stages
) to derive the fit name, likejhist__jgandalf__jprefit
- AA: If neither
rec_type
nor history are available, enumerate track names - names
generic_track_
, based on their dtype.
- AA: If neither
- AA: more robust track readout (segfaults etc form looping over empty pyroot vectors
- tohdf5.py: - adds a time conversion from mc time to jte time.
- kp.shell.Script now implements addition, so you can concatenate multiple scripts together
- minor fixes
- Fix a new typo in stats.rv_kde.rvs
- Fix a Python 2.7 syntax error (self. print)
- Python 2.7 compatibility added, thanks to ROOT
- New commands available to print the git revision number: km3pipe git and km3pipe git-short
- Include git revision hash in pip tar ball
- Fix: Read all tracks in AanetPump
- Introduce robust aanet header readout
- Update
tohdf5
to the new aanetpump
- Fixes an issue where requirements.txt is not found when installing with pip install km3pipe
- Completely rewrote Aanet file readout -- supporting latest jpp/aanet only,
and using enumerated types to label
fitinf
vectors /rec_type
reconstruction types - Added triggered_hits = hits.triggered_rows syntactical sugar
- Fixed datatype bug when applying t0 calibration to timeslice hits
- Added
qrunprocessor
utility
- replace all dataclasses with the
Table
class (subclass ofnp.recarray
) - KM3HDF5 Version 5.0:
group_id
replacesevent_id
in every table, and generalizes from it. Oldevent_id
structure is still supported - no more cython!
- python3 required!
- new fancy
self.print
function forkp.Modules
- unified colourful logging/printing to increase the rainbow unicorn factor
Detector
is now super fast when parsing DETX (hello SuperORCA!)- New functions to translate the detector or rotate a DOM or a DU using quaternions.
EvtPump
now reads any EVT file and supports additional parsers to create convenient datatypes. By default it tries to automatically apply known parsers but also supports user defined ones.- consolidated requirements: now everything is managed in
requirements.txt
there is also no morepip install km3pipe[full]
, onlypip install km3pipe
, so you always get the full load ;) - huge increase in code coverage by adding >200 new unit tests
- old Python 2.7 compatible version is available on the
legacy
branch, you can always update to the latest legacy withkm3pipe update legacy
- the Aanet-bindings are broken, since Aanet/ROOT are not working with Python 3 yet. Some things work, other may not, we are working on it. If you want to use aanet to read or convert ROOT files, use the legacy version
- a lot of bug fixes and performance improvements!
- IMPORTANT NOTE: This is probably the last release of v7, which means that this is also the last patch for Python 2.7 users. Please switch to Python 3 NOW!
- Fixed a bug, where
kp.io.hdf5.HDF5Pump
opened an HDF5 file multiple times Detector
is now super fast when parsing DETX files and also guesses the right floor IDs for non-standard (and faulty) DETX formats.
- Fixed
kp.io.evt.EvtPump
, where the first blob was empty for every file while iterating through many files. - The
n_digits
parameter ofkp.io.evt.EvtPump
can now beNone
, indicating that no leading zeros should be generated. This is actually the default setting now.
-s REGEX
inruntable
andkm3pipe detectors
now uses a not so strict regex - re.search instead re.match.kp.hardware.Detector
now allows missing UTM information in detector descriptions (for example det id 36 in the database)- Fixes Python 2.7 compatibility with detector -
AttributeError
(rfind
)
- Fixes
KeyError
when accessing McTracks via the aanet API - Fixes lookup of DOMs
DBManager().via_clb_upi()
andDBManager().via_dom_id()
, since DOMs are not unique. The same DOM can have the very same DOM ID and DOM UPI in a different detector, so now you need to provide a DET ID too. - Fixes aanet crashing on mc_tracks (introduced in 7.17.XXX)
- Fixed typo
ligiermirro
->ligiermirror
triggersetup
command line utility added, which allows easy access to the trigger setup of a given run setupk40calib
now accepts-s
to select aJDAQTimeslice
stream. an empty string will use the original stream and 'L1', 'L2' and 'SN' will select the new streams introduced in Jpp v9kp.tools.AnyBar
added to control the AnyBar macOS app, including a pipeline integration:kp.Pipeline(anybar=True)
km3pipe runtable
is now a standalone command line tool:runtable
km3pipe runinfo
is now a standalone command line tool:runinfo
UTMInfo
added inkp.hardware
to make access to UTM information easier in detector filesDetector().utm_info
...ligiermirror
command line utility added
km3pipe.plot
: Common plotting helpers- A handful utility functions for
km3pipe.shell.Script
, likecp
,iget
... kp.tools.bincenters
now lives inkp.plot
.kp.db.DBManager.trigger_setup
can now retrieve trigger setups for a given OID- Add
n_digits
option inkp.io.evt.EvtPump
for file number index when iterating over multiple files. kp.math
has some helpers for bootstrapping confidence intervals when fitting probability distributions via max LLH (in scipy.stats)- Docs: move statistics examples to own section, show some distribution fits
TimeslicePump
now supports the readout of any stream ("L0", "L1", "SN"...)- Minor bugfixes (km3pipe has no attribute named hardware...)
- add loguniform distribution (
kp.math
) - add contextmanager for pumps (
with HDF5Pump(fname) as h5: print(h5[0])
) - clean up makefile / installer docs
- debug compilation/makefile issues
- Windows compatible version of sys.peak_memory. KM3Pipe should now compile and work under windows...
- fix issues with hit indexing when merging multiple h5 files
core.pyx
andtools.pyx
have been "depyxed"Calibration.apply**
(should) always returns the hitsModule.finish
(and thus the pipeline!) actually return something now!Calibration
shortcut removed fromkm3pipe
, so now you have to usefrom km3pipe.calib import Calibration
or justkp.calib.Calibration
if youimporte km3pipe as kp
. This change was needed to be able to import __km3pipe__ in Julia.kp.io.hdf5.HDF5Pump
now accepts the path of a boolean cut mask, e.g.cut_mask='/pid/survives_precut'
. If the bool mask is false, the event is skipped.
- makefile tuning
- linalg tuning (innerprod_1d etc)
- pandas mc utils simplification (is_neutrino takes Series, not DataFrame, etc)
- add a makefile
- flake8 all the things
- make compatible for upcoming numpy 1.14
- add
nb2shpx
util for notebook -> sphinx gallery exampe - some pandas bits and bobs
- Improved CLB raw data readout
- Pipelines now return a
finish blob
which contains the return values of each modules finish method (this is for Tommaso) TimesliceParser
now reads all timeslice streams (L0, L1, L2, SN)TimesliceParser
now returns the blob even if it was not able to parse the dataTMCHRepump
now has an iterator interface- Fixed bug in
StreamDS
where it tried to create a session in Lyon and failed. Now it uses the permanent session which was created by Cristiano - Some smaller bugfixes and name-consistency-changes
kp.math
:zenith, azimuth, phi, theta
now follow the correct km3net definitions (finally)- JFit pump now follows multipump paradigm
- improved logging in IO
- Added preliminary
kp.io.jpp.FitPump
, which readsJFit
objects. However, it does not yet read thefitinf
vector, yet. Calibration
moved tokp.calib
, since core.pyx was Cython and numba does not like cython files.streamds
now requires theget
command to retrieve info on command linestreamds
can now upload to runsummary tables- remove obsolete
kp.dev
(now resides inkp.tools
- fixes EOF hang in
kp.io.daq.TMCHRepump
- Hotfix of the SummaryslicePump (rates/fifos/hrvs reference issue)
Geometry
has been renamed toCalibration
- aanetpump now does not convert MC times by default
- JPPPump removed
- New
k40calib
command line tool to calibrate DOMs using the K40 method TimeslicePump
andSummaryslicePump
now add meta information about the slices to the blob:blob['TimesliceInfo']
andblob['SummarysliceInfo']
SummaryslicePump
now reads out FIFO status and HRV for each PMTkp.shell.qsub()
can be used to submit jobs to SGE clusters
- Massiv(!) speedup of the JPP timeslice pump (factor 3 to 4), now only about 8% slower compared to raw JPP readout. We are at the I/O limit of ROOT ;)
DTypeAttr
now allows adding of additional fields to the numpy array using the.append_fields
method.- merge
kp.dev
intokp.tools
- New command line utility to plot the trigger contributions:
triggermap
- fix wrong spaceangle computation (duh!)
- KM3HDF5 Version 4.4 (minimum 4.1): RawHit time is now int32 = instead of float32 and CRawHit*.time/CMcHit*.time is float64 fixes bugs which occured due to precision loss for large hit times
- Fixes the
io.jpp.EventPump
to useRawHitSeries
- A preliminary version of
SummaryslicePump
- A new pump for JPP events has been added:
io.jpp.EventPump
. This will replace theJPPPump
soon. - several changes to km3modules.k40 to improve the calibration procedure
- (aanet/tohd5) run id is now read from header, per default; if that fails
(or the flag
--ignore-run-id-from-header
is set, fall back to theevent.run_id
- (aanet/tohd5) new option to read run ID from header, not event. in old versions of JTE, the event.run_id is overwritten with the default, 1.
- there is now a new command line utility called
streamds
for non-pythonistas - The new
km3pipe.ahrs
now contains AHRS calibration routines
HDF5Sink
now uses the newHDF5MetaData
class two write more verbose metadata to the files (e.g. file conversion parameters) HDF5 metadata now contains much more information; e.g. if the mc hit time correction was applied, the aa-format, whether jppy was used etc- introduce "services" to the pipeline model. these are addressed via the
expose
method - aa/gand: fix up-vs-downgoing normalisation (now difference over sum)
- fix automatic JTE/MC time conversion
- fix the check if mc time correction needs to be applied
h5tree
CLI util, to print just the structure + nevents + nrows. less verbose thanptdump
- KM3HDF5 4.3: introduce richer metadata
- Option to Ignore hits in pumps
- fix aanet fitinf enum
- fix aanet (optional) 4-element event.weight vector readout. the weights can now be read again :-)
- Use mc_t to detect if MC time conversion (from JTE to MC time) should be applied. Should be more reliable since some MC could use positive DET_ID which should only be used for real data
- Fixed bug which converted MC times in real data. Now it checks for a positive DET_ID and does not convert (even if told so...)
- Fixes zt-plot, which did not use the newly implemented datatypes
- fixed bug in math.spatial_angle (zenith vs latitude)
- (aanet) jgandalf_new now computes a ton of fit-spread-related metrics (updated in tohdf5 help string, too)
- added usage warning to math.azimuth. for rest-of-world compatible coordinates, use KM3Astro
- accept coords in polygon containment (contains_xy)
- The AANetPump now automatically converts hit times from JTE time to MC time. This should be now the default behaviour for all pumps.
tohdf5
now has the option to--do-not-correct-mc-times
in case the automatic conversion from JTE to MC hit time is not wanted- HDF5 version updated to 4.2 due to the new handling of JTE/MC times. It is however backwards compatible to 4.1.
- Freezes six-dependency to version 1.10 as the metaclass stuff for Python 2 is broken in 1.11
- Adds sorting for
***Series`
and other DTypeAttr subclasses.
- Numpy style slicing for
***Series
- skip aanet header, optionally
- minor fixes for i3 files + old aanet
- Add arrival timestamp to controlhost Prefix
- Introduces
StreamDS
inkm3pipe.db
which allows easy access to all streamds tables
- add
i3shower2hdf5
CLI util for converting orcadusj files - add
kp.math.space_angle
- add
i3toroot
andi3root2hdf5
CLI utils for converting I3 files - drop deprecated
h5tree
, fromkm3pipe.utils
(useptdump
instead) - drop deprecated
km3pipe.io.hdf5.H5Mono
- read aanet
mc_id = evt.frame_index - 1
- drop
read_hdf5
andGenericPump
from top level module import (would make pytables a hard requirement)
- No more error messages in
Detector
orGeometry
(which usesDetector
) when reading in corrupt DETX with negative line ids. - Fixes "TypeError: data type not understood" for Geometry.apply
- Various fixes to support the new HitSeries format (e.g. for RainbowaAlga2)
- New styles
- SciPy histogram showoff by Moritz
- Minor updates in docs
- Skeleton for future project bootstrap
AANetPump
now parses the full header andHDF5Pump
writes it to /header as attributes
- Fixes
HDF5Pump
for Python3
- KM5HDF5 v4.1 now have DU and Floor information when calibrating
- Added 5 last lines in: daq.py - TMCHdata for reading the monitoring file
- Fixed bug with aanet pump
- Increased performance for Geometry.apply
- Changed type of time to float in
RawHitSeries
- Introducing
CRawHitSeries
andCMcHitSeries
which represent calibrated hit series - New command line argument to apply geometry/time calibration to an HDF5 file
usage:
calibrate DETXFILE HDF5FILE
- New KM3HDF5 version 4.0
- HDF5Pump now creates
RawHitSeries
. The other pumps will be updated too. Geometry.apply()
will returnHitSeries
if aRawHitSeries
instance is the input.- Several bug fixes and speedups.
- Hotfix
- HDF5 version was accidentally set to 4.3 in km3pipe v6.9.1, now it is 3.4
- minor change in EvtPump
- Last version freeze before 7.0
- Fix event_id and run_id
- add
MCHitSeries
to represent Monte Carlo hitseries - add
MCTrackSeries
to represent Monte Carlo trackseries - add
MCHit
to represent Monte Carlo hits - add
MCTrack
to represent Monte Carlo tracks - add run id to event_info
- add
TMCHRepump
to replay IO_MONIT dumps - add
RawHitSeries
to represent uncalibrated hitseries - use
RawHitSeries
and nested structure in HDF5 files when converting from aanet - HDF5 version changed from to 3.3. Only the hits-readout is affected though! DST, reco and track readout were not changed and should be compatible down to 3.0
- add option to create default config file
- fix wrong readout in io.root.get_hist3d
- DOI citation added
- tohdf5: aa pump: make zed correction (mc tracks) optional
- minor bugfixes
- git repository changed,
km3pipe update develop
is broken for all versions below 6.8.0
- ControlHost improvements
- Change
every
behavior in pipeline - h5chain multifile fix
totmonitor
command line utility added- bump library versions (scipy >=0.19)
- change blosc compression -> zlib compression
- add corsika evt tag reader (seamuon/seaneutrino)
- fix decoding issues in EvtPump
- fix aanet mc_tracks usr backwards compat
- Show initialisation time for pipeline and modules.
- Doc update / more examples
- aanet: fix
mc_tracks.usr
readout (use.getusr()
)
- Support for KM3PIPE_DEBUG env variable to enable line tracing (set it to 1)
- Fixed Cython/numpy dependency, now they should install automatically.
- remove astro stuff, move to git.km3net.de/moritz/km3astro
- fixed HDF5 version warning
- some cleanup in __init__.pys, so be prepared to change some import statements * split up tools into tools/math/sys/dev/time/mc * stuff under km3modules is now in km3modules.common
- h5concat (multi-h5-to-h5) deprecated because buggy. Going to drop all event_id for 7.0 (for now use ptconcat
- Clean up setup.py
- Fix pyroot segfault when reading aanet header
- Fix aanet header
- style update
- API doc fixes
- add missing requirements to setup.py
- minor py2/py3 compat fix
- K40 calibration module from Jonas!
- Pushover client! Push messages to your mobile phone or computer via
pushover the message you want
. - Minor bugfixes
- Introduces BinaryStruct which makes handling binary data much more easier.
- Cuckoo now allows args and kwargs to be passed to the callback function.
- km3modules.plot module added including a unified DOM plotter
- km3modules.fit module added including k40 coincidence fit
- add
rundetsn
cmd tool
- Use numpy-style imports
- AanetPump: Don't use evt.id for event_id by default, until we all agree on it
- The DB client now automatically uses the production cookie on Lyon. No need to deal with session requests anymore...
- New command line utility to download runs from iRODS: km3pipe retrieve ...
- Integrates the controlhost package
- H5Chain now is just a Multifile pd.HDFStore
- prettyln for nicely formatted headers
- Online DAQ readout is now Python3 proof
- H5Pump now supports multiple files
- h5concat util for concatenating multiple H5 files
- fix: H5Sink in py3 actually creates indextables + closes file now
- HDF5 3.1: Change compression to BLOSC, fallback to zlib
- MergeDF module
- Easier access to seconds in timer
- Fix Dataclass + IO conversion signatures towards consistency
- Ask for requesting new DB session when session expired.
- Make blob ordered by default + actually use it in the pumps.
- FIX freeze numpy version
- change all bool dataclasses to int
- add new fields to event_info: livetime_sec, n_evs_gen, n_files_gen
- update KM3HDF -> v3
- Add fix_event_id option to h5pump
- Updated docs
- Cuckoo now can be called directly
- CHPump uses Cuckoo for log.warn to avoid spamming in case of high network traffic
- DOM class to represent DOMs retrieved by the DBManager
- New
KM3DataFrame + KM3Array
dataclasses, np/pandas subclasses + metadata - replaced
ArrayTaco
withKM3Array
H5Mono
pump to read HDF5 with flat table structure
- Add a bunch of useful km3modules
- Fix time calib application
- add preliminary bootstrap script
- Detector.dom_positions now returns an OrderedDict instead of a list
- Cache DOM positions in Detector
- pld3 function in tools, to calculate point-line-distance in 3d
- Fixes Cython dependency
kp.io.pandas.H5Chain
now returns N _events_, not _rows_
- Introduce
configure
method inModule
, so you no longer need to override__init__
and callsuper
. You can, though ;)
- DB/Dataclass bugfixes
- Unify Reco + Wrapper dataclass. Reco(map, dtype) -> ArrayTaco.from_dict()
- add
to='pandas'
option toDataclass.serialise()
- Tweak internal array/dataframe handling
- ...
- Major dataclass refactor: * hits now always have pos_x, .., dir_y, .., t0 * completely flat hit datastructure
- New plot style handling and new styles: talk, poster, notebook (load them using km3pipe.style.use(...)) Just like in previous versions: import km3pipe.style will load the default style.
- Fixes t0 application in HitSeries
- Fixes geometry application in HitSeries
- Forcing matplotlib 2.0.0b4 as dependency. Don't blame us!
- New unified style for all plots, using import km3pipe.style
- aanet / jgandalf: write zeroed row if no track in event
- fix string handling in H5 attributes
- Group frames in summary slices under /timeslices/slice_id/frame_id
when using
tohdf5 -j -s FILE.root
hdf2root
is now it's own commandtohdf5
andhdf2root
no longerkm3pipe
CLI subcommands- Use zlib instead of blosc for compatibility reasons
- add CLI option to make DB connection non-permanent
tohdf5
/GenericPump
now supports multiple input files for aanet files
- Improved documentation
- Fixed event_id indexing for the /hits table in HDF5
- root sub-package added (via rootpy)
- Added arguments to allow optional parsing of L0 data and summaryslices when using the JPPPump
- New command line utility to convert to HDF5:
tohdf5
- Adds summary slice readout support via jppy
- Introducing astro package
- Use BLOSC compression library for HDF5
- ...
- Bugfixes
- Full L0 readout support via
JPPPump
- Bugfixes
- JEvt/JGandalf support
- Minor HDF5 Improvements
- Introduces HDF5 format versioning
- Bugfixes
- Bugfixes
- ...
- Bugfixes
- Bugfixes
- Ability to use simple functions as modules