Hello Jason, I am happy to inform you that I have written a complete proposal for the above draft. Here is the proposal <https://drive.google.com/file/d/1p6kUBIbPrr-Orf9MfkN3qKFPEjx0QVBh/view?usp=sharing> .
Waiting eagerly for your review. Best Regards, Rushabh Mehta On Sunday, 16 March 2025 at 10:24:44 UTC+5:30 Rushabh Mehta wrote: > Dear Jason, > I would love to get feedback on the idea so far. I will be able to further > refine my proposal and have a better direction to step in. > Please take a look at my above suggestions. > Thank you. > Best regards, > Rushabh Mehta > > On Tuesday, 11 March 2025 at 16:52:53 UTC+5:30 Rushabh Mehta wrote: > >> Hello Jason, >> >> Thanks for pointing me towards OpenSim. It is an interesting tool, and >> I've spent some time researching it. I now have a much clearer >> understanding of the types of wrapping geometries and pathways commonly >> used in musculoskeletal models. >> >> OpenSim supports several standard wrapping geometries such as: >> >> - *Cylinders* (for modeling wrapping around bones like the humerus) >> - *Spheres* (for smooth rounded surfaces) >> - *Double Cylinders* (for modeling wrapping around parallel bones, >> like the radius and ulna) >> - *Tori* (for curved wrapping surfaces like joint capsules) >> - *Ellipsoids* (for complex bone geometries like the hip joint) >> >> In OpenSim, the shortest muscle path is calculated using a combination of >> *points* and *wrapping geometries*. It doesn't solve for the geodesic >> (shortest path on a curved surface) explicitly but instead uses a >> combination of line segments and wrap points, and then numerically computes >> everything needed. >> ------------------------------ >> >> *How This Informs My Proposal* >> >> Given this, I think SymPy Mechanics can be enhanced in the following ways: >> >> *1. Expand WrappingGeometry to Support More Surfaces* >> >> - I propose adding WrappingEllipsoid and WrappingTorus. These >> geometries will extend the existing WrappingGeometryBase class, allowing >> users to model more complex muscle-bone interactions. >> - This will align closely with OpenSim's existing wrap objects, >> making SymPy more compatible with existing biomechanical tools like >> OpenSim. >> - Additionally, once these geometries are supported, extending SymPy >> Mechanics to more complex biomechanical models would become more >> straightforward. >> >> ------------------------------ >> >> *2. Introduce GeodesicPathway for Shortest Path Calculation* >> >> - Instead of relying on discrete wrap points (like OpenSim), I >> propose implementing a GeodesicPathway class that computes the *exact >> shortest path* along the surface of a geometry using differential >> geometry. >> - For example: >> - On a sphere, the geodesic would be a great circle. >> - On an ellipsoid, the geodesic can be computed symbolically using >> SymPy's dsolve() to solve the geodesic differential equation. >> - On a cone, the geodesic would follow a logarithmic spiral path. >> - By computing the geodesic symbolically, we could potentially offer >> a higher level of accuracy and analytical insight for musculoskeletal >> simulations. >> >> ------------------------------ >> >> *3. Symbolic Force Calculation Along the Geodesic* >> >> - Another key advantage of a symbolic GeodesicPathway is that it can >> directly integrate with SymPy’s force calculation methods (to_loads()), >> allowing users to generate symbolic equations of motion using Kane or >> Lagrange methods. >> - This could make SymPy uniquely positioned to perform symbolic >> musculoskeletal simulations — something OpenSim does not currently offer. >> >> ------------------------------ >> >> *Queries* >> >> My main concern at the moment is: >> The feasibility of computing geodesics for non-trivial >> surfaces (like ellipsoids or tori) using SymPy's dsolve(). Is it powerful >> enough? >> >> If there are any particular limitations or design choices I should be >> aware of, I would love to hear your feedback. >> Thanks again for your guidance, and I’m excited to keep pushing this >> proposal forward. >> >> Best regards, >> *Rushabh Mehta* >> On Tuesday, 11 March 2025 at 11:26:26 UTC+5:30 moore...@gmail.com wrote: >> >>> Dear Rushabh, >>> >>> Thanks for your interest. Have you researched what kinds of paths are >>> often needed in musculoskeletal models? A starting point would be to see >>> what OpenSim has and what is most commonly used in OpenSim models. If we >>> support the most common types from OpenSim, that would be a good starting >>> point. >>> >>> Jason >>> moorepants.info >>> +01 530-601-9791 <(530)%20601-9791> >>> >>> >>> On Tue, Mar 11, 2025 at 6:47 AM Rushabh Mehta <mehtarus...@gmail.com> >>> wrote: >>> >>>> Hello everyone, >>>> >>>> I have been contributing to SymPy and engaging with the community for a >>>> few months now. I’ve fixed bugs, participated in discussions, and opened >>>> issues. Thus I have gained some familiarity with the codebase, also I have >>>> been programming in Python for 2+ years. >>>> >>>> I'm interested in contributing to SymPy Mechanics for GSoC 2025, >>>> specifically under the project *"Classical Mechanics: Implement >>>> Wrapping Geometry and Pathways for Musculoskeletal Modeling" *as listed >>>> on the ideas page. >>>> >>>> I've been exploring and studying the existing WrappingCylinder and >>>> WrappingSphere classes, as well as the LinearPathway and ObstaclePathway. >>>> I >>>> believe a valuable addition would be: >>>> >>>> 1. *WrappingEllipsoid* and *WrappingCone*: These can model more >>>> complex muscle wrapping geometries around bones/joints, extending the >>>> current wrapping surfaces. >>>> 2. *GeodesicPathway*: This pathway would compute the shortest path >>>> along a curved surface (any instance of a wrapping geometry) between >>>> two >>>> attachment points, capturing more realistic muscle routing in >>>> biomechanical >>>> models. >>>> >>>> *Implementation Plan:* >>>> >>>> - *WrappingEllipsoid & WrappingCone:* >>>> - Extend the existing WrappingGeometryBase class, ensuring all >>>> the required methods are implemented. >>>> - Define parametric equations for the surfaces and add methods >>>> to compute geodesic lengths and end vectors. >>>> - *GeodesicPathway:* >>>> - Implement a general GeodesicPathway class that computes the >>>> shortest path along a surface (geometry) given two attachment >>>> points. >>>> - Use differential geometry principles to compute geodesic >>>> equations and solve them symbolically using SymPy’s dsolve. >>>> - Integrate force calculation along the geodesic (similar to >>>> LinearPathway.to_loads method) so that it can be used to generate >>>> equations >>>> of motion with Kane/Langrange method. >>>> - Ensure it can interact with any WrappingGeometry object. >>>> >>>> As with any software development endeavor, these additions will be >>>> accompanied by exhaustive tests, documentation and example usage. >>>> >>>> I think these additions could significantly enhance the biomechanics >>>> modeling capabilities of SymPy, especially for musculoskeletal simulations. >>>> >>>> I'd love to hear any feedback, especially on: >>>> >>>> - The feasibility of computing geodesics symbolically especially in >>>> more complicated scenarios using dsolve. >>>> - Anything I may have overlooked. >>>> - Any suggestions on aligning this work with SymPy's current design. >>>> >>>> Would this contribution align well with SymPy's current roadmap? I'm >>>> open to any guidance or suggestions to refine my approach. >>>> >>>> Thanks! >>>> Rushabh Mehta >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "sympy" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to sympy+un...@googlegroups.com. >>>> To view this discussion visit >>>> https://groups.google.com/d/msgid/sympy/48b5a2ee-ffe7-4085-811f-0139b583924dn%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/sympy/48b5a2ee-ffe7-4085-811f-0139b583924dn%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/sympy/289112ce-95df-461e-9d4c-8800784267cbn%40googlegroups.com.