NeuroML is an XML-based model description language, which provides a powerful common data format for defining and exchanging models of neurons and neuronal networks. In the latest version of NeuroML, the structure and behavior of ion channel, synapse, cell, and network model descriptions are based on underlying definitions provided in LEMS, a domain-independent language for expressing hierarchical mathematical models of physical entities. While declarative approaches for describing models have led to greater exchange of model elements among software tools in computational neuroscience, a frequent criticism of XML-based languages is that they are difficult to work with directly. Here we describe two Application Programming Interfaces (APIs) written in Python (http://www.python.org), which simplify the process of developing and modifying models expressed in NeuroML and LEMS. The libNeuroML API provides a Python object model with a direct mapping to all NeuroML concepts defined by the NeuroML Schema, which facilitates reading and writing the XML equivalents. In addition, it offers a memory-efficient, array-based internal representation, which is useful for handling large-scale connectomics data. The libNeuroML API also includes support for performing common operations that are required when working with NeuroML documents. Access to the LEMS data model is provided by the PyLEMS API, which provides a Python implementation of the LEMS language, including the ability to simulate most models expressed in LEMS. Together, libNeuroML and PyLEMS provide a comprehensive solution for interacting with NeuroML models in a Python environment.
The main purpose of this project is to create a method for determining the absolute position of an accelerometer. Acceleration and angular speed were obtained from an accelerometer attached to a vehicle as it moves around. As the vehicle moves to collect information the orientation of the accelerometer changes, so a rotation matrix is applied to the data based on the angular change at each time. The angular change and distance are obtained by using the trapezoidal approximation of the integrals. This method was first validated by using simple sets of "true" data which are explicitly known sets of data to compare the results to. Then, an analysis of how different time steps and levels of noise affect the error of the results was performed to determine the optimal time step of 0.1 sec that was then used for the actual tests. The tests that were performed were: a stationary test for uses of calibration, a straight line test to verify a simple test, and a closed loop test to test the accuracy. The graphs for these tests give no indication of the actual paths, so the final results can only show that the data from the accelerometer is too noisy and inaccurate for this method to be used by this sensor. The future work would be to test different ways to get more accurate data and then use it to verify this methods. These ways could include using more sensors to interpolate the data, reducing noise by using a different sensor, or adding a filter. Then, if this method is considered accurate enough, it could be implemented into control systems.