GithubHelp home page GithubHelp logo

yupidevs / yupi Goto Github PK

View Code? Open in Web Editor NEW
46.0 4.0 6.0 7.37 MB

Python package designed for collecting and processing trajectory data.

License: MIT License

Python 100.00%
generators python statistics tracking-algorithm trajectory trajectory-analysis trajectory-tracking visualization

yupi's Introduction

Logo

Python DOI PyPI ReadTheDocs

Standing for Yet Underused Path Instruments, yupi is a set of tools designed for collecting, generating and processing trajectory data.

Main features

  • Convert raw data to trajectories ... different input manners
  • I/O operations with trajectories ... json and csv serializers
  • Trajectory extraction from video inputs ... even with moving camera
  • Artificial trajectory generation ... several models implemented
  • Trajectory basic operations ... rotation, shift, scaling, ...
  • Trajectory transformations ... filters, resamplers, ...
  • Statistical analysis rom trajectories ensembles ... turning angles histogram, velocity autocorrelation function, power spectral density, and much more ...
  • Results visualization ... each statistical observable has a related plot function
  • Spacial projection of trajectories ... for 2D and 3D trajectories

Installation

Current recommended installation method is via PyPI:

pip install yupi

Compatibility

  • Python 3.7 or later
  • Ubuntu 18.04 or later
  • Windows 7 or later
  • macOS 10.12.6 (Sierra) or later.

Getting Started

In the official documentation there are some resources to start using the library: Tutorials, Examples and a detailed description of the API.

Examples

Code examples (with additional multimedia resources) can be found in this repository. Additionally, in the Examples section of the documentation, you can find the same examples with additional comments and expected execution results in order to inspect the examples without actually executing them.

yupi's People

Contributors

alpelito7 avatar gvieralopez avatar jmorgadov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

yupi's Issues

Error when loading previously saved trajectories without uniformly sampled time data

Hi and thanks for your work! I have a question regarding trajectories which are not uniformly sampled in time. Reading your "brief comment on time" in the documentation I thought I only have to supply a sequence of time data and optionally set dt to None. However I realized the dt value set is on creation of the Trajectory object.

points1 = [[0, 0], [1.0, 0], [0.63, 0.98]]
t1 = [0,0.5,2]
track1 = Trajectory(points=points1, t=t1,traj_id="track1")
print(track1.dt)

points2 = [[0, 0], [2.0, 0], [1, 0.98]]
t2 = [0.5,1,1.3]
track2 = Trajectory(points=points2, dt=None, t=t2,traj_id="track2")
print(track2.dt)

Trajectory.save_trajectories([track1,track2], "./demo")
trajs = Trajectory.load_folder("./demo")

output:

1.0
0.4
Ignoring: demo/trajectory_1.json
Ignoring: demo/trajectory_0.json

When saving the trajectories and loading them again this leads to a LoadTrajectoryError triggered by a ValueError:
ValueError: You are giving 'dt' and 't' but 't0' is not the same as the first value of 't'.

Am I understanding something wrong or is this a bug in the implementation?

Add examples

Great workl! Please add some working examples

Document new Trajectory creation methods

Since, now we have 3 different ways to create a Trajectory object from data, we should include a demo of each in:

  • Getting started section of the docs:
    Subsection: 'Converting your data into Trajectory objects'
  • Intro001.py of the examples should be extended to contain all 3 ways.

Feature Request: Linking Tracklets to Trajectories

Not sure how much features you want to integrate into yupi but I thought it would be really great to have general tracklet linking features in order to connect tracklets created due to id switches while tracking.

Thanks for all your work on yupi!

Unable to overwrite time or component attributes of Trajectory objects

After creating a Trajectory object, traj, it is possible to successfully overwrite traj.r by using +=. For instance:

import yupi
x = [2, 5, 3]
traj = yupi.Trajectory(x)

traj.r += 1
traj.r
# Vector([[3.],
          [6.],
          [4.])

However, one gets an Attribute Error when trying to do the analogous change with time or component attributes, as indicted bellow:

traj.t += 1
# Attribute Error: can't set attribute 't'
traj.r.x += 1
# Attribute Error: can't set attribute 'x'

It would be great if one could overwrite other Trajectory's attributes as well.

Add new tracking methods

New tracking methods to be implemented:

  • Frame Diff
  • Template Matching
  • Background subtraction
  • Feature detection

Add vector hash

Vector hashes will be used to check if some trajectory data must be recalculated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.