LOCC Interactive Manim Project



Note: I've been working on this project since February 2024, but I've decided to start making logs on my work starting July 7th 2024.

7/7/24: Today I’m trying to figure out why the full manim scene I wrote is not being rendered in the GUI. I believe this problem might be coming up because of resource limits, i.e., my environment has memory/CPU constraints that are impacting the execution of the program. To solve this bump, I am trying to implement the GUI in one thread, and the manim scene in another. Thankfully I learned about multi-threading in my Software Methodology (CS213) class this past semester, so this concept isn’t too daunting. After a bit of debugging and trying to figure out how video threads work specifically, I’ve been able to implement the thread logic correctly, but the SAME problem remains! Only 7 out of the (about) 51 animations of the manim scene are being generated. This is frustrating, but we were able to properly (I believe) implement the two threads, so that’s still a win because I think it’s a good thing to know how to do, and will probably be helpful down the road. Tomorrow will require some digging to find out what's going on.

7/20/24: It's been a second! I have been working on the project and I have a few updates. I've successfully been able to implement the separate threads for the GUI and Video parts of the project! Also, for a few days I was stuck on another part of the video not being generated. This was really frustrating because I thought implementing the threads would have solved all problems related to the video not being fully generated. However, after writing a few print statements here and there, I discovered that I was missing an attribute for one of the objects I was dealing with... essentially I was using "some_obj.wrong_attribute" instead of some_obj.correct_attribute". This may sound silly but understanding quantum attribute can be a little tricky! This made all the difference in the world because now the program is up and running and the video is being fully generated! Now, I'd like to spend a little more time developing more of the frontend to make the application more user friendly. I'll update when that's done, take care!

7/21/24: Today I've been focusing on the UI. I've rearranged some elements so that they make sense from the user stand point. I've started this thing where I make a little "to do list" to be more aware of what specific task I'm currently working on and the progress on it, so I'll attach my list from today below. The wording for the task might not make sense but it's just something for me to jot down real quick to be more focused on the task! At this point I think I've cleaned up a lot with the UI, so next main goal is to focus on the manim video and possibly saving previously generated videos for the user to refer to... more on that later!

To Do 7/21

9/19/24: Wow it's been almost 2 months since I've updated this page. A lot of progress has been made since then. Most of my work has been on the backend side of things. Fixing up random bugs, making sure the some of the internal methods of the protocol are syncing with the GUI correctly, etc. I'm still working on these changes, so tomorrows entry will be more detailed. I'm also planning on making a little video of the current functionality of the GUI so that's exciting!

GitHub for the project

9/20/24: Today's debugging was a little tedious. I made major changes to the organization of the code. Before, to just get the program up and running I created everything, all the control components, view components, etc. in the GUI python file. This was okay for me starting off but now there's over 600 lines of code! Now, I am organizing the app to have a Model View Controller architecture. This was something I was putting off, and frankly, it should've been one of the first things I did. Now, I am able to easily locate an issue, make changes, and streamline the programming process. It's great! There's still a little more to do, I have to finalize the locc protocol and execute measurement controllers. I'm planning on getting this done tomorrow, as well as editing the internal manim script. Today I was able to get the k party controller working, so that's a major chunk complete already!

9/21/24: Got most of the locc controller done today. Execute protocol controller up next for tomorrow!

9/23/24: I've been able to make most of the execute protocol controller. For now, it's good, now I'm going to move onto allowing the user to create the quantum state object. More on this tomorrow.

9/24/24: Little crunched on time today but I was able to get some of the "execution specifics creator" part of the ui complete. Next steps: finalize execute protocol controller (it's taking so long!) and allow user entry of quantum state parameters.

9/25/24: Today was heavy on the quantum. Essentially, there are going to be multiple ways for the quantum state to be represented: statevector, densityMatrix, quantumCircuit or graph state. Today I was focusing on getting the statevector representation done. I think I'm nearly there, just need to finish up some changes within the k_party_controller and we'll be great.

9/27/24: Two main classes I was working with today: k_party_controller and quantum_state_controller. Making major changes in how the k_party_controller is making the quantum state for the entire k_party. More on this soon.

9/28/24: I believe I have the k_party and quantum_state_controller issue fixed. Now, for some reason the locc_operation object is not being created.

9/29/24: Issues with the locc procotol object being created. Spent some time working on that bug.

10/1/24: Finally got a majority of the bugs out of the way so I can start fixing the manim script.

10/2/24: Started re-working the manim script-- trying to make it more intuitive with the locc_controller.

10/7/24: Back after a bit! Very close to finishing the manim script. Had to change the execution flow so we're executing the protocol right in the manim class itself.