%global _empty_manifest_terminate_build 0 Name: python-apstrim Version: 2.0.6 Release: 1 Summary: Parameter and Object Serializer for EPICS, ADO or LITE License: MIT URL: https://github.com/ASukhanov/apstrim Source0: https://mirrors.nju.edu.cn/pypi/web/packages/64/d2/ea828c9ed1b57b081eab81c76bb85da1af5e26bfd64da951d6a1762f88cd/apstrim-2.0.6.tar.gz BuildArch: noarch Requires: python3-caproto Requires: python3-msgpack %description # apstrim Logger and extractor of time-series data (e.g. EPICS PVs). - Data are objects, indexed in time order. - Supported Control Infrastructures: EPICS, ADO, LITE. Easy extendable. - Wide range of data objects: strings, lists, maps, numpy arrays, custom. - Data objects could be inhomogeneous and have arbitrary frequency. - Self-describing data format, no schema required. - Data objects are binary-serialized using MessagePack. - Fast online compression. - Fast random-access retrieval of data objects for selected time interval. - Simultaneous writing and reading. - Typical speed of compressed serialization to a logbook file is 80 MB/s. - De-serialization speed is up to 1200 MB/s when the logbook is cached in memory. - Basic plotting of the logged data. ## Installation Dependencies: **msgpack, caproto, lz4framed**. These packages will be installed using pip: pip3 install apstrim The example program for deserialization and plotting **apstrim.view**, requires additional package: **pyqtgraph**. ## API refrerence [apstrim](https://htmlpreview.github.io/?https://github.com/ASukhanov/apstrim/blob/main/docs/apstrim.html) [scan](https://htmlpreview.github.io/?https://github.com/ASukhanov/apstrim/blob/main/docs/scan.html) ## Examples ## Serialization # Serialization of one float64 parameter from an EPICS simulated scope IOC: :python -m apstrim -nEPICS -T59 testAPD:scope1:MeanValue_RBV Logging finished for 1 sections, 1 parLists, 7.263 KB. ... # The same with compression: :python -m apstrim -nEPICS -T59 testAPD:scope1:MeanValue_RBV --compress Logging finished for 1 sections, 1 parLists, 6.101 KB. Compression ratio:1.19 ... # Serialization 1000-element array and one scalar of floats: :python -m apstrim -nEPICS -T59 testAPD:scope1:MeanValue_RBV,Waveform_RBV --compress Logging finished for 1 sections, 2 parLists, 2405.354 KB. Compression ratio:1.0 ... # Note, Compression is poor for floating point arrays with high entropy. # Serialization of an incrementing integer parameter: :python -m apstrim -nLITE --compress liteHost:dev1:cycle Logging finished for 1 sections, 1 parLists, 56.526 KB. Compression ratio:1.25 ... # In this case the normalized compressed volume is 9.3 bytes per entry. # Each entry consist of an int64 timestamp and an int64 value, which would # occupy 16 bytes per entry using standard writing. ### De-serialization Example of deserialization and plotting of all parameters from several logbooks. python -m apstrim.view -i all -p *.aps Python code snippet to extract items 1,2 and 3 from a logbook for 20 seconds interval starting on 2021-08-12 at 23:31:31. ```python from apstrim.scan import APScan apscan = APScan('aLogbook.aps') headers = apscan.get_headers() print(f'{headers["Index"]}') extracted = apscan.extract_objects(span=20, items=[1,2,3], startTime='210812_233131') print(f'{extracted[3]}')# print the extracted data for item[3] # returned: {'par': 'liteBridge.peakSimulator:rps', # object (PV) name of the item[3] 'times': [1628825500.8938403, 1628825510.898658], # list of the item[3] timestamps 'values': [95.675125, 95.55396]} # list of the item[3] values ``` %package -n python3-apstrim Summary: Parameter and Object Serializer for EPICS, ADO or LITE Provides: python-apstrim BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-apstrim # apstrim Logger and extractor of time-series data (e.g. EPICS PVs). - Data are objects, indexed in time order. - Supported Control Infrastructures: EPICS, ADO, LITE. Easy extendable. - Wide range of data objects: strings, lists, maps, numpy arrays, custom. - Data objects could be inhomogeneous and have arbitrary frequency. - Self-describing data format, no schema required. - Data objects are binary-serialized using MessagePack. - Fast online compression. - Fast random-access retrieval of data objects for selected time interval. - Simultaneous writing and reading. - Typical speed of compressed serialization to a logbook file is 80 MB/s. - De-serialization speed is up to 1200 MB/s when the logbook is cached in memory. - Basic plotting of the logged data. ## Installation Dependencies: **msgpack, caproto, lz4framed**. These packages will be installed using pip: pip3 install apstrim The example program for deserialization and plotting **apstrim.view**, requires additional package: **pyqtgraph**. ## API refrerence [apstrim](https://htmlpreview.github.io/?https://github.com/ASukhanov/apstrim/blob/main/docs/apstrim.html) [scan](https://htmlpreview.github.io/?https://github.com/ASukhanov/apstrim/blob/main/docs/scan.html) ## Examples ## Serialization # Serialization of one float64 parameter from an EPICS simulated scope IOC: :python -m apstrim -nEPICS -T59 testAPD:scope1:MeanValue_RBV Logging finished for 1 sections, 1 parLists, 7.263 KB. ... # The same with compression: :python -m apstrim -nEPICS -T59 testAPD:scope1:MeanValue_RBV --compress Logging finished for 1 sections, 1 parLists, 6.101 KB. Compression ratio:1.19 ... # Serialization 1000-element array and one scalar of floats: :python -m apstrim -nEPICS -T59 testAPD:scope1:MeanValue_RBV,Waveform_RBV --compress Logging finished for 1 sections, 2 parLists, 2405.354 KB. Compression ratio:1.0 ... # Note, Compression is poor for floating point arrays with high entropy. # Serialization of an incrementing integer parameter: :python -m apstrim -nLITE --compress liteHost:dev1:cycle Logging finished for 1 sections, 1 parLists, 56.526 KB. Compression ratio:1.25 ... # In this case the normalized compressed volume is 9.3 bytes per entry. # Each entry consist of an int64 timestamp and an int64 value, which would # occupy 16 bytes per entry using standard writing. ### De-serialization Example of deserialization and plotting of all parameters from several logbooks. python -m apstrim.view -i all -p *.aps Python code snippet to extract items 1,2 and 3 from a logbook for 20 seconds interval starting on 2021-08-12 at 23:31:31. ```python from apstrim.scan import APScan apscan = APScan('aLogbook.aps') headers = apscan.get_headers() print(f'{headers["Index"]}') extracted = apscan.extract_objects(span=20, items=[1,2,3], startTime='210812_233131') print(f'{extracted[3]}')# print the extracted data for item[3] # returned: {'par': 'liteBridge.peakSimulator:rps', # object (PV) name of the item[3] 'times': [1628825500.8938403, 1628825510.898658], # list of the item[3] timestamps 'values': [95.675125, 95.55396]} # list of the item[3] values ``` %package help Summary: Development documents and examples for apstrim Provides: python3-apstrim-doc %description help # apstrim Logger and extractor of time-series data (e.g. EPICS PVs). - Data are objects, indexed in time order. - Supported Control Infrastructures: EPICS, ADO, LITE. Easy extendable. - Wide range of data objects: strings, lists, maps, numpy arrays, custom. - Data objects could be inhomogeneous and have arbitrary frequency. - Self-describing data format, no schema required. - Data objects are binary-serialized using MessagePack. - Fast online compression. - Fast random-access retrieval of data objects for selected time interval. - Simultaneous writing and reading. - Typical speed of compressed serialization to a logbook file is 80 MB/s. - De-serialization speed is up to 1200 MB/s when the logbook is cached in memory. - Basic plotting of the logged data. ## Installation Dependencies: **msgpack, caproto, lz4framed**. These packages will be installed using pip: pip3 install apstrim The example program for deserialization and plotting **apstrim.view**, requires additional package: **pyqtgraph**. ## API refrerence [apstrim](https://htmlpreview.github.io/?https://github.com/ASukhanov/apstrim/blob/main/docs/apstrim.html) [scan](https://htmlpreview.github.io/?https://github.com/ASukhanov/apstrim/blob/main/docs/scan.html) ## Examples ## Serialization # Serialization of one float64 parameter from an EPICS simulated scope IOC: :python -m apstrim -nEPICS -T59 testAPD:scope1:MeanValue_RBV Logging finished for 1 sections, 1 parLists, 7.263 KB. ... # The same with compression: :python -m apstrim -nEPICS -T59 testAPD:scope1:MeanValue_RBV --compress Logging finished for 1 sections, 1 parLists, 6.101 KB. Compression ratio:1.19 ... # Serialization 1000-element array and one scalar of floats: :python -m apstrim -nEPICS -T59 testAPD:scope1:MeanValue_RBV,Waveform_RBV --compress Logging finished for 1 sections, 2 parLists, 2405.354 KB. Compression ratio:1.0 ... # Note, Compression is poor for floating point arrays with high entropy. # Serialization of an incrementing integer parameter: :python -m apstrim -nLITE --compress liteHost:dev1:cycle Logging finished for 1 sections, 1 parLists, 56.526 KB. Compression ratio:1.25 ... # In this case the normalized compressed volume is 9.3 bytes per entry. # Each entry consist of an int64 timestamp and an int64 value, which would # occupy 16 bytes per entry using standard writing. ### De-serialization Example of deserialization and plotting of all parameters from several logbooks. python -m apstrim.view -i all -p *.aps Python code snippet to extract items 1,2 and 3 from a logbook for 20 seconds interval starting on 2021-08-12 at 23:31:31. ```python from apstrim.scan import APScan apscan = APScan('aLogbook.aps') headers = apscan.get_headers() print(f'{headers["Index"]}') extracted = apscan.extract_objects(span=20, items=[1,2,3], startTime='210812_233131') print(f'{extracted[3]}')# print the extracted data for item[3] # returned: {'par': 'liteBridge.peakSimulator:rps', # object (PV) name of the item[3] 'times': [1628825500.8938403, 1628825510.898658], # list of the item[3] timestamps 'values': [95.675125, 95.55396]} # list of the item[3] values ``` %prep %autosetup -n apstrim-2.0.6 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-apstrim -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Wed May 31 2023 Python_Bot - 2.0.6-1 - Package Spec generated