diff --git a/joss.05662/10.21105.joss.05662.crossref.xml b/joss.05662/10.21105.joss.05662.crossref.xml new file mode 100644 index 0000000000..36372c006a --- /dev/null +++ b/joss.05662/10.21105.joss.05662.crossref.xml @@ -0,0 +1,248 @@ + + + + 20231214T170859-89b549088f864f514f5c9a60409b5445e3f1d4a3 + 20231214170859 + + JOSS Admin + admin@theoj.org + + The Open Journal + + + + + Journal of Open Source Software + JOSS + 2475-9066 + + 10.21105/joss + https://joss.theoj.org + + + + + 12 + 2023 + + + 8 + + 92 + + + + PYDAQ: Data Acquisition and Experimental Analysis with +Python + + + + Samir Angelo Milani + Martins + https://orcid.org/0000-0003-1702-8504 + + + + 12 + 14 + 2023 + + + 5662 + + + 10.21105/joss.05662 + + + http://creativecommons.org/licenses/by/4.0/ + http://creativecommons.org/licenses/by/4.0/ + http://creativecommons.org/licenses/by/4.0/ + + + + Software archive + 10.5281/zenodo.10377251 + + + GitHub review issue + https://github.com/openjournals/joss-reviews/issues/5662 + + + + 10.21105/joss.05662 + https://joss.theoj.org/papers/10.21105/joss.05662 + + + https://joss.theoj.org/papers/10.21105/joss.05662.pdf + + + + + + SysIdentPy: A Python package for system +identification using NARMAX models + Junior + Journal of Open Source +Software + 54 + 5 + 10.21105/joss.02384 + 2020 + Junior, W. R. L., Andrade, L. P. C. +da, Oliveira, S. C. P., & Martins, S. A. M. (2020). SysIdentPy: A +Python package for system identification using NARMAX models. Journal of +Open Source Software, 5(54), 2384. +https://doi.org/10.21105/joss.02384 + + + System identification: Theory for the +user + Ljung + 0-13-656695-2 + 1999 + Ljung, L. (1999). System +identification: Theory for the user (2nd ed.). Prentice-Hall. +ISBN: 0-13-656695-2 + + + Nonlinear system identification: NARMAX +methods in the time, frequency, and spatio-temporal +domains + Billings + 10.1002/9781118535561 + 2013 + Billings, S. A. (2013). Nonlinear +system identification: NARMAX methods in the time, frequency, and +spatio-temporal domains (p. 574). John Wiley & Sons. +https://doi.org/10.1002/9781118535561 + + + Graphical interface as a teaching aid for +nonlinear dynamical systems + Silva + European Journal of Physics + 6 + 39 + 10.1088/1361-6404/aae35c + 2018 + Silva, P. H. O., Nardo, L. G., +Martins, S. A. M., Nepomuceno, E. G., & Perc, M. (2018). Graphical +interface as a teaching aid for nonlinear dynamical systems. European +Journal of Physics, 39(6), 065105. +https://doi.org/10.1088/1361-6404/aae35c + + + Temperature as a chaotic circuit bifurcation +parameter + Ostrovskii + 2020 IEEE conference of russian young +researchers in electrical and electronic engineering +(EIConRus) + 10.1109/EIConRus49466.2020.9038964 + 2020 + Ostrovskii, V. Y., Nazare, T. E., +Martins, S. A. M., & Nepomuceno, E. G. (2020). Temperature as a +chaotic circuit bifurcation parameter. 2020 IEEE Conference of Russian +Young Researchers in Electrical and Electronic Engineering (EIConRus), +154–157. +https://doi.org/10.1109/EIConRus49466.2020.9038964 + + + An R library for nonlinear black-box system +identification + Ayala + SoftwareX + 11 + 10.1016/j.softx.2020.100495 + 2020 + Ayala, H. V. H., Gritti, M. C., & +Santos Coelho, L. dos. (2020). An R library for nonlinear black-box +system identification. SoftwareX, 11, 100495. +https://doi.org/10.1016/j.softx.2020.100495 + + + Control of hysteretic systems through an +analytical inverse compensation based on a NARX model + Lacerda Junior + IEEE Access + 7 + 10.1109/access.2019.2926057 + 2019 + Lacerda Junior, W. R., Martins, S. A. +M., Nepomuceno, E. G., & Lacerda, M. J. (2019). Control of +hysteretic systems through an analytical inverse compensation based on a +NARX model. IEEE Access, 7, 98228–98237. +https://doi.org/10.1109/access.2019.2926057 + + + Sufficient conditions for rate-independent +hysteresis in autoregressive identified models + Martins + Mechanical Systems and Signal +Processing + 75 + 10.1016/j.ymssp.2015.12.031 + 2016 + Martins, S. A. M., & Aguirre, L. +A. (2016). Sufficient conditions for rate-independent hysteresis in +autoregressive identified models. Mechanical Systems and Signal +Processing, 75, 607–617. +https://doi.org/10.1016/j.ymssp.2015.12.031 + + + Design and implementation of data acquisition +system based on Scrapy technology + Yang + 2019 2nd international conference on safety +produce informatization (IICSPI) + 10.1109/IICSPI48186.2019.9096044 + 2019 + Yang, H. (2019). Design and +implementation of data acquisition system based on Scrapy technology. +2019 2nd International Conference on Safety Produce Informatization +(IICSPI), 417–420. +https://doi.org/10.1109/IICSPI48186.2019.9096044 + + + A Python instrument control and data +acquisition suite for reproducible research + Koerner + IEEE Transactions on Instrumentation and +Measurement + 4 + 69 + 10.1109/TIM.2019.2914711 + 2020 + Koerner, L. J., Caswell, T. A., +Allan, D. B., & Campbell, S. I. (2020). A Python instrument control +and data acquisition suite for reproducible research. IEEE Transactions +on Instrumentation and Measurement, 69(4), 1698–1707. +https://doi.org/10.1109/TIM.2019.2914711 + + + Scikit-learn: Machine learning in +Python + Pedregosa + Journal of Machine Learning +Research + 12 + 10.48550/arXiv.1201.0490 + 2011 + Pedregosa, F., Varoquaux, G., +Gramfort, A., Michel, V., Thirion, B., Grisel, O., Blondel, M., +Prettenhofer, P., Weiss, R., Dubourg, V., Vanderplas, J., Passos, A., +Cournapeau, D., Brucher, M., Perrot, M., & Duchesnay, E. (2011). +Scikit-learn: Machine learning in Python. Journal of Machine Learning +Research, 12, 2825–2830. +https://doi.org/10.48550/arXiv.1201.0490 + + + + + + diff --git a/joss.05662/10.21105.joss.05662.jats b/joss.05662/10.21105.joss.05662.jats new file mode 100644 index 0000000000..a2090023e0 --- /dev/null +++ b/joss.05662/10.21105.joss.05662.jats @@ -0,0 +1,509 @@ + + +
+ + + + +Journal of Open Source Software +JOSS + +2475-9066 + +Open Journals + + + +5662 +10.21105/joss.05662 + +PYDAQ: Data Acquisition and Experimental Analysis with +Python + + + +https://orcid.org/0000-0003-1702-8504 + +Martins +Samir Angelo Milani + + + +* + + + +Department of Electrical Engineering at Federal University +of São João del-Rei, Brazil. + + + + +GCoM - Modeling and Control Group at Federal University of +São João del-Rei, Brazil. + + + + +* E-mail: + + +9 +3 +2023 + +8 +92 +5662 + +Authors of papers retain copyright and release the +work under a Creative Commons Attribution 4.0 International License (CC +BY 4.0) +2022 +The article authors + +Authors of papers retain copyright and release the work under +a Creative Commons Attribution 4.0 International License (CC BY +4.0) + + + +Python +Data Acquisition +Arduino +NIDAQ +System Identification +Mathematical Modeling + + + + + + Summary +

System identification is a relevant research topic that aims to + find mathematical models using acquired data. One of the main + contributions is the work of Ljung + (1999), + which was substantially developed over the years + (Lacerda + Junior et al., 2019; + Martins + & Aguirre, 2016). Among system identification tools, + SysIdentPy + (Junior + et al., 2020) uses Python in a very straightforward way for + system modeling through empirical data, while Narmax + (Ayala + et al., 2020) promises to obtain models using R language.

+

As pointed out by Ljung + (1999), + experimental data are necessary for obtaining black-box models, and + this is exactly where PYDAQ find its place. PYDAQ is a Python tool + which was primarily developed for experiments with empirical data, + either sending and/or acquiring data using simple Graphical User + Interfaces or command line, with few (or no) lines of code required, + using different solutions provided by the market (NIDAQ and Arduino). + Even a reseacher with no programming skills is able to use PYDAQ + easily and quickly for data acquisition.

+

In what follows it will be shown how PYDAQ can be use by any + scientist, its advantages and features for quickly and effective data + acquisition experiments, even if the scientist has no programming + skills.

+
+ + Statement of need +

Any scientist or student who needs to acquire data in an easy and + quick way, in three line of code (LOC), are the target audience of + this manuscript/package. PYDAQ is a solution that aims to allow the + user to perform experiments from data acquisition to signals + generation using a Graphical User Interface.

+

Despite this, for advanced users, it is also possible to use PYDAQ + through command line, as shown in the + documentation, + allowing PYDAQ to be integrated in real time with well-known modeling + tools.

+

To contextualize the importance of PYDAQ, there are full papers + dealing only with data acquisition + (Koerner + et al., 2020; + Yang, + 2019). It should be clear at this point that data acquisition + is commonly only the first step in an empirical scientific procedure, + such as in the work of Ostrovskii et al. + (2020). + Therefore, this step should not take too much energy of a researcher, + since he/she needs to be full of energy to continue the research + project.

+

Further, PYDAQ deals from different type of data acquisition cards, + from simple and cheaper Arduino boards up to NIDAQ devices, allowing + the execution from simple to complex experiments. Also, since PYDAQ + can be also used as a command line tool, it can be easily incorporated + to be used in production along with any available mathematical tool, + such as SysIdentPy + (Junior + et al., 2020) or SciKitLearn + (Pedregosa + et al., 2011).

+

In literature there are packages that deals with NIDAQ devices, + such as the NSLS-II tools + (Koerner + et al., 2020). However, they need several lines of codes in + order to make a single data acquisition, and works only with expensive + and proprietary boards. Besides, as far as I know, there is no + Graphical User Interface open software that allows instantly and + easily data acquisition with Python, this being another feature of + PYDAQ.

+

Because of the above-mentioned facts, PYDAQ can be used also to + introduce new scientist in the System Identification research area. + Also, PYDAQ can be used in teaching, during engineering courses and in + low-cost laboratories’ implementation, once Arduino boards are quite + cheap and easy to find. Graphical User Interfaces also allows the user + to be directly connected with the subject, as explicitly said by Silva + et al. + (2018).

+

In what follows examples of how to use PYDAQ will be presented, as + well as future research topics. Further details can also be found in + the + documentation.

+
+ + Examples +

The fastest way to install PYDAQ is using pip:

+ pip install pydaq +

[fig:nidaq_get_gui] + and + [fig:arduino_get_gui] + depict the Graphical User Interface developed for Data Acquisition + using Arduino or any NIDAQ board.

+ +

Data Acquisition through + NIDAQ.

+ +
+ +

Data Acquisition through + Arduino.

+ +
+

To start them, only three line of codes (LOC) are necessary, + including one for importing PYDAQ:

+ from pydaq.get_data import Get_data +# Class Get_data +g = Get_data() + +# Arduino or NIDAQ - Use ONE of the following lines +g.get_data_nidaq_gui() # For NIDAQ devices +g.get_data_arduino_gui() # For arduino boards +

Similarly, to send data, only three LOC are required, as showed up + in what follow:

+ from pydaq.send_data import Send_data + +# Class Send_data +s = Send_data() + +# Arduino or NIDAQ - Use ONE of the following lines +s.send_data_nidaq_gui() +s.send_data_arduino_gui() +

If the user decides to save data, it will be saved in + .dat format, located at the path defined in the + GUI (Desktop is the default path). + [fig:data] shows an + example of how data will be saved: i) one file + (time.dat) with the timestamp, in seconds, when + each sample was acquired; ii) file data.dat + contains acquired values.

+ +

Example of acquired + data.

+ +
+ +

GUI for sending data - + Arduino.

+ +
+ +

GUI for sending data - + NIDAQ.

+ +
+

It should be emphasized that once this code is executed, a + Graphical User Interface will manifest on the screen, according to the + board selected by the user, as shown in + [fig:arduino_send_gui] + and + [fig:nidaq_send_gui].

+

Options are straight-forward and ease to understand. For further + details and to check how to use the same functionality using a command + line the reader are invited to check the + documentation.

+

It is noteworthy that any signal can be generated and applied to a + physical system using the presented GUI, being the used board the main + constraint. Data can be either generated manually or using a library + (e.g., NumPy) to create signals as sine waves, PRBS (Pseudo-Random + Binary Signal) or other signal required to be a persistently exciting + input, as necessary for system identification + (Billings, + 2013; + Ljung, + 1999).

+

Step-response is a common way to test a system and acquire data, in + order to find a model, as well as system time constant and gain. To + facilitate this procedure, a step-response GUI was also created and + can be seen in + [fig:step_nidaq] + and + [fig:step_arduino]. + To use them, user should type the command:

+ from pydaq.step_response import Step_response + +# Class Step_Response +s = Step_response() + +# Arduino or NIDAQ - Use ONE of the following lines +s.step_response_nidaq_gui() +s.step_response_arduino_gui() + +

Step Response GUI - + NIDAQ.

+ +
+ +

Step Response GUI - + Arduino.

+ +
+

Here the user can define when the step will be applied, as well as + where data will be saved. + [fig:data_sent] + and + [fig:step_data] + show data that were empirically-acquired with PYDAQ. In the figures + the user will find labels, functionality (Sending Data/Data + Acquisition/Step Response), device/channel (for NIDAQ boards) or COM + port used (for Arduino devices).

+ +

Data acquired using a NIDAQ + board.

+ +
+ +

Data generated by a step-response + experiment.

+ +
+

Examples showed above shed light in some functionalities of PYDAQ. + For further details and for command line use, the reader is welcome to + consult the full + documentation.

+
+ + Future Work +

Future releases will include real-time and data-driven system + identification using linear and nonlinear approaches. Also, real-time + model based controllers will be implemented through PYDAQ. Saving data + in an SQL server is a future feature, as well.

+
+ + + + + + + JuniorWilson Rocha Lacerda + AndradeLuan Pascoal Costa da + OliveiraSamuel Carlos Pessoa + MartinsSamir Angelo Milani + + SysIdentPy: A Python package for system identification using NARMAX models + Journal of Open Source Software + The Open Journal + 2020 + 5 + 54 + https://doi.org/10.21105/joss.02384 + 10.21105/joss.02384 + 2384 + + + + + + + LjungLennart + + System identification: Theory for the user + Prentice-Hall + Englewood Cliffs, NJ + 1999 + 2nd + 0-13-656695-2 + + + + + + BillingsS. A. + + Nonlinear system identification: NARMAX methods in the time, frequency, and spatio-temporal domains + John Wiley & Sons + Chichester + 2013 + 10.1002/9781118535561 + 574 + + + + + + + SilvaPedro Henrique Oliveira + NardoLucas Giovani + MartinsSamir Angelo Milani + NepomucenoErivelton Geraldo + PercMatjaž + + Graphical interface as a teaching aid for nonlinear dynamical systems + European Journal of Physics + IOP Publishing + 201810 + 39 + 6 + 10.1088/1361-6404/aae35c + 065105 + + + + + + + OstrovskiiValerii Y. + NazareThalita E. + MartinsSamir A. M. + NepomucenoErivelton G. + + Temperature as a chaotic circuit bifurcation parameter + 2020 IEEE conference of russian young researchers in electrical and electronic engineering (EIConRus) + 2020 + + 10.1109/EIConRus49466.2020.9038964 + 154 + 157 + + + + + + AyalaHelon Vicente Hultmann + GrittiMarcos Cesar + Santos CoelhoLeandro dos + + An R library for nonlinear black-box system identification + SoftwareX + Elsevier + 2020 + 11 + 10.1016/j.softx.2020.100495 + 100495 + + + + + + + Lacerda JuniorWilson R. + MartinsSamir A. M. + NepomucenoErivelton G. + LacerdaMárcio J. + + Control of hysteretic systems through an analytical inverse compensation based on a NARX model + IEEE Access + IEEE + 2019 + 7 + 10.1109/access.2019.2926057 + 98228 + 98237 + + + + + + MartinsS. A. M. + AguirreL. A. + + Sufficient conditions for rate-independent hysteresis in autoregressive identified models + Mechanical Systems and Signal Processing + Elsevier + 2016 + 75 + 10.1016/j.ymssp.2015.12.031 + 607 + 617 + + + + + + YangHongxia + + Design and implementation of data acquisition system based on Scrapy technology + 2019 2nd international conference on safety produce informatization (IICSPI) + 2019 + + 10.1109/IICSPI48186.2019.9096044 + 417 + 420 + + + + + + KoernerLucas J. + CaswellThomas A. + AllanDaniel B. + CampbellStuart I. + + A Python instrument control and data acquisition suite for reproducible research + IEEE Transactions on Instrumentation and Measurement + 2020 + 69 + 4 + 10.1109/TIM.2019.2914711 + 1698 + 1707 + + + + + + PedregosaF. + VaroquauxG. + GramfortA. + MichelV. + ThirionB. + GriselO. + BlondelM. + PrettenhoferP. + WeissR. + DubourgV. + VanderplasJ. + PassosA. + CournapeauD. + BrucherM. + PerrotM. + DuchesnayE. + + Scikit-learn: Machine learning in Python + Journal of Machine Learning Research + 2011 + 12 + 10.48550/arXiv.1201.0490 + 2825 + 2830 + + + + +
diff --git a/joss.05662/10.21105.joss.05662.pdf b/joss.05662/10.21105.joss.05662.pdf new file mode 100644 index 0000000000..230f8b9c91 Binary files /dev/null and b/joss.05662/10.21105.joss.05662.pdf differ diff --git a/joss.05662/media/1433667568bc0f59ea5f280d6c43ce6ba2200e59.png b/joss.05662/media/1433667568bc0f59ea5f280d6c43ce6ba2200e59.png new file mode 100644 index 0000000000..5034b8c6f2 Binary files /dev/null and b/joss.05662/media/1433667568bc0f59ea5f280d6c43ce6ba2200e59.png differ diff --git a/joss.05662/media/283b6a6e7ec58e1fc72271b94a9723780b3c161a.png b/joss.05662/media/283b6a6e7ec58e1fc72271b94a9723780b3c161a.png new file mode 100644 index 0000000000..cfca22d3de Binary files /dev/null and b/joss.05662/media/283b6a6e7ec58e1fc72271b94a9723780b3c161a.png differ diff --git a/joss.05662/media/2c7234ff73bb215abd0903521dc404609e555c5f.png b/joss.05662/media/2c7234ff73bb215abd0903521dc404609e555c5f.png new file mode 100644 index 0000000000..735f541ec5 Binary files /dev/null and b/joss.05662/media/2c7234ff73bb215abd0903521dc404609e555c5f.png differ diff --git a/joss.05662/media/4090842f9eecb6c20a6f3e23fa8ab5a251bb969f.png b/joss.05662/media/4090842f9eecb6c20a6f3e23fa8ab5a251bb969f.png new file mode 100644 index 0000000000..992ec10cd4 Binary files /dev/null and b/joss.05662/media/4090842f9eecb6c20a6f3e23fa8ab5a251bb969f.png differ diff --git a/joss.05662/media/5738bc3ed044cfed80e6ffc09fd6ec7f45d2f9f1.png b/joss.05662/media/5738bc3ed044cfed80e6ffc09fd6ec7f45d2f9f1.png new file mode 100644 index 0000000000..baa4a8a157 Binary files /dev/null and b/joss.05662/media/5738bc3ed044cfed80e6ffc09fd6ec7f45d2f9f1.png differ diff --git a/joss.05662/media/7f14d2e569388ad8877730df6a6e6e638b5b4fc5.png b/joss.05662/media/7f14d2e569388ad8877730df6a6e6e638b5b4fc5.png new file mode 100644 index 0000000000..8cc209a568 Binary files /dev/null and b/joss.05662/media/7f14d2e569388ad8877730df6a6e6e638b5b4fc5.png differ diff --git a/joss.05662/media/885ae9e84f66f5fedd1c657f9164314060507ee6.png b/joss.05662/media/885ae9e84f66f5fedd1c657f9164314060507ee6.png new file mode 100644 index 0000000000..c4b999a082 Binary files /dev/null and b/joss.05662/media/885ae9e84f66f5fedd1c657f9164314060507ee6.png differ diff --git a/joss.05662/media/b487e4ded550a2e53c54bde1330adb90e14296be.png b/joss.05662/media/b487e4ded550a2e53c54bde1330adb90e14296be.png new file mode 100644 index 0000000000..836a5dd665 Binary files /dev/null and b/joss.05662/media/b487e4ded550a2e53c54bde1330adb90e14296be.png differ diff --git a/joss.05662/media/ef303b27f3570a47a30fa04842fcd9320acb86fd.png b/joss.05662/media/ef303b27f3570a47a30fa04842fcd9320acb86fd.png new file mode 100644 index 0000000000..390c6228cc Binary files /dev/null and b/joss.05662/media/ef303b27f3570a47a30fa04842fcd9320acb86fd.png differ