Package: trajectorytools
trajectorytools is a library with some utils to study and
plot 2D trajectories.InstallationFrom PyPIpipinstalltrajectorytoolsFrom SourceTo clone this repository:gitclonehttps://github.com/fjhheras/trajectorytoolsTo install requirements:pipinstall-rrequirements.txtTo install the package:pipinstall.or alternatively, locally with a symlink:pipinstall-e.If you see this error: “gcc: fatal error: cannot execute ‘cc1plus’:
execvp: No such file or directory” you need the GNU C++ compiler.
To install it in, for example, Ubuntu and derivatives:sudoaptinstallg++Exampleimportnumpyasnpimportmatplotlibasmplimporttrajectorytoolsasttimporttrajectorytools.animationasttanimationimporttrajectorytools.socialcontextasttsocialfromtrajectorytools.constantsimporttest_raw_trajectories_path# Loading test trajectories as a numpy array of locationstest_trajectories=np.load(test_raw_trajectories_path,allow_pickle=True)# We will process the numpy array, interpolate nans and smooth it.# To do this, we will use the Trajectories APIsmooth_params={'sigma':1}traj=tt.Trajectories.from_positions(test_trajectories,smooth_params=smooth_params)# We assume a circular arena and populate center and radius keyscenter,radius=traj.estimate_center_and_radius_from_locations()# We center trajectories around the estimated centertraj.origin_to(center)# We will normalise the location by the radius:traj.new_length_unit(radius)# We will change the time units to seconds. The video was recorded at 32# fps, so we do:traj.new_time_unit(32,'second')# Now we can find the smoothed trajectories, velocities and accelerations# in traj.s, traj.v and traj.a# We can use, for instance, the positions in traj.s and find the border of# the group:in_border=ttsocial.in_alpha_border(traj.s,alpha=5)# Animation showing the fish on the bordercolornorm=mpl.colors.Normalize(vmin=0,vmax=3,clip=True)mapper=mpl.cm.ScalarMappable(norm=colornorm,cmap=mpl.cm.RdBu)color=mapper.to_rgba(in_border)anim1=ttanimation.scatter_vectors(traj.s,velocities=traj.v,k=0.3)anim2=ttanimation.scatter_ellipses_color(traj.s,traj.v,color)anim=anim1+anim2anim.prepare()anim.show()In thedirectory examples, you can find some more example scripts.
Scripts use some example trajectories, which can be found indata.
All example trajectories were obtained using idtracker.ai on videos
recorded in de Polavieja Lab (Champalimaud Research, Lisbon)—NOTENote that, when using constructors likefrom_idtrackeraiandfrom_positions,
we need to calculate velocity and accelerations from positions. As a result, thetrajobject has 2 frames less than the original positions array. By default, the
missing frames correspond to the first and last frames of the video. If you used
the option“only_past”:Trueinsmooth_params, the missing frames correspond
to the first two frames of the video.—Project maintainersFrancisco J.H. Heras (2017-)
Francisco Romero Ferrero (2017-)
Dean Rance (2021-)ContributeWe welcome contributions. The preferred way to report problems is by creating an issue. The best way to propose changes in the code is to create a pull request. Please, check ourcontribution guidelinesand ourcode of conduct.LicenseThis project is licensed under the terms of the GNU General Public License v3.0 (See COPYING). This means that you may copy, distribute and modify the software as long as you track changes/dates in source files. However, any modifications to GPL-licensed code must also be made available under the GPL along with build & install instructions.If you use this work in an academic context and you want to acknowledge us, please cite some of the relevant papers:Romero-Ferrero, F., Bergomi, M. G., Hinz, R. C., Heras, F. J., & de Polavieja, G. G. (2019). idtracker.ai: tracking all individuals in small or large collectives of unmarked animals. Nature methods, 1Heras, F. J., Romero-Ferrero, F., Hinz, R. C., & de Polavieja, G. G. (2019). Deep attention networks reveal the rules of collective motion in zebrafish. PLoS computational biology, 15(9), e1007354.