4 DISCUSSION
At present, there is a wide variety of BCI software
that is very complete and free open-source.
However, most of the available BCI software runs
under a Matlab environment. This leads to purchase
a MathWorks license. The cost and restrictions of
such license is what hinders the use of BCI software
that requires Matlab programming language. In fact,
a common topic discussed in social networking
websites such as ResearchGate and LinkedIn is the
substitution of Matlab for biosignal processing.
Several scientific fields have been gradually
turning to Python programming language, which
offers all the benefits of Matlab, but under a free
open-source environment. Python is a functional and
object-oriented programming language, which
facilitates software development from scratch. With
regard to BCI research, Python has an extensive
variety of modules applicable to neurosciences,
pattern recognition, machine learning and others.
In the light of the above discussion, a MI-based
system was programmed through Python
programming language. The system was called
miBCI software and was based on online and offline
data analysis. In both analyses, the same EEG data
processing system was adopted. This data processing
system was created in line with six modules: data
acquisition, DSP, feature extraction, feature
selection, feature classification, and plotting tools.
The functionality of the miBCI software was tested
in a pilot study, and its utility was exemplified
through a miscellaneous collection of plots obtained
from two offline studies.
Although the miBCI software is terminated for
now, further work is required to increase the
versatility of the system. A number of future
improvements have been considered. First of all, the
online data analysis of the software can be
redesigned in order to detect non-control stages.
This will allow users to control the miBCI software
at any time. In other words, it is proposed to
transform the synchronous system into an
asynchronous one. Secondly, a larger number of
classes can be included so as to offer greater
freedom of manipulation to the users. Thirdly, it is
worth mentioning that the modules of the miBCI
software are subject to constant improvement.
Examples of such improvement are the following.
The mechanism for loading EEG data in the offline
analysis could be adapted to read BDF-files, and not
only mat-files. The feature selection may involve
other typical methods used in BCI research such as
principal component analysis. The variety of
classifiers can be enriched by including algorithms
such as neural networks.
REFERENCES
Albanese, D. et al., 2012. mlpy: Machine Learning
Python. New York: Cornell University.
Alonso-Valerdi, L. M. & Sepulveda, F., 2011.
Programming an offline-analyzer of motor imagery
signals via python language. Boston, pp. 7861-7864.
Alonso-Valerdi, L. M. & Sepulveda, F., 2011. Python in
Brain-Computer Interfaces (BCI): Development of a
BCI based on Motor Imagery. Colchester, pp. 74-79.
Bishop, C. M., 2006. Pattern Recognition and Machine
Learning. New York: Springer.
Center, O. S., 2006. Octave and Python: High-level
scripting languages productivity and performance
evaluation, Ohio: archive.osc.edu.
Chang, C.-C. & Chih-Jen, L., 2011. LIBSVM: a library for
support vector machines. ACM Transactions on
Intelligent Systems and Technology (TIST), 2(3), p. 27.
Delorme, A. et al., 2010. MATLAB-based tools for BCI
research. In: Brain-Computer Interfaces: Applying our
Minds to Human-Computer Interaction. London:
Springer-Verlag, pp. 241-260.
Delorme, A. & Makeig, S., 2004. EEGLAB: an open
source toolbox for analysis of single-trial EEG
dynamics including independent component analysis.
Journal of Neuroscience Methods, Volume 134, pp. 9-
21.
Fangohr, H., 2004. A comparison of C, MATLAB, and
Python as teaching languages in engineering.
Computational Science-ICCS, Springer Berlin
Heidelberg, pp. 1210-1217.
Hsu, C.-W., Chang, C.-C. & Lin, C.-J., 2003. A practical
guide to support vector classification.
Hunter, J. D., 2007. Matplotlib: A 2D graphics
environment. Computing in Science and Engineering,
9(3), pp. 0090-95.
Ishak, K. A., 2009. MATLAB tutorial of fundamental
programming, Malaysia: University Kebangsaan.
Klein, A. & Reilink, B., 2013. Pyzo, a free and open-
source computing environment based on Python, The
Netherlands: http://www.pyzo.org/about_pyzo.html.
Klimesch, W., 1999. EEG alpha and theta oscillations
reflect cognitive and memory performance: a review
and analysis. Brain Research Reviews, Volume 29, pp.
169-195.
Kothe, C. A. & Makeig, S., 2013. BCILAB: a platform for
brain–computer interface development. Journal of
Neural Engineering, 10(5), p. 056014.
Kropotov, J. D., 2009. Part I: EEG Rhythms. In:
Quantitative EEG, Event-Related Potentials and
Neurotherapy. 1st ed. San Diego(California):
Academic Press - Elsevier, pp. 1-180.
Leeb, R., Scherer, R., Keinrath, C. & Pfurtscheller, G.,
2007. Combining BCI and virtual reality: scouting
virtual worlds. In: Toward Brain-Computer
PhyCS2015-2ndInternationalConferenceonPhysiologicalComputingSystems
42