My week started with some design discussion with my mentors @ellisonbg and @flacjacket. We had a preliminary discussion on how we should go about implementing the Tr (trace) operator.
Based on the preliminary discussion, I submitted a PR 1333 purely for review and got some useful comments. I went back to work and addressed almost all the comments/suggested provided and I have updated the PR with my new changes.
As it stands now, the current PR 1333 has the basic functionality needed for Tr operation. This version still does not handle reduced trace operations and also does not use any options passed through **kwargs. Even, printing will have to be fixed. But, barring any major issues after few more iterations the coming week I am confident this PR can be merged.
So, assuming I will not be adding any more features to the PR, my plan for next week is make sure this PR gets accepted. Since, I am at the summer school next week, I may not be doing any other new coding activity. So, my minimal goal is to make sure this PR is merged by end of next week.
I plan to branch out of this PR, to work on the following activities during next 2 weeks(mostly week after):
1. Fix printing for Tr operator. Currently, the printing is pretty crude. I will also add examples for Notebook along with this task.
2. Fix the is_number operation ( based on what suggestions I get). I am still to understand what "is_number" means to sympy and what scenarios Tr needs to handle. I need to work on this property, since this property is called from the base classes for when 2 Tr objects are added through Add(*[Tr(args,indices)]) operation.
- Integrate currently existing Qubit logic for partial trace operation.
The above 3 tasks should go into the next PR.
4. Meanwhile, I would like to chat with my mentors and about all use cases (general/special) that we will have to address to TensorProducts wrt to density operators and eventually partial trace operations.
Edit 1: Update (1) to include Notebook.