Week 2: Activity Summary
This week there was fewer lines of code than last week. But, with this week I have almost(except partial trace) merged all changes from @ellisonbg’s densityop branch and ready to extend the implementation to incorporate other features. Most of the time I spent this week is to review and structure my work for the coming weeks and address comments on previous PR . I have provided a detailed plan below.
Tasks performed this week
1. Responded to and completed all comments on last weeks pull PR1312.
2. Pushed a minor code change branch to my git account. This change handles entropy for general density operators. (I am still waiting for the previous pull request to get merged, since this pull request was branched off that.)
3. Review and understand the partial trace operations and qubit related implementation. Further notes will be prepared for the discussion.
4. Understand current implementation of tensor products to plan work for coming weeks.
My plan for weeks 3,4,5,6 ( based on design discussion we have had regarding partial trace )
(Note, the detailed plan here still meets the timeline outlined in the proposal. The only change is I will be working fewer hours during Week 4(June 10-16), since I am at the summer school. Hopefully, I can contain the work to not flow into later weeks).
Implement/test partial trace methods [ _eval_partial_trace ] and other required methods for following classes:
QubitDensity (name suggestion needed!) : for this I will use the current bit-twiddling algorithm but add detailed test cases.
TensorProduct : Code to handle density operators ( both qubit based, and generic) during expand, mul operations.
TensorProduct : _eval_partial_trace method will split the sub-system to trace. and then based on states inside Tr(|i><k|). [ This needs more discussions during the next few days and during IRC session.]
Sub-classes of ‘State’ : Need to decide which subclasses need and how it should be done.
Symbolic Trace operations and Partial Trace operations.
Changes to qapply for L and R operations and any operations that would be needed based on changes so far. (will also fix the bug identified in PR 1312)
Other related learning activities this week.
I tried IPython Notebook and I absolutely love it. Now, I am using that as my command line interface for running sympy commands and understanding current implementation. The best thing Notebook has done to my workflow is help me save my scratch work and go back whenever I need it. Thanks @ellisonbg.
I did have to jump some hoops to set up Notebook on Ubuntu 11.04, since I had to build a lot of dependencies myself. I plan to blog about it as part of another post. A minor pain point with it is, I need to drag/drop files I want to work on. Wish it gave me an option to type in the URL to a saved notebook rather than forcing me to open a FileManager window to find file to drag and drop.