Skip to content

Commit

Permalink
xdf -> pyxdf package
Browse files Browse the repository at this point in the history
Updated pyxdf with code from Syntrogi/Intheon.
Created setup.py to make pip installable.
Fixed effective srate calculation.
  • Loading branch information
cboulay committed Aug 6, 2018
1 parent 26e8925 commit 0428fe0
Show file tree
Hide file tree
Showing 7 changed files with 242 additions and 98 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@
xdfimport*.zip
xdf.zip
*.pyc
.idea
pyxdf.egg-info

22 changes: 22 additions & 0 deletions Python/example/example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import os
import logging
import pyxdf


logging.basicConfig(level=logging.DEBUG) # Use logging.INFO to reduce output.
fname = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', 'xdf_sample.xdf'))
streams, fileheader = pyxdf.load_xdf(fname)

print("Found {} streams:".format(len(streams)))
for ix, stream in enumerate(streams):
print("Stream {}: {} - type {} - uid {} - shape {} at {} Hz (effective {} Hz)".format(
ix + 1, stream['info']['name'][0],
stream['info']['type'][0],
stream['info']['uid'][0],
(int(stream['info']['channel_count'][0]), len(stream['time_stamps'])),
stream['info']['nominal_srate'][0],
stream['info']['effective_srate'])
)
if any(stream['time_stamps']):
print("\tDuration: {} s".format(stream['time_stamps'][-1] - stream['time_stamps'][0]))
print("Done.")
1 change: 1 addition & 0 deletions Python/pyxdf/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .pyxdf import load_xdf
201 changes: 103 additions & 98 deletions Python/xdf.py → Python/pyxdf/pyxdf.py

Large diffs are not rendered by default.

Empty file added Python/pyxdf/test/__init__.py
Empty file.
8 changes: 8 additions & 0 deletions Python/setup.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[metadata]
# This includes the license file in the wheel.
license_file = LICENSE

[bdist_wheel]
# This flag says that the code is written to work on both Python 2 and Python
# 3.
universal=1
105 changes: 105 additions & 0 deletions Python/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
"""Python setup script for the pylsl distribution package."""

from setuptools import setup, find_packages, Distribution
from codecs import open
from os import path


here = path.abspath(path.dirname(__file__))

# Get the long description from the relevant file
with open(path.join(here, '..', 'README.md'), encoding='utf-8') as f:
long_description = f.read()

setup(
name='pyxdf',

# Versions should comply with PEP440. For a discussion on single-sourcing
# the version across setup.py and the project code, see
# https://packaging.python.org/en/latest/single_source_version.html
version='1.14.0',

description='Python library for importing XDF (Extensible Data Format)',
long_description=long_description,
long_description_content_type="text/markdown",

# The project's main homepage.
url='https://github.com/sccn/xdf',

# Author details
author='Christian Kothe, Alejandro Ojeda',
author_email='christiankothe@gmail.com',

# Choose your license
license='BSD',

# See https://pypi.python.org/pypi?%3Aaction=list_classifiers
classifiers=[
# How mature is this project? Common values are
# 3 - Alpha
# 4 - Beta
# 5 - Production/Stable
'Development Status :: 4 - Beta',

# Indicate who your project is intended for
'Intended Audience :: Developers',
'Intended Audience :: Science/Research',
'Topic :: Scientific/Engineering',

# Pick your license as you wish (should match "license" above)
'License :: OSI Approved :: MIT License',

'Operating System :: Microsoft :: Windows',
'Operating System :: POSIX :: Linux',
'Operating System :: MacOS',

# Specify the Python versions you support here. In particular, ensure
# that you indicate whether you support Python 2, Python 3 or both.
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 3',
],

# What does your project relate to?
keywords='xdf pyxdf lsl lab streaming layer labstreaminglayer data file',

# You can just specify the packages manually here if your project is
# simple. Or you can use find_packages().
packages=find_packages(),

# List run-time dependencies here. These will be installed by pip when
# your project is installed. For an analysis of "install_requires" vs pip's
# requirements files see:
# https://packaging.python.org/en/latest/requirements.html
install_requires=[],

# List additional groups of dependencies here (e.g. development
# dependencies). You can install these using the following syntax,
# for example:
# $ pip install -e .[dev,test]
extras_require={},

# If there are data files included in your packages that need to be
# installed, specify them here. If using Python 2.6 or less, then these
# have to be included in MANIFEST.in as well.
# Here we specify all the shared libs for the different platforms, but
# setup will probably only find the one library downloaded by the build
# script or placed here manually.
package_data={},

# Although 'package_data' is the preferred approach, in some case you may
# need to place data files outside of your packages. See:
# http://docs.python.org/3.4/distutils/setupscript.html#installing-additional-files # noqa
# In this case, 'data_file' will be installed into '<sys.prefix>/my_data'
data_files=[],

# To provide executable scripts, use entry points in preference to the
# "scripts" keyword. Entry points provide cross-platform support and allow
# pip to create the appropriate form of executable for the target platform.
entry_points={},

# We want to eventually move to having platform-specific distributions
# with only the required platform shared objects. Unfortunately, for Linux,
# pypi only accepts anylinux builds. Leave the following commented until
# anylinux is working with AppVeyor/Travis. This will create the wheel for
# 'any' Python. That means we need all available shared objects when we upload.
)

0 comments on commit 0428fe0

Please sign in to comment.