openma

授权协议 View license
开发语言
所属分类 应用工具、 科研计算工具
软件类型 开源软件
地区 不详
投 递 者 漆雕和雅
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

OpenMA

Introduction

OpenMA is an open-source and cross-platform library for movement analysis and required data processing. The goal of OpenMA is to provide tools for scientists to perform computations and analysis based on published and existing algorithms without the need to modify their workflow. For example, most of the motion capture (mocap) system provides their own biomechanical model with an associated marker set. However, it would be beneficial to be independent of a mocap system to choose a particular model (because this one is known as better than the provided one, in terms of reliability for a specific population, etc.). The project OpenMA wants to provide such possibilities.

Documentation

The user documentation is centralized and accessible over our website openma.org. The developer documentation is available on the Github wiki.

Programming languages

Most of the code is written in C++. If this language is mostly used in the industry, this is not the case in research laboratories. To tackle this problem, the C++ code was wrapped to different scientific programming languages.

  • Matlab toolbox composed of packages and classes
  • Python 2 & 3 packages composed of classes (coming soon)

The API for binding languages is as close as possible to the C++ API. But when possible it uses native types (e.g. matrices, cells, etc.).

Technologies

This project uses lots of features introduced in the C++11 standard (variadic template, smart pointer, unordered map, auto keyword, etc.). For this reason, a compiler supporting the C++11 standard must be used (e.g MSVC 2013, GCC 4.8, or clang 3.3). The application CMake used for the build system must be at least the release version 3.1.

The numerical computation is realized internally by the Eigen library that uses template expression. On top of Eigen, OpenMA propose the nested namespace math. Several types and operations are proposed to handle data occlusion automatically. Thus, the implementation of numerical analysis is simplified (e.g. no need of for loop to process each sample, or to know if the sample is occluded or not).

The opaque pointer technique (also known as the pimpl idiom) is used in order to keep ABI compatibility between minor release of OpenMA. This point is important for third-party software (and plugins) which uses OpenMA as dynamic libraries.

The internal data structure relies on a dynamic hierarchical tree structure (i.e. a collection of nodes). This kind of structure has the advantage to be very flexible. Indeed, the addition of new kinds of data type is possible without modifying the existing internal structure.

The operations on files are realized using the memory-mapped mechanism to increase input/output performance. Thus, the data loading is faster for files physically present on-disk (or present on the network and temporary downloaded on your computer).

Development testing

In order to ensure the development and its quality over supported operating systems and processors, automated processes are executed each time modification in the code is done on the server. Hence, it strengthens the development, but also reduce undetected errors (bugs, missing documentation, etc.) when a new version is released.

Continuous integration

This part compiles the code on different operating systems in release mode and verify that all units tests passed. The unit tests are implemented using a modified version of CxxTest embedded into the source of OpenMA.

  • MacOS X

  • Compiler(s): Clang >= 3.1 / GCC >= 4.8

  • Processor architecture(s): x86_64

  • Libraries build mode(s): Static / Shared

  • Linux

  • Compiler(s): GCC >= 4.8

  • Processor architecture(s): x86_64

  • Libraries build mode(s): Shared

  • Microsoft Windows

  • Compiler(s): MSVC 2013 / GCC >= 4.8 (MinGW)

  • Processor architecture(s): x86 / x86_64

  • Libraries build mode(s): Shared

Static code analysis

This part verifies the quality of the implementation (i.e. no lexical, syntactic, and semantic mistakes which could crash the software or create vulnerabilities) as well as its maintenance.

Test coverage

To be sure that unit tests executed in the continuous integration part covers all the classes/functions proposed in OpenMA, a coverage analysis is realized. It gives a metrics regarding the number of calls used in the unit tests for each methods/functions.

API documentation

The documentation of the API is built each time a commit is sent on the server. Internally, Doxygen is used to verify and generate documentation of the C++ code (classes, methods, etc.). Then, a custom engine is used to generate the online documentation available on openma.org.

License

OpenMA use the generous open-source New BSD license. Yes, you can use OpenMA in commercial products. The complete text of the copyright is presented below:

Open Source Movement Analysis Library
Copyright (C) 2016, Moveck Solution Inc., all rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

    * Redistributions of source code must retain the above
      copyright notice, this list of conditions and the following
      disclaimer.
    * Redistributions in binary form must reproduce the above
      copyright notice, this list of conditions and the following
      disclaimer in the documentation and/or other materials
      provided with the distribution.
    * Neither the name(s) of the copyright holders nor the names
      of its contributors may be used to endorse or promote products
      derived from this software without specific prior written
      permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
 相关资料
  • 我在尝试使用Podman在RedHat 8上运行OpenMaptileServer时遇到问题。 这是我的开始脚本: 图像拉得很好,而且开始看起来很好。我可以执行 看看那个容器。一切看起来都很好。如果我用 我没有看到任何我认为是一个问题,但是当我试图击中主页http://localhost:8080,然后我得到站点未找到的错误。 我想这可能是防火墙的问题,所以我禁用了防火墙,但结果相同。我还通过安装

  • MAMA 是一个高性能的消息中间件,提供了支持各种不同消息中间件的抽象层 API。

  • OpenMajiang是完整的开源麻将程序,不是假开源! OpenMajiang 是一个开源h5麻将游戏 麻将算法基于网上流行的哪位日本老师的查表算法。。 客户端是 layabox 的 h5 引擎,性能还行 服务器是 基于netty'+spring 的架构,主要用于之前我参与的几个项目的服务器端代码修改 服务器的结构大致说下, boss 服务器单点中控, gataway 网关 负责加密转发消息和保

  • 数学模型是决策的重要工具,在控制传染病,疟疾是首次感染这种建模应用之一。然而,仍然是一个迫切需要新车型,可以比较全面的疟疾干预范围的潜在影响。为了解决这个问题,我们已经制定了疟疾感染的随机模拟一个平台,在人群中的个体模拟嵌套的需要。

  • OpenMailAdmin是一个支持中文并且非常完善的IMAP邮件服务器后台管理系统。它支持IMAP提供的所有功能。

  • OpenMath,这是一种针对数学对象的表示和交流的标准。