0

I'm going through the Trackpy walkthrough (http://soft-matter.github.io/trackpy/v0.3.0/tutorial/walkthrough.html) but using my own pictures. When I get to calculating the overall drift velocity, I get this error and I don't know what it means:drift error

I don't have a ton of coding experience so I'm not even sure how to look at the source code to figure out what's happening.

  • Please provide some code that you have tried or errors you have encountered. Also add more tags so the question is visible to a larger audience – Standin.Wolf Oct 31 '19 at 16:14

1 Answers1

0

Your screenshot shows the traceback of the error, i.e. you called a function, tp.compute_drift(), but this function called another function, pandas_sort(), which called another function, etc until raise ValueError(msg) is called, which interrupts the chain. The last line is the actual error message:

ValueError: 'frame' is both an index level and a column label, which is ambiguous.

To understand it, you have to know that Trackpy stores data in DataFrame objects from the pandas library. The tracking data you want to extract drift motion from is stored in such an object, t2. If you print t2 it will probably look like this:

                 y            x      mass  ...        ep  frame  particle
frame                                      ...                           
0        46.695711  3043.562648  3.881068  ...  0.007859      0         0
3979   3041.628299  1460.402493  1.787834  ...  0.037744      0         1
3978   3041.344043  4041.002275  4.609833  ...  0.010825      0         2

The word "frame" is the title of two columns, which confuses the sorting algorithm. As the error message says, it is ambiguous to sort the table by frame.

Solution

The index (leftmost) column does not need a name here, so remove it with

t2.index.name = None

and try again. Check if you have the newest Trackpy and Pandas versions.

smcs
  • 1,772
  • 3
  • 18
  • 48