Page 1 of 2
C3D export
Posted: Tue Feb 11, 2020 4:21 pm
by kernalnet
Dear Experts,
I have a problem in using python for OpenSim 4.1
My Anaconda is for python 2 (anaconda2),
I created a new environment for OpenSim 4.1 with python 3.7
The 4.1\bin folder is on my system path environment.
The codes are exactly the same as "Reading C3D files through Python"
in addition to importing os, opensim and numpy
But this error appears in that code:
(opensim41) C:\Users\MohammadReza\Desktop>python opensim41.py
Traceback (most recent call last):
File "opensim41.py", line 14, in <module>
tables = C3DFileAdapter.readFile(os.path.join(test_dir, 'walking2.c3d'), 1)
NameError: name 'C3DFileAdapter' is not defined
Would you please help me with this code and error?
Your help would be greatly appreciated.
Cheers
Re: C3D export
Posted: Tue Feb 11, 2020 10:33 pm
by aymanh
Hello,
The interface to C3DFileAdapter has changed, please consult the doxygen documentation here for available methods
https://simtk.org/api_docs/opensim/api_ ... apter.html
The class now uses the generic read method from its base class rather than a custom readFile method as of version 4.1
Best regards,
-Ayman
Re: C3D export
Posted: Wed Feb 12, 2020 12:58 am
by kernalnet
Hi Aymen,
Many thanks for your reply.
Is there anything wrong with this new code?
import opensim
C3DFileAdapter c3dFileAdapter;
c3dFileAdapter.setLocationForForceExpression(opensim.C3DFileAdapter.ForceLocation_CenterOfPressure);
tables = c3dFileAdapter.read("walking5.c3d")
markers = tables['markers']
forces = tables['forces']
There is still an error:
(opensim41) C:\Users\MohammadReza\Desktop>python opensim41.py
File "opensim41.py", line 2
C3DFileAdapter c3dFileAdapter;
^
SyntaxError: invalid syntax
I execute this code in Anaconda Prompt and this is my python version:
(opensim41) C:\Users\MohammadReza\Desktop>python --version
Python 3.7.6
I'm grateful for your help
Cheers
Re: C3D export
Posted: Wed Feb 12, 2020 1:05 am
by tkuchida
It looks like your code is part C++ and part Python. For reference, there's a related test case here:
https://github.com/opensim-org/opensim- ... ter.py#L33. You should have something like this:
Code: Select all
import opensim
c3dFileAdapter = opensim.C3DFileAdapter()
...
Re: C3D export
Posted: Wed Feb 12, 2020 1:17 am
by kernalnet
tkuchida wrote: ↑Wed Feb 12, 2020 1:05 am
It looks like your code is part C++ and part Python.
Thanks Tom,
There is an example on doxygen for python:
![1.JPG](./download/file.php?id=3425&sid=fa0ea6e1721675a10d153cf4c29d3b67)
- 1.JPG (19.68 KiB) Viewed 474 times
https://simtk.org/api_docs/opensim/api_ ... apter.html
But now it works well
Cheers
Re: C3D export
Posted: Wed Feb 12, 2020 8:14 am
by tkuchida
Great. Thanks for reporting- I'll submit a fix.
Re: C3D export
Posted: Wed Feb 12, 2020 1:06 pm
by kernalnet
Hi,
It would be great if these examples become updated for 4.1 version as well.
https://simtk-confluence.stanford.edu:8 ... d%29+Files
Best Wishes
Re: C3D export
Posted: Wed Feb 12, 2020 1:14 pm
by tkuchida
Thanks for reporting. I've opened an Issue on GitHub (
https://github.com/opensim-org/opensim-core/issues/2673) to investigate.
Re: C3D export
Posted: Thu Feb 13, 2020 11:24 am
by kernalnet
Hi again,
In MATLAB, "rotateData" and "convertMillimeters2Meters" were defined
but in python, I can't find them. are there any examples of these
functions in python for "forces"?
adapter = opensim.C3DFileAdapter()
task = adapter.read(os.path.join(output_dir, 'task.c3d'))
forces = adapter.getForcesTable(task)
Your response would be greatly appreciated.
Cheers
Re: C3D export
Posted: Fri Feb 14, 2020 8:58 am
by tkuchida
rotateData() and convertMillimeters2Meters() are functions written in Matlab (
https://github.com/opensim-org/opensim- ... C3D.m#L138 and
https://github.com/opensim-org/opensim- ... C3D.m#L154). You can implement them in Python if you need them there.