change repository/library/tool name

This commit is contained in:
Mario Fink 2021-02-05 10:01:03 +01:00
parent 7284314fcb
commit 3e4ee699ad
13 changed files with 193 additions and 92 deletions

1
.gitignore vendored
View File

@ -11,3 +11,4 @@ tdmripper
*.log
tdmreaper
cython/*.cpp
tdmtermite

View File

@ -2,14 +2,14 @@
<p align="center">
<a href="https://github.com/RecordEvolution/tdm_ripper.git">
<img
alt="tdmreaper.svg"
src="assets/tdmreaper.svg"
alt="tdmtermite.svg"
src="assets/tdmtermite.svg"
width="400"
/>
</a>
</p>
The _tdm_reaper_ is a C++ based library that decodes (encodes) the proprietary
_TDMtermite_ is a C++ based library that decodes (encodes) the proprietary
file format _TDM/TDX_ for measurement data, which relies upon the
_technical data management_ data model. The TDM format was introduced by
[National Instruments](https://www.ni.com) and is employed by
@ -134,7 +134,7 @@ The library can be used both as a _CLI_ based tool and as a _Python_ module.
### CLI tool
To install the CLI tool _tdmreaper_ do
To install the CLI tool _tdmtermite_ do
```Shell
make install
@ -151,7 +151,7 @@ available, which may be installed via `python3 -m pip install cython` .
Furthermore, the [Numpy](https://numpy.org) package is recommended to be able
to pass arrays of data from the C++ kernel to Python. The _makefile_ provides
the target `make cython-requirements` to install all required Python modules.
Finally, to build the Python extension _tdm_reaper_ either locally or install
Finally, to build the Python extension _tdm_termite_ either locally or install
it the targets `make cython-build` and `make cython-install` are provided.
Hence, to install the Python module on the system simply do
@ -160,19 +160,19 @@ make cython-requirements
make cython-install
```
that makes the module available to be imported as `import tdm_reaper` .
that makes the module available to be imported as `import tdm_termite` .
## Usage
### CLI tool
The usage of the CLI tool is sufficiently clarified by its help message displayed
by `tdmreaper --help`. For instance, to extract the data decoded in the pair of
by `tdmtermite --help`. For instance, to extract the data decoded in the pair of
files `samples/SineData.tdm` and `samples/SineData.tdx` into the directory
`/home/jack/data/`:
```Shell
tdmreaper samples/SineData.tdm samples/SineData.tdx --output /home/jack/data
tdmtermite samples/SineData.tdm samples/SineData.tdx --output /home/jack/data
```
The tool can also be used to list the available objects in the TDM dataset, which
@ -180,7 +180,7 @@ are i.a. _channels_, _channelgroups_ and TDX _blocks_. For instance, to list
all channels and channelgroups (without writing any file output):
```Shell
tdmreaper samples/SineData.tdm samples/SineData.tdx --listgroups --listchannels
tdmtermite samples/SineData.tdm samples/SineData.tdx --listgroups --listchannels
```
The user may also submit a _filenaming rule_ to control the names of the files the
@ -189,7 +189,7 @@ and `%c` representing the group id, group name, channel index and channel name
are defined. The default filenaming option is
```Shell
tdmreaper samples/SineData.tdm samples/SineData.tdx --output /home/jack/data --filenames channelgroup_%G.csv
tdmtermite samples/SineData.tdm samples/SineData.tdx --output /home/jack/data --filenames channelgroup_%G.csv
```
which makes the tool write _all channels_ grouped into files according to their
@ -199,7 +199,7 @@ to extract only a single channel(group) by providing a particular channel(-group
id in the filenaming flag. For example,
```Shell
tdmreaper samples/SineData.tdm samples/SineData.tdx --output /home/jack/data -f channel_usi16_%c.csv --includemeta
tdmtermite samples/SineData.tdm samples/SineData.tdx --output /home/jack/data -f channel_usi16_%c.csv --includemeta
```
will write the single channel with id `usi16` to the file
@ -207,25 +207,25 @@ will write the single channel with id `usi16` to the file
### Python
To be able to use the Python module _tdm_reaper_ it first has to be build locally
To be able to use the Python module _tdm_termite_ it first has to be build locally
or installed on the system. In the Python interpreter simply do:
```Python
import tdm_reaper
import tdm_termite
```
to import the module. The TDM files are provided by creating an instance of
the _tdm_reaper_ class:
the _tdm_termite_ class:
```Python
# create 'tdm_reaper' instance object
# create 'tdm_termite' instance object
try :
jack = tdm_reaper.tdmreaper(b'samples/SineData.tdm',b'samples/SineData.tdx')
jack = tdm_termite.tdmtermite(b'samples/SineData.tdm',b'samples/SineData.tdx')
except RuntimeError as e:
print("failed to load/decode TDM files: " + str(e))
```
After initializing the _tdm_reaper_ object it can be used to extract any of the
After initializing the _tdm_termite_ object it can be used to extract any of the
available data. For instance, to list the included channelgroups and channels:
```Python
@ -241,12 +241,12 @@ As a use case, we have look at listing the ids of all channelgroups and printing
their data to separate files:
```Python
import tdm_reaper
import tdm_termite
import re
# create 'tdm_reaper' instance object
# create 'tdm_termite' instance object
try :
jack = tdm_reaper.tdmreaper(b'samples/SineData.tdm',b'samples/SineData.tdx')
jack = tdm_termite.tdmtermite(b'samples/SineData.tdm',b'samples/SineData.tdx')
except RuntimeError as e :
print("failed to load/decode TDM files: " + str(e))
@ -280,8 +280,8 @@ to simply extract all data of the TDM datatset and dump it to files in a given
(existing!) directory, do
```Python
import tdm_reaper
jack = tdm_reaper.tdmreaper(b'samples/SineData.tdm',b'samples/SineData.tdx')
import tdm_termite
jack = tdm_termite.tdmtermite(b'samples/SineData.tdm',b'samples/SineData.tdx')
jack.write_all(b"./my_tdm_data_directory/")
```

100
assets/tdmtermite.svg Normal file
View File

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 366.72 77.08"
version="1.1"
id="svg3945"
width="366.72"
height="77.080002"
sodipodi:docname="tdmtermite.svg"
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1168"
id="namedview19"
showgrid="false"
inkscape:zoom="3.8766824"
inkscape:cx="199.46638"
inkscape:cy="38.540001"
inkscape:window-x="2048"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg3945" />
<metadata
id="metadata3951">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>flasher</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3949" />
<title
id="title3916">flasher</title>
<g
id="logog">
<path
id="path138"
d="m 32.86,2 -13,7.5 v 0 h -0.05 v 0 l -0.48,0.28 c -4.27,2.46 -5.68,11.38 -6.06,14.75 L 36.2,11.33 c 0.39,-0.19 7.6,-3.69 13.57,-3.69 h 0.14 L 40.13,2 a 8.15,8.15 0 0 0 -7.27,0"
transform="translate(-2.04,-1.15)"
style="fill:#364d5c" />
<path
id="path142"
d="M 5.68,17.69 A 8.2,8.2 0 0 0 2,24 v 15.78 c 0,4.9 7,10.48 9.75,12.46 V 25.77 c 0,-0.44 0.6,-8.55 3.65,-13.72 z"
transform="translate(-2.04,-1.15)"
style="fill:#364d5c" />
<path
id="path146"
d="m 12.1,54.12 v 0 C 11.74,53.88 5,49.41 2,44.24 v 11.14 a 8.2,8.2 0 0 0 3.64,6.3 l 13.5,7.79 c 4.28,2.46 12.7,-0.77 15.81,-2.12 z"
transform="translate(-2.04,-1.15)"
style="fill:#364d5c" />
<path
id="path150"
d="m 36.79,68 c -0.4,0.19 -7.71,3.75 -13.71,3.69 l 9.78,5.64 a 8.15,8.15 0 0 0 7.27,0 l 13.51,-7.8 c 4.27,-2.46 5.68,-11.39 6.06,-14.75 z"
transform="translate(-2.04,-1.15)"
style="fill:#364d5c" />
<path
id="path154"
d="M 61.2,27.13 V 53.6 c 0,0.44 -0.6,8.55 -3.65,13.72 l 9.77,-5.64 A 8.2,8.2 0 0 0 71,55.38 V 39.59 c 0,-4.94 -7,-10.5 -9.75,-12.46"
transform="translate(-2.04,-1.15)"
style="fill:#364d5c" />
<path
id="path158"
d="M 67.31,17.69 53.81,9.9 C 49.53,7.44 41.11,10.67 38,12 l 22.85,13.23 v 0 a 43.43,43.43 0 0 1 5.7,4.51 24,24 0 0 1 4.45,5.35 V 24 a 8.2,8.2 0 0 0 -3.64,-6.3"
transform="translate(-2.04,-1.15)"
style="fill:#364d5c" />
</g>
<g
id="re" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#364d5c;fill-opacity:1;stroke:none"
x="74.101189"
y="54.47554"
id="text3955"><tspan
id="tspan3953"
x="74.101189"
y="54.47554"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:44px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#364d5c;fill-opacity:1"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'"
id="tspan86">TDMtermite</tspan> </tspan></text>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -1,17 +1,17 @@
# distutils: language = c++
from tdm_reaper cimport tdm_reaper
from tdm_termite cimport tdm_termite
import json as jn
# import numpy as np
cdef class tdmreaper:
cdef class tdmtermite:
# C++ instance of class => stack allocated (requires nullary constructor!)
cdef tdm_reaper cpp_tdm
cdef tdm_termite cpp_tdm
# constructor
def __cinit__(self, string tdmfile, string tdxfile):
self.cpp_tdm = tdm_reaper(tdmfile,tdxfile)
self.cpp_tdm = tdm_termite(tdmfile,tdxfile)
# provide TDM files
def submit_files(self,string tdmfile, string tdxfile):

View File

@ -3,8 +3,8 @@ from distutils.extension import Extension
from Cython.Build import cythonize
extensions = Extension(
name="tdm_reaper",
sources=["cython/py_tdm_reaper.pyx"],
name="tdm_termite",
sources=["cython/py_tdm_termite.pyx"],
# libraries=[""],
# library_dirs=["lib"],
include_dirs=["lib","pugixml"],
@ -15,10 +15,10 @@ extensions = Extension(
setup(
version='0.1',
description='TDMReaper cython extension',
description='TDMtermite cython extension',
author='Record Evolution GmbH',
author_email='mario.fink@record-evolution.de',
url='https://github.com/RecordEvolution/tdm_ripper.git',
name="tdm_reaper",
name="tdm_termite",
ext_modules=cythonize(extensions)
)

View File

@ -5,14 +5,14 @@ from libcpp.string cimport string
from libcpp.vector cimport vector
from libcpp cimport bool
cdef extern from "tdm_reaper.cpp":
cdef extern from "tdm_termite.cpp":
pass
cdef extern from "tdm_reaper.hpp":
cdef cppclass tdm_reaper:
cdef extern from "tdm_termite.hpp":
cdef cppclass tdm_termite:
# constructor(s)
tdm_reaper() except +
tdm_reaper(string tdmfile, string tdxfile) except +
tdm_termite() except +
tdm_termite(string tdmfile, string tdxfile) except +
# provide TDM files
void submit_files(string tdmfile, string tdxfile) except+
# get list of channel(-group) ids

View File

@ -1,22 +1,22 @@
// -------------------------------------------------------------------------- //
#include "tdm_reaper.hpp"
#include "tdm_termite.hpp"
// -------------------------------------------------------------------------- //
tdm_reaper::tdm_reaper()
tdm_termite::tdm_termite()
{
}
tdm_reaper::tdm_reaper(std::string tdmfile, std::string tdxfile, bool showlog):
tdm_termite::tdm_termite(std::string tdmfile, std::string tdxfile, bool showlog):
tdmfile_(tdmfile), tdxfile_(tdxfile)
{
// start processing tdm data model
this->process_tdm(showlog);
}
void tdm_reaper::submit_files(std::string tdmfile, std::string tdxfile, bool showlog)
void tdm_termite::submit_files(std::string tdmfile, std::string tdxfile, bool showlog)
{
// save files
tdmfile_ = tdmfile;
@ -34,7 +34,7 @@ void tdm_reaper::submit_files(std::string tdmfile, std::string tdxfile, bool sho
this->process_tdm(showlog);
}
void tdm_reaper::process_tdm(bool showlog)
void tdm_termite::process_tdm(bool showlog)
{
// check both tdm, tdx files
std::filesystem::path ptdm(tdmfile_), ptdx(tdxfile_);
@ -124,7 +124,7 @@ void tdm_reaper::process_tdm(bool showlog)
}
}
void tdm_reaper::process_include(bool showlog, pugi::xml_document& xml_doc)
void tdm_termite::process_include(bool showlog, pugi::xml_document& xml_doc)
{
// get XML node
pugi::xml_node tdmincl = xml_doc.child("usi:tdm").child("usi:include");
@ -178,7 +178,7 @@ void tdm_reaper::process_include(bool showlog, pugi::xml_document& xml_doc)
if ( showlog ) std::cout<<"number of blocks: "<<tdx_blocks_.size()<<"\n\n";
}
void tdm_reaper::process_root(bool showlog, pugi::xml_document& xml_doc)
void tdm_termite::process_root(bool showlog, pugi::xml_document& xml_doc)
{
// get XML node
pugi::xml_node tdmdataroot = xml_doc.child("usi:tdm").child("usi:data")
@ -198,7 +198,7 @@ void tdm_reaper::process_root(bool showlog, pugi::xml_document& xml_doc)
if ( showlog ) std::cout<<tdmroot_.get_info()<<"\n";
}
void tdm_reaper::process_channelgroups(bool showlog, pugi::xml_document& xml_doc)
void tdm_termite::process_channelgroups(bool showlog, pugi::xml_document& xml_doc)
{
// get XML node <usi:data>
pugi::xml_node tdmdata = xml_doc.child("usi:tdm").child("usi:data");
@ -236,7 +236,7 @@ void tdm_reaper::process_channelgroups(bool showlog, pugi::xml_document& xml_doc
if ( showlog ) std::cout<<"number of channelgroups: "<<tdmchannelgroups_.size()<<"\n\n";
}
void tdm_reaper::process_channels(bool showlog, pugi::xml_document& xml_doc)
void tdm_termite::process_channels(bool showlog, pugi::xml_document& xml_doc)
{
// get XML node <usi:data>
pugi::xml_node tdmdata = xml_doc.child("usi:tdm").child("usi:data");
@ -280,7 +280,7 @@ void tdm_reaper::process_channels(bool showlog, pugi::xml_document& xml_doc)
if ( showlog ) std::cout<<"number of channels: "<<tdmchannels_.size()<<"\n\n";
}
void tdm_reaper::process_submatrices(bool showlog, pugi::xml_document& xml_doc)
void tdm_termite::process_submatrices(bool showlog, pugi::xml_document& xml_doc)
{
// get XML node <usi:data>
pugi::xml_node tdmdata = xml_doc.child("usi:tdm").child("usi:data");
@ -319,7 +319,7 @@ void tdm_reaper::process_submatrices(bool showlog, pugi::xml_document& xml_doc)
if ( showlog ) std::cout<<"number of submatrices: "<<submatrices_.size()<<"\n\n";
}
void tdm_reaper::process_localcolumns(bool showlog, pugi::xml_document& xml_doc)
void tdm_termite::process_localcolumns(bool showlog, pugi::xml_document& xml_doc)
{
// get XML node <usi:data>
pugi::xml_node tdmdata = xml_doc.child("usi:tdm").child("usi:data");
@ -435,7 +435,7 @@ void tdm_reaper::process_localcolumns(bool showlog, pugi::xml_document& xml_doc)
// -------------------------------------------------------------------------- //
std::string tdm_reaper::get_channel_overview(format chformatter)
std::string tdm_termite::get_channel_overview(format chformatter)
{
// summarize all output in single string
std::string channels_summary;
@ -474,7 +474,7 @@ std::string tdm_reaper::get_channel_overview(format chformatter)
}
template<typename tdmelement>
std::string tdm_reaper::get_overview(format formatter)
std::string tdm_termite::get_overview(format formatter)
{
// summarize all output in single string
std::string summary;
@ -500,12 +500,12 @@ std::string tdm_reaper::get_overview(format formatter)
return summary;
}
template std::string tdm_reaper::get_overview<tdm_channelgroup>(format formatter);
template std::string tdm_reaper::get_overview<submatrix>(format formatter);
template std::string tdm_reaper::get_overview<localcolumn>(format formatter);
template std::string tdm_reaper::get_overview<block>(format formatter);
template std::string tdm_termite::get_overview<tdm_channelgroup>(format formatter);
template std::string tdm_termite::get_overview<submatrix>(format formatter);
template std::string tdm_termite::get_overview<localcolumn>(format formatter);
template std::string tdm_termite::get_overview<block>(format formatter);
void tdm_reaper::summarize_member(tdm_channelgroup chp, std::string& summary, format& formatter)
void tdm_termite::summarize_member(tdm_channelgroup chp, std::string& summary, format& formatter)
{
for ( std::map<std::string,tdm_channelgroup>::iterator it=this->tdmchannelgroups_.begin();
it!=this->tdmchannelgroups_.end(); ++it)
@ -515,7 +515,7 @@ void tdm_reaper::summarize_member(tdm_channelgroup chp, std::string& summary, fo
}
}
void tdm_reaper::summarize_member(submatrix sbm, std::string& summary, format& formatter)
void tdm_termite::summarize_member(submatrix sbm, std::string& summary, format& formatter)
{
for ( std::map<std::string,submatrix>::iterator it=this->submatrices_.begin();
it!=this->submatrices_.end(); ++it)
@ -525,7 +525,7 @@ void tdm_reaper::summarize_member(submatrix sbm, std::string& summary, format& f
}
}
void tdm_reaper::summarize_member(localcolumn lcc, std::string& summary, format& formatter)
void tdm_termite::summarize_member(localcolumn lcc, std::string& summary, format& formatter)
{
for ( std::map<std::string,localcolumn>::iterator it=this->localcolumns_.begin();
it!=this->localcolumns_.end(); ++it)
@ -535,7 +535,7 @@ void tdm_reaper::summarize_member(localcolumn lcc, std::string& summary, format&
}
}
void tdm_reaper::summarize_member(block blk, std::string& summary, format& formatter)
void tdm_termite::summarize_member(block blk, std::string& summary, format& formatter)
{
for ( std::map<std::string,block>::iterator it=this->tdx_blocks_.begin();
it!=this->tdx_blocks_.end(); ++it)
@ -548,7 +548,7 @@ void tdm_reaper::summarize_member(block blk, std::string& summary, format& forma
// -------------------------------------------------------------------------- //
// extract channel by id
std::vector<tdmdatatype> tdm_reaper::get_channel(std::string& id)
std::vector<tdmdatatype> tdm_termite::get_channel(std::string& id)
{
// check for existence of required channel id (=key)
if ( tdmchannels_.count(id) == 1 )
@ -653,7 +653,7 @@ std::vector<tdmdatatype> tdm_reaper::get_channel(std::string& id)
// -------------------------------------------------------------------------- //
void tdm_reaper::print_channel(std::string &id, const char* filename, bool include_meta)
void tdm_termite::print_channel(std::string &id, const char* filename, bool include_meta)
{
// check required path
this->check_filename_path(filename);
@ -698,7 +698,7 @@ void tdm_reaper::print_channel(std::string &id, const char* filename, bool inclu
}
}
void tdm_reaper::print_group(std::string &id, const char* filename, bool include_meta,
void tdm_termite::print_group(std::string &id, const char* filename, bool include_meta,
char sep, std::string column_header)
{
// check required path
@ -834,7 +834,7 @@ void tdm_reaper::print_group(std::string &id, const char* filename, bool include
}
}
void tdm_reaper::check_filename_path(const char* filename)
void tdm_termite::check_filename_path(const char* filename)
{
// declare filesystem path instance from filename
std::filesystem::path pt(filename);
@ -850,7 +850,7 @@ void tdm_reaper::check_filename_path(const char* filename)
// -------------------------------------------------------------------------- //
void tdm_reaper::check_local_datatypes()
void tdm_termite::check_local_datatypes()
{
std::cout<<"\nmachine's C++ datatypes:\n";
std::cout<<std::setw(25)<<std::left<<"char:"
@ -881,7 +881,7 @@ void tdm_reaper::check_local_datatypes()
<<std::setw(5)<<std::left<<sizeof(long double)<<"byte(s)\n\n";
}
void tdm_reaper::check_datatype_consistency()
void tdm_termite::check_datatype_consistency()
{
// check datatype consistency, i.e. "local" representation of datatypes
for ( tdm_datatype el: tdm_datatypes )
@ -924,7 +924,7 @@ void tdm_reaper::check_datatype_consistency()
// -------------------------------------------------------------------------- //
template<typename datatype>
void tdm_reaper::convert_data_to_type(std::vector<unsigned char> &buffer,
void tdm_termite::convert_data_to_type(std::vector<unsigned char> &buffer,
std::vector<tdmdatatype> &channel)
{
// check number of elements of type "datatype" in buffer

View File

@ -1,7 +1,7 @@
// ------------------------------------------------------------------------- //
#ifndef TDM_REAPER
#define TDM_REAPER
#ifndef TDM_TERMITE
#define TDM_TERMITE
#include <iostream>
#include <fstream>
@ -24,7 +24,7 @@
// -------------------------------------------------------------------------- //
class tdm_reaper
class tdm_termite
{
// .tdm and .tdx paths/filenames
std::string tdmfile_;
@ -115,11 +115,11 @@ class tdm_reaper
public:
// encoding
// tdm_reaper(std::vector<std::string> csvfile);
// tdm_termite(std::vector<std::string> csvfile);
// decoding
tdm_reaper();
tdm_reaper(std::string tdmfile, std::string tdxfile = std::string(""),
tdm_termite();
tdm_termite(std::string tdmfile, std::string tdxfile = std::string(""),
bool showlog = false);
// provide (tdm,tdx) files

View File

@ -1,10 +1,10 @@
# --------------------------------------------------------------------------- #
# declare name of executable
EXE = tdmreaper
EXE = tdmtermite
# sources and headers
SRC := tdm_reaper
SRC := tdm_termite
HPP = $(wildcard lib/*.hpp)
# compiler and C++ standard
@ -77,16 +77,16 @@ cython-help : cython/setup.py
cython-list : cython/setup.py
python3 $< --name --description --author --author-email --url
cython-build : cython/setup.py cython/tdm_reaper.pxd cython/py_tdm_reaper.pyx $(HPP) lib/tdm_reaper.cpp
cython-build : cython/setup.py cython/tdm_termite.pxd cython/py_tdm_termite.pyx $(HPP) lib/tdm_termite.cpp
python3 $< build_ext --inplace
cp -v tdm_reaper.cpython-*.so python/
cp -v tdm_termite.cpython-*.so python/
cython-install : cython/setup.py cython/tdm_reaper.pxd cython/py_tdm_reaper.pyx $(HPP) lib/tdm_reaper.cpp
cython-install : cython/setup.py cython/tdm_termite.pxd cython/py_tdm_termite.pyx $(HPP) lib/tdm_termite.cpp
python3 $< install
clean-cython :
rm -vf cython/py_tdm_reaper.cpp
rm -vf tdm_reaper.cpython-*.so python/tdm_reaper.cpython-*.so
rm -vf cython/py_tdm_termite.cpp
rm -vf tdm_termite.cpython-*.so python/tdm_termite.cpython-*.so
rm -rf build
# --------------------------------------------------------------------------- #

View File

@ -1,11 +1,11 @@
import tdm_reaper
import tdm_termite
import json
import re
# create 'tdm_reaper' instance object
# create 'tdm_termite' instance object
try :
jack = tdm_reaper.tdmreaper(b'samples/SineData.tdm',b'samples/SineData.tdx')
jack = tdm_termite.tdmtermite(b'samples/SineData.tdm',b'samples/SineData.tdx')
except RuntimeError as e :
print("failed to load/decode TDM files: " + str(e))

View File

@ -1,9 +1,9 @@
import tdm_reaper
import tdm_termite
# create 'tdm_reaper' instance object
# create 'tdm_termite' instance object
try :
jack = tdm_reaper.tdmreaper(b'samples/SineData.tdm',b'samples/SineData.tdx')
jack = tdm_termite.tdmtermite(b'samples/SineData.tdm',b'samples/SineData.tdx')
# list ids of channelgroups
grpids = jack.get_channelgroup_ids()
# iterate through groups

View File

@ -1,12 +1,12 @@
import tdm_reaper
import tdm_termite
# import numpy as np
import json
import re
# create 'tdm_reaper' instance object
# create 'tdm_termite' instance object
try :
jack = tdm_reaper.tdmreaper(b'samples/SineData.tdm',b'samples/SineData.tdx')
jack = tdm_termite.tdmtermite(b'samples/SineData.tdm',b'samples/SineData.tdx')
except RuntimeError as e :
print("failed to load/decode TDM files: " + str(e))

View File

@ -1,6 +1,6 @@
// ------------------------------------------------------------------------- //
#include "tdm_reaper.hpp"
#include "tdm_termite.hpp"
#include <filesystem>
#include <regex>
@ -15,12 +15,12 @@ const std::string githash("HASHSTRING");
void show_usage()
{
std::cout<<"\n"
<<"tdmreaper ["<<gittag<<"-g"<<githash<<"] (github.com/RecordEvolution/tdm_ripper.git)"
<<"tdmtermite ["<<gittag<<"-g"<<githash<<"] (github.com/RecordEvolution/TDMtermite.git)"
<<"\n\n"
<<"Decode TDM/TDX files and dump data as *.csv"
<<"\n\n"
<<"Usage:\n\n"
<<" tdmreaper <tdm-file> <tdx-file> [options]"
<<" tdmtermite <tdm-file> <tdx-file> [options]"
<<"\n\n"
<<"Options:"
<<"\n\n"
@ -55,7 +55,7 @@ void show_usage()
typedef std::map<std::string,std::string> optkeys;
const std::string argmsg = std::string("both .tdm and .tdx file must be provided!");
const std::string arguse = std::string("see $ tdmreaper --help for usage");
const std::string arguse = std::string("see $ tdmtermite --help for usage");
optkeys parse_args(int argc, char* argv[], bool showargs = false)
{
@ -78,7 +78,7 @@ optkeys parse_args(int argc, char* argv[], bool showargs = false)
else if ( std::string(argv[1]) == std::string("--version")
|| std::string(argv[1]) == std::string("-v") )
{
std::cout<<"tdmreaper "<<gittag<<"-g"<<githash<<"\n";
std::cout<<"tdmtermite "<<gittag<<"-g"<<githash<<"\n";
}
else
{
@ -270,8 +270,8 @@ int main(int argc, char* argv[])
std::string csvsep = cfgopts.count("csvsep") == 1 ? cfgopts.at("csvsep")
: std::string(",");
// declare and initialize tdm_reaper instance
tdm_reaper jack;
// declare and initialize tdm_termite instance
tdm_termite jack;
try {
jack.submit_files(cfgopts.at("tdm"),cfgopts.at("tdx"),false);
} catch (const std::exception& e) {