Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Branch for 4.4 release #1368

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ jobs:
with:
repository: opensim-org/opensim-core
path: 'opensim-core'
ref: 'branch_4.4'

- name: Cache opensim-core-dependencies
id: cache-dependencies
Expand Down Expand Up @@ -156,7 +157,8 @@ jobs:
with:
repository: opensim-org/opensim-core
path: 'opensim-core'

ref: 'branch_4.4'

- name: Install packages
run: |
brew install cmake pkgconfig autoconf libtool automake wget pcre doxygen
Expand Down Expand Up @@ -301,7 +303,8 @@ jobs:
with:
repository: opensim-org/opensim-core
path: 'opensim-core'

ref: 'branch_4.4'

- name: Install packages
run: sudo apt-get update && sudo apt-get install --yes liblapack-dev freeglut3-dev libxi-dev libxmu-dev doxygen python3 python3-dev python3-numpy python3-setuptools

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
LBL_ProductInformation=OpenSim 4.3
currentVersion=OpenSim 4.3
LBL_ProductInformation=OpenSim 4.4
currentVersion=OpenSim 4.4


Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 4 additions & 8 deletions Gui/opensim/modeling/src/org/opensim/modeling/MocoTrack.java
Original file line number Diff line number Diff line change
Expand Up @@ -673,10 +673,8 @@ public void setMarkersReference(TableProcessor markers) {

/**
* Set the markers reference directly from a TRC file. By default, the<br>
* marker data is lowpass filtered with a 6 Hz cutoff frequency, but you<br>
* may set any frequency using the optional argument. If the markers data<br>
* is in millimeters (detected via the 'Units' metadata tag), then it is<br>
* converted to meters.<br>
* marker data is low-pass filtered with a 6 Hz cutoff frequency, but you<br>
* may set any frequency using the optional argument.<br>
* Note: Overrides any existing TableProcessor for 'markers_reference'.
*/
public void setMarkersReferenceFromTRC(String filename, double lowpassFilterFreq) {
Expand All @@ -685,10 +683,8 @@ public void setMarkersReferenceFromTRC(String filename, double lowpassFilterFreq

/**
* Set the markers reference directly from a TRC file. By default, the<br>
* marker data is lowpass filtered with a 6 Hz cutoff frequency, but you<br>
* may set any frequency using the optional argument. If the markers data<br>
* is in millimeters (detected via the 'Units' metadata tag), then it is<br>
* converted to meters.<br>
* marker data is low-pass filtered with a 6 Hz cutoff frequency, but you<br>
* may set any frequency using the optional argument.<br>
* Note: Overrides any existing TableProcessor for 'markers_reference'.
*/
public void setMarkersReferenceFromTRC(String filename) {
Expand Down
153 changes: 21 additions & 132 deletions Gui/opensim/modeling/src/org/opensim/modeling/opensimMoco.java
Original file line number Diff line number Diff line change
Expand Up @@ -324,23 +324,16 @@ public static TimeSeriesTable createExternalLoadsTableForGait(Model model, MocoT

/**
* Calculate the requested outputs using the model in the problem and the<br>
* provided states and controls tables.<br>
* provided StatesTrajectory and controls table.<br>
* The controls table is used to set the model's controls vector.<br>
* We assume the states and controls tables contain the same time points.<br>
* We assume the StatesTrajectory and controls table contain the same time<br>
* points.<br>
* The output paths can be regular expressions. For example,<br>
* ".*activation" gives the activation of all muscles.<br>
* <br>
* The output paths must correspond to outputs that match the type provided in<br>
* the template argument, otherwise they are not included in the report.<br>
* <br>
* Controls missing from the controls table are given a value of 0.<br>
* <br>
* If you analysis depends on the values of discrete variables in the state,<br>
* you may provide those values via the optional argument<br>
* "discreteVariablesTable". This table should contain column labels with the<br>
* following format: &lt;path_to_component&gt;/&lt;discrete_var_name&gt;. For example,<br>
* "/forceset/muscle/implicitderiv_normalized_tendon_force".<br>
* <br>
* Note: The provided trajectory is not modified to satisfy kinematic<br>
* constraints, but SimTK::Motions in the Model (e.g., PositionMotion) are<br>
* applied. Therefore, this function expects that you've provided a trajectory<br>
Expand All @@ -349,64 +342,27 @@ public static TimeSeriesTable createExternalLoadsTableForGait(Model model, MocoT
* For example, in a model with a patella whose location is determined by a<br>
* CoordinateCouplerConstraint, the length of a muscle that crosses the patella<br>
* will be incorrect.<br>
*
*/
public static TimeSeriesTable analyzeMocoTrajectory(Model model, TimeSeriesTable statesTable, TimeSeriesTable controlsTable, StdVectorString outputPaths, TimeSeriesTable discreteVariablesTable) {
return new TimeSeriesTable(opensimMocoJNI.analyzeMocoTrajectory__SWIG_1(Model.getCPtr(model), model, TimeSeriesTable.getCPtr(statesTable), statesTable, TimeSeriesTable.getCPtr(controlsTable), controlsTable, StdVectorString.getCPtr(outputPaths), outputPaths, TimeSeriesTable.getCPtr(discreteVariablesTable), discreteVariablesTable), true);
}

/**
* Calculate the requested outputs using the model in the problem and the<br>
* provided states and controls tables.<br>
* The controls table is used to set the model's controls vector.<br>
* We assume the states and controls tables contain the same time points.<br>
* The output paths can be regular expressions. For example,<br>
* ".*activation" gives the activation of all muscles.<br>
* <br>
* The output paths must correspond to outputs that match the type provided in<br>
* the template argument, otherwise they are not included in the report.<br>
* <br>
* Controls missing from the controls table are given a value of 0.<br>
* <br>
* If you analysis depends on the values of discrete variables in the state,<br>
* you may provide those values via the optional argument<br>
* "discreteVariablesTable". This table should contain column labels with the<br>
* following format: &lt;path_to_component&gt;/&lt;discrete_var_name&gt;. For example,<br>
* "/forceset/muscle/implicitderiv_normalized_tendon_force".<br>
* <br>
* Note: The provided trajectory is not modified to satisfy kinematic<br>
* constraints, but SimTK::Motions in the Model (e.g., PositionMotion) are<br>
* applied. Therefore, this function expects that you've provided a trajectory<br>
* that already satisfies kinematic constraints. If your provided trajectory<br>
* does not satisfy kinematic constraints, many outputs will be incorrect.<br>
* For example, in a model with a patella whose location is determined by a<br>
* CoordinateCouplerConstraint, the length of a muscle that crosses the patella<br>
* will be incorrect.<br>
* Note: Parameters and Lagrange multipliers in the MocoTrajectory are **not**<br>
* applied to the model.<br>
*
*/
public static TimeSeriesTable analyzeMocoTrajectory(Model model, TimeSeriesTable statesTable, TimeSeriesTable controlsTable, StdVectorString outputPaths) {
return new TimeSeriesTable(opensimMocoJNI.analyzeMocoTrajectory__SWIG_2(Model.getCPtr(model), model, TimeSeriesTable.getCPtr(statesTable), statesTable, TimeSeriesTable.getCPtr(controlsTable), controlsTable, StdVectorString.getCPtr(outputPaths), outputPaths), true);
public static TimeSeriesTable analyzeMocoTrajectory(Model model, MocoTrajectory trajectory, StdVectorString outputPaths) {
return new TimeSeriesTable(opensimMocoJNI.analyzeMocoTrajectory(Model.getCPtr(model), model, MocoTrajectory.getCPtr(trajectory), trajectory, StdVectorString.getCPtr(outputPaths), outputPaths), true);
}

/**
* Calculate the requested outputs using the model in the problem and the<br>
* provided states and controls tables.<br>
* provided StatesTrajectory and controls table.<br>
* The controls table is used to set the model's controls vector.<br>
* We assume the states and controls tables contain the same time points.<br>
* We assume the StatesTrajectory and controls table contain the same time<br>
* points.<br>
* The output paths can be regular expressions. For example,<br>
* ".*activation" gives the activation of all muscles.<br>
* <br>
* The output paths must correspond to outputs that match the type provided in<br>
* the template argument, otherwise they are not included in the report.<br>
* <br>
* Controls missing from the controls table are given a value of 0.<br>
* <br>
* If you analysis depends on the values of discrete variables in the state,<br>
* you may provide those values via the optional argument<br>
* "discreteVariablesTable". This table should contain column labels with the<br>
* following format: &lt;path_to_component&gt;/&lt;discrete_var_name&gt;. For example,<br>
* "/forceset/muscle/implicitderiv_normalized_tendon_force".<br>
* <br>
* Note: The provided trajectory is not modified to satisfy kinematic<br>
* constraints, but SimTK::Motions in the Model (e.g., PositionMotion) are<br>
* applied. Therefore, this function expects that you've provided a trajectory<br>
Expand All @@ -415,64 +371,27 @@ public static TimeSeriesTable analyzeMocoTrajectory(Model model, TimeSeriesTable
* For example, in a model with a patella whose location is determined by a<br>
* CoordinateCouplerConstraint, the length of a muscle that crosses the patella<br>
* will be incorrect.<br>
*
*/
public static TimeSeriesTableVec3 analyzeMocoTrajectoryVec3(Model model, TimeSeriesTable statesTable, TimeSeriesTable controlsTable, StdVectorString outputPaths, TimeSeriesTable discreteVariablesTable) {
return new TimeSeriesTableVec3(opensimMocoJNI.analyzeMocoTrajectoryVec3__SWIG_0(Model.getCPtr(model), model, TimeSeriesTable.getCPtr(statesTable), statesTable, TimeSeriesTable.getCPtr(controlsTable), controlsTable, StdVectorString.getCPtr(outputPaths), outputPaths, TimeSeriesTable.getCPtr(discreteVariablesTable), discreteVariablesTable), true);
}

/**
* Calculate the requested outputs using the model in the problem and the<br>
* provided states and controls tables.<br>
* The controls table is used to set the model's controls vector.<br>
* We assume the states and controls tables contain the same time points.<br>
* The output paths can be regular expressions. For example,<br>
* ".*activation" gives the activation of all muscles.<br>
* <br>
* The output paths must correspond to outputs that match the type provided in<br>
* the template argument, otherwise they are not included in the report.<br>
* <br>
* Controls missing from the controls table are given a value of 0.<br>
* <br>
* If you analysis depends on the values of discrete variables in the state,<br>
* you may provide those values via the optional argument<br>
* "discreteVariablesTable". This table should contain column labels with the<br>
* following format: &lt;path_to_component&gt;/&lt;discrete_var_name&gt;. For example,<br>
* "/forceset/muscle/implicitderiv_normalized_tendon_force".<br>
* <br>
* Note: The provided trajectory is not modified to satisfy kinematic<br>
* constraints, but SimTK::Motions in the Model (e.g., PositionMotion) are<br>
* applied. Therefore, this function expects that you've provided a trajectory<br>
* that already satisfies kinematic constraints. If your provided trajectory<br>
* does not satisfy kinematic constraints, many outputs will be incorrect.<br>
* For example, in a model with a patella whose location is determined by a<br>
* CoordinateCouplerConstraint, the length of a muscle that crosses the patella<br>
* will be incorrect.<br>
* Note: Parameters and Lagrange multipliers in the MocoTrajectory are **not**<br>
* applied to the model.<br>
*
*/
public static TimeSeriesTableVec3 analyzeMocoTrajectoryVec3(Model model, TimeSeriesTable statesTable, TimeSeriesTable controlsTable, StdVectorString outputPaths) {
return new TimeSeriesTableVec3(opensimMocoJNI.analyzeMocoTrajectoryVec3__SWIG_1(Model.getCPtr(model), model, TimeSeriesTable.getCPtr(statesTable), statesTable, TimeSeriesTable.getCPtr(controlsTable), controlsTable, StdVectorString.getCPtr(outputPaths), outputPaths), true);
public static TimeSeriesTableVec3 analyzeMocoTrajectoryVec3(Model model, MocoTrajectory trajectory, StdVectorString outputPaths) {
return new TimeSeriesTableVec3(opensimMocoJNI.analyzeMocoTrajectoryVec3(Model.getCPtr(model), model, MocoTrajectory.getCPtr(trajectory), trajectory, StdVectorString.getCPtr(outputPaths), outputPaths), true);
}

/**
* Calculate the requested outputs using the model in the problem and the<br>
* provided states and controls tables.<br>
* provided StatesTrajectory and controls table.<br>
* The controls table is used to set the model's controls vector.<br>
* We assume the states and controls tables contain the same time points.<br>
* We assume the StatesTrajectory and controls table contain the same time<br>
* points.<br>
* The output paths can be regular expressions. For example,<br>
* ".*activation" gives the activation of all muscles.<br>
* <br>
* The output paths must correspond to outputs that match the type provided in<br>
* the template argument, otherwise they are not included in the report.<br>
* <br>
* Controls missing from the controls table are given a value of 0.<br>
* <br>
* If you analysis depends on the values of discrete variables in the state,<br>
* you may provide those values via the optional argument<br>
* "discreteVariablesTable". This table should contain column labels with the<br>
* following format: &lt;path_to_component&gt;/&lt;discrete_var_name&gt;. For example,<br>
* "/forceset/muscle/implicitderiv_normalized_tendon_force".<br>
* <br>
* Note: The provided trajectory is not modified to satisfy kinematic<br>
* constraints, but SimTK::Motions in the Model (e.g., PositionMotion) are<br>
* applied. Therefore, this function expects that you've provided a trajectory<br>
Expand All @@ -481,43 +400,13 @@ public static TimeSeriesTableVec3 analyzeMocoTrajectoryVec3(Model model, TimeSer
* For example, in a model with a patella whose location is determined by a<br>
* CoordinateCouplerConstraint, the length of a muscle that crosses the patella<br>
* will be incorrect.<br>
*
*/
public static TimeSeriesTableSpatialVec analyzeMocoTrajectorySpatialVec(Model model, TimeSeriesTable statesTable, TimeSeriesTable controlsTable, StdVectorString outputPaths, TimeSeriesTable discreteVariablesTable) {
return new TimeSeriesTableSpatialVec(opensimMocoJNI.analyzeMocoTrajectorySpatialVec__SWIG_0(Model.getCPtr(model), model, TimeSeriesTable.getCPtr(statesTable), statesTable, TimeSeriesTable.getCPtr(controlsTable), controlsTable, StdVectorString.getCPtr(outputPaths), outputPaths, TimeSeriesTable.getCPtr(discreteVariablesTable), discreteVariablesTable), true);
}

/**
* Calculate the requested outputs using the model in the problem and the<br>
* provided states and controls tables.<br>
* The controls table is used to set the model's controls vector.<br>
* We assume the states and controls tables contain the same time points.<br>
* The output paths can be regular expressions. For example,<br>
* ".*activation" gives the activation of all muscles.<br>
* <br>
* The output paths must correspond to outputs that match the type provided in<br>
* the template argument, otherwise they are not included in the report.<br>
* <br>
* Controls missing from the controls table are given a value of 0.<br>
* <br>
* If you analysis depends on the values of discrete variables in the state,<br>
* you may provide those values via the optional argument<br>
* "discreteVariablesTable". This table should contain column labels with the<br>
* following format: &lt;path_to_component&gt;/&lt;discrete_var_name&gt;. For example,<br>
* "/forceset/muscle/implicitderiv_normalized_tendon_force".<br>
* <br>
* Note: The provided trajectory is not modified to satisfy kinematic<br>
* constraints, but SimTK::Motions in the Model (e.g., PositionMotion) are<br>
* applied. Therefore, this function expects that you've provided a trajectory<br>
* that already satisfies kinematic constraints. If your provided trajectory<br>
* does not satisfy kinematic constraints, many outputs will be incorrect.<br>
* For example, in a model with a patella whose location is determined by a<br>
* CoordinateCouplerConstraint, the length of a muscle that crosses the patella<br>
* will be incorrect.<br>
* Note: Parameters and Lagrange multipliers in the MocoTrajectory are **not**<br>
* applied to the model.<br>
*
*/
public static TimeSeriesTableSpatialVec analyzeMocoTrajectorySpatialVec(Model model, TimeSeriesTable statesTable, TimeSeriesTable controlsTable, StdVectorString outputPaths) {
return new TimeSeriesTableSpatialVec(opensimMocoJNI.analyzeMocoTrajectorySpatialVec__SWIG_1(Model.getCPtr(model), model, TimeSeriesTable.getCPtr(statesTable), statesTable, TimeSeriesTable.getCPtr(controlsTable), controlsTable, StdVectorString.getCPtr(outputPaths), outputPaths), true);
public static TimeSeriesTableSpatialVec analyzeMocoTrajectorySpatialVec(Model model, MocoTrajectory trajectory, StdVectorString outputPaths) {
return new TimeSeriesTableSpatialVec(opensimMocoJNI.analyzeMocoTrajectorySpatialVec(Model.getCPtr(model), model, MocoTrajectory.getCPtr(trajectory), trajectory, StdVectorString.getCPtr(outputPaths), outputPaths), true);
}

}
Loading