summaryrefslogtreecommitdiff
path: root/README.org
blob: bd6dcd326148a4c5d174dcb49e76443184c3c2d4 (plain)
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
#+TITLE: High Resolution Trajectory Compression

* Overview
	High Resolution Trajectory Compression (HRTC) is a method for
	efficient storage of trajectories from particle simulators
	(e.g. molecular dynamics, or agent based systems).

	This code builds a stand-alone program and a library for integration
	into other programs. Both are fully functional research prototypes.

* Installation
** Dependencies
   - integer-encoding-library (included as sub-module)
   - for the stand-alone program: libboost-program-options (part of [[https://boost.org][boost]])
   - for the library: our fork of [[https://github.com/biosystemanalysis/tng][trajectory-ng]], residing in the same
     parent directory as this repository

   The software has only been tested on 64bit GNU/Linux systems using GCC.

** Building
	 First set up the integer-encoding-library:
#+BEGIN_SRC sh
git submodule init
git submodule update
(cd integer_encoding_library && make)
#+END_SRC

	 Then run ~make bin~, ~make lib~, or just ~make~ to build the
	 stand-alone program (~hrtc~), the library (~hrtc_wrapper.o~), or
	 both, respectively.

* Usage
	As uncompressed I/O format ~hrtc~ uses either tab-separated-values
	(one time-step per line) or an awkward yet-to-document binary
	format.

	Use
#+BEGIN_SRC sh
./hrtc --compress --format tsvfloat --numtraj 42 --bound 23 --error 0.1 \
    --src original_file --dst compressed_file
#+END_SRC
  to compress and
#+BEGIN_SRC sh
./hrtc --decompress --format tsvfloat --numtraj 42 --bound 23 --error 0.1 \
    --src compressed_file --dst uncompressed_file
#+END_SRC
	to decompress your data. The number of trajectories (rows per line)
	has to be specified with ~--numtraj~ as well as the maximal absolute
	value occurring in the trajectory (e.g. your bounding box) with
	~--bound~. Most important is the ~--error~ which specifies the
	maximal distance of a particle between compressed and original
	representation.

	Further parameters that can be tuned are ~--blocksize~,
	~--integer-encoding~, and the ~--qp-ratio~. The last is a value
	between 0 and 1 the specifies how the error budget is split between
	quantization error and approximation error.

* License
	The code is released under the GPL version 3 license (see file
	LICENSE).

* Contact
	The authors can be contacted via email and jabber at jh@sotun.de.
contact: Jan Huwald // Impressum