Tuesday, July 16, 2013

GSoC Report Week 4

Week four is over, and it has been an exhaustive week. I had been working parallely on two instances of project, which are equally relevant.
One is to write a complete extended illustrative example, which involved simulating a three link conical pendulum.
The current work on this problem can be checked here:


The problem is a quick implementation of the whole project, and a very naive one. It has some dirty code, and some hacks, which would need addressing during the implementations in the actual project.

The example is in a stable state, and I have been able to produce static visualizations. With a small change in Javascripts. It can be readily converted to animations.
I have created some instances of classes, according API, with only basic functionality, which has helped in bringing the illustrative example(three link conical pendulum) to life.
The python part of the example is complete, as I have been able to create the JSON file containing the simulation data from the problem.
As far as javascript part is concerned, Only thing left is to animate the visualization by properly reading the simulation data from the JSON object and applying it to the static visualizations.
The simulation data is being stored in the form of a (4 by 4) transformation matrices, which are then mapped to a visualization frame.
the frame will be calling the animation matrices from the javascript side and render them.

There has been certain issues on converting the symbolic transformation matrices to the numpy, or numerical matrices. I tried using lambdify, but ran into some problems.It seems that lambdify doesnt work properly with the time dependent symbols, i.e it works fine on symbols like:
'a', but fails on 'a(t)'.

Right now for the example I am using SymPy's evalf method, with substitutions for the symbols.
But it is not considered as efficient as lambdify, so I need to figure out the way to resolve the problem.

The other part which I am working is to write the unittests for the project. It is getting a bit delayed,
and I am two or three days behind the stipulated timeline. I am hoping to cover it up in the coming two weeks, before the midterm evaluations.
The tests seems to be coming much easier, once I have done the three link pendulum example.
The example has helped me a lot in determining how different classes should be working, so I am a little more confident on the implementations.
It is also because I have already implemented the basic functionality of nearly all classes, I just need to flesh them out, provide some more functionality to them, and they would be ready to be merged into the  master.

In a nutshell, this week has been  a little exhaustive, but now I feel running towards my milestone at a much better pace.

Cheers

Monday, July 8, 2013

GSoC Report Week 3

So, week three has also came to an end.
Main considerations for this week were to write some unit tests, which would be determining the way main coding is to be done.
As per the timeline,  all tests for Python side, should be complete by the coming week, i.e. which has started from today.

As for now, I have almost completed tests for Shape class, and I have written some tests for VisualizationFrame. After that I would focus on tests for Scene class, which would act as a manager class, for holding and manipulating JSON data from the Python side, as well as be able to display output in IPython output cells, as well as fire up a server in case of Python interpreter.

Scene and VisualizationFrame are very important classes for this package. They make up the majority of the API for the visualization implementations.
Also there has been a little confusion on the extent of modularity the package would/should provide.

Hopefully in a few days things would be more clear, so that I would be able to write tests more exhaustively according to the same.

Anyways regarding general stuff, the summer period is amazing, and I am getting good responses from my mentor, and also huge support from the community people. So, it makes things easier to do, when we have so much people to help out there, which is also one of the perks of the open source environment.

Cheers

Tuesday, July 2, 2013

GSoC Report Week 2

So, week two has also ended.

I have found several ideas and new features to implement from various people in the community.
We have finished fleshing out the API, although a few things need to be fleshed out.

As recommended from my mentor, I would be doing test-driven development for the project.

We have discussed the base classes , and the coming two weeks would be dedicated to writing sole tests for the classes, related to python part of the project.
As a part of improvised timeline, we have decided to keep this month of July, for coding the python side of the project, and after midterm evaluations,. I would be working on the Javascripts.

The interaction between the Python and Javascripts would take place with the JSON objects, either written in the form of JSON Objects or as written to files.

This approach would help to provide required level of modularity to the project.
Another major approach to modularity is to make the visualization module(from python side) independent of the mechanics package, i.e. it need not know whether the visualization data comes from sympy.physics.mechanics, or from any other software which could provide the output in the form desired tby the module.
Although the focus is to make the project as mechanics friendly as possible, but still trying to maintain the modularity, and every major API decision is being taken with this point in view.

This week, I will focus on writing some tests, and commit them to the repo.

Cheers






 

Monday, June 24, 2013

GSoC Report Week 1:

 Finally, the much awaited summer coding period has started. I am already feeling very enthusiastic about it.
For the first week, I have been working on an detailed API, alongwith functions(their arguments and return values). Everything is being fleshed out.

Also we(other PyDy members) have been holding discussions on various facets of implementations, how and what would be done for effective visualizations.

An illustrative example has also been made, which utilizes different methods from the new API, to demonstrate the complete workflow.
The illustrative example can be checked here:
https://github.com/PythonDynamics/pydy_examples/pull/11

And the API is in development form and can be checked here:
http://pydy.org/visualization_temp_api

Once the API is in a more finished form it can be ported to a more relevant location(link).
In the coming week I hope to write some functions following the API, and related documentation and tests too.

Cheers,

 







Friday, June 14, 2013

First Step(Summer is Coming!!)

Coding Season is starting from 17 June, and community bonding period has been a good time, to connect with the people from the organization, and some brainstorming sessions on IRC on when and how things should be done.
 Some things have been sort out, and  some remains to be, but hopefully those will be sorted soon too.


Meanwhile I have been able to write a example, in the form of an IPython notebook, which although loosely implemented, describes the workflow we intend to accomplish in this coding season.

The example is based on the simulation of a simple mass spring system.

The workflow comprises of following steps:

1) Defining basic symbols (mass,gravity,stiffness etc.)

 2) Generate a Particle object, using built in mechanics Particle class.(sympy.physics.mechanics.Particle)

3)Define forces on particle.

4)Generate a Kane object for the particle.

5)Utilizing Kane object to generate symbolic equations of motion.

6) Using partially implemented code generation methods to generate numerical solutions to the equation of motion of the particle.

7) Passing the numerical values to the roughly implemented Javascript methods to simulate the motion in the output cell of IPython notebook.


Looks good so far. Feeling excited to start the coding session, writing some codes!! ..




Tuesday, May 28, 2013

Hello World

This is my first attempt to blogging. My blogging career(so as to say) marks with the selection in the Google Summer Of Code 2013, where I would be working in Python Software Foundation.

This blog will serve to provide an insight, and updates related to progress of my project, which would commence on 17th June.

Till then, waiting from my Google T-Shirt ...
Cheers.