Team:Wellesley Desyne/Notebook/SravantiNotebook
From 2013.igem.org
Contents |
Week 2: May 28 - 31
This week, I began my research at the Human Computer Interaction lab. It was a great introduction to synthetic biology, and I enjoyed getting to know my labmates.
Tuesday:
Today, we received an introduction to the lab and the projects we are working on this summer. I was assigned to Tabula, which is based off of a previous project in the lab, G-nome Surfer. There’s a user testing for Tabula next week, so I got caught up on what has been done so far and what my tasks were for the near future. I dived into the code for G-nome Surfer to get familiar with it and to formulate the code for Tabula. It was my first experience coding with C# and XAML, so it was tricky, but I anticipate the coding becoming easier.
Wednesday:
Today, I continued coding for the Tabula project. We’re redefining G-nome Surfer, so what I’m doing is using elements of that project to make a similar project for Tabula. In particular, I worked on making the chromosome bar for a specific mouse genome visible, which was much harder than I thought it would be. Much of the code is intertwined with other code, so it’s not as simple and just copying and pasting code. I got the bar to be visible at the end of the day, which was nice, but I still have a lot of work to do. First, I have to get a specific gene to show up in the chromosome bar, and then I have to create a second chromosome bar. Tomorrow, we head to MIT, so that’ll be good to have a more formal introduction to synthetic biology.
""Thursday:
Today, we headed to MIT for the Bio Builder workshop with Natalie Kuldell. We learned about the basics of synthetic biology as well as the motivation to study it. The last time I took biology was a couple semesters ago, so it was nice to try wetlab work again and get a feel for how synthetic biologists do their work. It was particularly helpful to note the parallels between computer science, or engineering in general, with synthetic biology. It was also nice to see what other iGEM teams have done in the wetware track in the past to understand the needs of synthetic biologists for our research. One thing I thought was interesting was that during our experiments in the wetlab, what frustrated me a little was the fact that I was simply running through the procedure without some visual reference as to what was actually going on in the cell. I understood at a high level that we were trying to turn cells different colors, but I think it would be nice to actually visualize the process rather than simply mixing together different solutions with cells. In the afternoon, we made a synthetic cell using “parts” from the MIT parts registry with the help of a computer program. It was nice to create a cell, but again, I felt as if I was simply running through the procedure without any deeper understanding of what was going wrong. I think it could also be interesting to build upon this computer program to show different combinations of parts that could work and provide an explanation as to why it works, which I believe would be more meaningful than trial and error, which is what I would have reverted to had I been working through the program; however, we are already implementing a similar design idea with Eugene DeSyne. Overall, I thought it was a good crash course to synthetic biology and I learned a lot.
Friday:
Today, I continued my work on the chromosome bar. Bringing in the information for the genes is very complicated, as I have to bring in lots of extra code. However, I think after I fix all of the errors and import the other files from G-nome surfer, it should go more smoothly.
Week 3: June 3-7
Monday:
Today, we traveled as a team to Boston University to meet with their iGEM team and to learn more about synthetic biology. We built upon our knowledge from Friday’s BioBuilder workshop at MIT and learned specifics about how plasmids are created and details about the transcription and translation processes. It was nice to learn from other students, and to see how they view synthetic biology and the iGEM competition from a wetlab standpoint. In the afternoon, we worked on coding in Eugene, which is a computer language built specifically for designing synthetic biology devices. As a programmer, I appreciated the close correlation between Eugene and Java, but I also see the challenges for synthetic biologists who may not be familiar with programming in C or Java. It was also valuable to work through specific Eugene circuits with BU team members - seeing how they use parts, properties, and rules provided good insight for our team to start brainstorming for the Eugene DeSyne project.
Tuesday:
We also spent today at Boston University collaborating with their iGEM team. Today, we learned about ideas for their iGEM projects and presented our ideas as well. The nature of their projects was very different from ours; even so, their work related to ours in several ways. They are looking to expand and characterize the MoClo library as well as identifying different optimizations of genetic circuits, and we are trying to provide a search engine tool for synthetic biologists to find the optimal genetic circuit with given constraints. Through the past couple days, I’ve seen that we could have the same goal, but approach that goal in two very different ways based on either wetlab or computational techniques. It was also helpful to gain feedback from the BU team with our project ideas so far. Learning about what they value in synthetic biology tools and what they find most useful will be invaluable when coming up with prototypes for our projects in the coming days.
Wednesday:
Today was my first day on the Eugene DeSyne team, as I moved from the Tabula project. Using the feedback from BU as well as a few ideas that the lab came up with previously, we came up with a couple of prototype designs for Eugene DeSyne, which will act as a search tool for synthetic biologists to search for genetic devices and refine their searches based on specified parameters, such as rules that include/exclude genes, specify the order of parts, etc. The first design we came up with used multiple panels that mimicked the workflow of Eugene but without actually writing code. We liked the visual of splitting results into different “piles” based on categorization and incorporated this idea into both of our design prototypes. Our second design emphasized the focus the rule parameters biologists will be looking for by dedicating half the screen to selecting rules, creating them, and turning them “on and off”, although the latter feature is not supported by Eugene. These are very preliminary ideas, and I think having more input from the BU team will help narrow down which features we would like to include in Eugene DeSyne and which direction to take our future prototypes.
Thursday:
Today, we continued to brainstorm ideas to further develop our ideas. We delved into greater detail with both of our designs, and ran through example queries. With some direction from Orit, we decided to focus our efforts on visualizing first-order logic in different ways. We came up with a refined user interface, but we'll probably refine our ideas tomorrow.
Friday:
Today, we let go of our limitations when designing. Casey came to talk to us about our designs, and afterwards, we were inspired to not let something like a web interface limit our design. In a sense, we started from scratch, and came up with a completely new design. We have an icon based idea now, which uses elements from games such as Little Alchemy to overlay icons on top of one another to create new icons. We created sample icons for each property to overlay on icons for each part, which we felt was more intuitive for a novice user and was much easier than actually coding. We broke away from the conventions of visual programming language, and although our project is heading in a different direction, I'm really happy with it because it's more creative and exciting than our previous designs, which I think will be great when it comes time to actually code our design.
Week 4: June 10-14
Monday:
Today, after coming up with our icon idea on Friday, we came up with an alternative idea. After some direction from Orit, we decided to investigate two projects: the MoClo design from last year's iGEM project, and UML, or Unified Modeling Language. We drew more inspiration from UML and its organized design. We liked the way it compartmentalized the properties and methods that applied to an object. While we were inspired by such a design, we decided to create a tree, which was very different from our icon idea. The tree creates a hierarchy of devices, part types, and specific parts, and the rule creation is implicit within the tree - we'll develop it more tomorrow!
Tuesday:
Today, we iterated on yesterday's design and developed it further. We thought of a user interface and thought of how to make our design more modular. Additionally, we worked through specific queries, and how we would actually search for things using both the icon and tree designs, which was helpful for our initial debugging and refining our design.
Wednesday:
Today, we thought through more of the details of both of our designs. We created a table which translated from our visual language (in this case, either the tree or icon designs) to Eugene code, and translated that into regular expressions. Looking at the technical details revealed even more details that we hadn't considered before, so we iterated on our designs again. Learning about regular expressions took some time though, so most of the translation was tricky and took some time. Tomorrow, we'll be preparing for our brainstorming session with BU! [File:Brainstorming.jpg|left|thumb|Our brainstorming at the moment]]
Thursday:
Today, we created our materials that we're going to present to the BU team tomorrow during our big brainstorming session. We created a pamphlet which stepped through specific queries using the icon design, detailing step by step what the user interface would actually look like. Additionally, we created a large poster of our tree design, which illustrated a specific query. Additionally, we started giving some thought as to how we were going to display the search results. After some time, we came up with two preliminary ideas. One idea was a "pile" idea, which sorts results into piles, which also acts as a filtering tool. Our second idea was to create a tree of results, which has branches for each option/filter that the user could then sort through. However, we then ran into the issue of having thousands of search results, so we don't know how we'll deal with that scenario yet - hopefully the brainstorming session will help us out with that!
Friday:
Today was our big brainstorming session! We presented both our icon and tree ideas to the BU team, and we got a lot of constructive and helpful feedback. We got a lot of mixed reviews - people loved the icon idea for rule making, but appreciated the tree's structure for viewing the circuit as a whole - they wanted to have both interfaces as well as a way for them to actually see the Eugene code and code if need be. While the designs were met with enthusiasm, there was one major problem that we hadn't considered, which was rules between devices. For example, when certain devices are in a particular system, other devices/promoters are turned off. Overall, this gave us a lot of things to think about for next week, when we iterate on our design and start development.
Week 5: June 24-28
Monday:
Today, we took into account all of the suggestions from last week and refined our design. We then started planning our user interface so that we could start development the next day. We identified the major technological challenges, which trimmed down our design even more as we started to look at what we could realistically design. We settled on a web application, which also means that we have to start learning HTML/CSS as well as JQuery to create the user interface. Tomorrow, we actually start coding, so I'm excited for that!
Tuesday:
Today, we attacked one of the major programming problems we knew we would face when we put together our design, which was drag and drop. By breaking down our design into smaller pieces, we'll be able to divide and conquer and to make what is initially a daunting project into something more manageable. We managed to get the drag and drop function working today with pieces snapping together, but currently just with arbitrary parts. Tomorrow, we'll focus on creating a delete function and adding functionality to our drag and drop.
Wednesday:
Today, we improved the functionality of the drag and drop feature and added a delete function. We also started on a mock up of our web layout and created a simple layout with tabs and a search box. It was a lot of learning about HTML/CSS, but it was a good experience to learn about basic web development!
Thursday:
Today, we continued to refine our mock up and make it presentable enough to show the premise of our user interface and how it would work. Additionally, we continued working on our drag and drop feature and adding more functionality. Today, we also created a video of our paper prototype clearly outlining each step of our project, and this was helpful to not only inform people of the details of our project, but also gave us some clarity as to what we needed to clarify in our design.
Friday:
Today, we took a day off and visited the Museum of Fine Arts with the BU team, which was an enjoyable break to socialize with another iGEM team and to take a break from our programming challenges.
Week 6: July 1-3
Monday:
Today, we clarified the direction of our project. While we were originally planning to do a web application, we decided to emphasize our efforts on a Surface application. We discovered through the past couple of weeks that it was very difficult to get the robustness that we wanted out of a web application, and although that would be more accessible, the programming challenges associated with a web application would take more time than what we had. With that in mind, we still decided to keep a web application, but with less functionality compared to our Surface application. We briefly went back to the drawing board to draw out what the backend should look like as well as redesigning our user interface to take advantage of the Surface's touch screen capabilities.
Tuesday:
Today, we revisited drag and drop! After working on this project in JavaScript, jQuery and Angular JS, we are now tackling the problem in C# for the Surface. We made some final decisions on our user interface and created another paper prototype that is essentially a second draft of what we envision our final product will look like.
Wednesday:
Today, we worked on drag and drop more - we finally got it to work over the long weekend, which was really exciting! Looking ahead, we started to plan for more elements of our user interface to have more functionality, such as having multiple panels update when one is changed. However, before that, I'm off to enjoy the July 4th fireworks in Boston, for which I'm really excited!
Week 7: July 8-12
Monday:
Today, we continued working on the user interface - we worked on data binding to have multiple panels after one panel is updated. We looked at past code to come up with something that could work, and in the meanwhile, the rest of our team worked on the shutters for our design to enable users to see multiple views at once. From a research perspective, this is what we're interested in: how does viewing multiple panels better users' understanding of data? We'll keep developing our product, as we need to have a functional prototype by Wednesday to present to the BU team.
Tuesday:
Today, we were able to get the data binding to work! We learned our lesson: hard coding can be a bad idea, as it creates issues that we can't detect! We databound the objects that we were dropping into the tree panel so that there was a response in the behavior panel, which was really nice after a frustrating day.
Wednesday:
Today, we worked on the part view and making sure it could display the SBOL picture and part name in the parts dragged to our tree panel instead of the arbitrary parts we'd been using until now. After databinding the part name and image to the part view, we began looking at how to dynamically change the part view depending on what part it is.
Thursday:
Today, we picked up where we left off yesterday to dynamically change the part view by pulling in information from the parts registry. It was more difficult than we thought it would be, but we're still making progress towards having a functional product sometime in the near future. We're able to display the part information from the registry, which is great, but we need to clean it up a bit.
Friday:
Today, we said goodbye to most of our high school interns! They've been helping out the zSpace and Art teams, and it'll be sad to see them go. We are now pushing for having a fully integrated product that is able to construct a basic inverter about a week from now, so it's truly crunch time! I'm now working on a popup that allows the user to edit properties of generic parts to search for devices based on direction, length, and properties.
Week 8: July 22 - July 26
Monday:
Today, we're starting work on our poster and abstract! Everyone in our summer research program is presenting a poster of our research to the Wellesley community, so we're presenting on the progress we've made so far in developing Eugenie and our future plans (AKA iGEM!). I also have made some progress with the popup - when a user edits a field, the part actually updates to reflect what it's repressed by, induced by, etc, which is valuable for users who want to use custom parts in their search.
Tuesday:
The work on the popup continues! Tiffany has been doing a great job with writing the abstract and designing the poster, which leaves me with more time for development. I worked on the styling of the popup - since I made it a scatterviewitem, its default properties are to resize and rotate as the user wants, so to make it more standardized, I took away those properties to have a smoother user experience. I also fixed the color scheme so that it matches the rest of the Eugenie color scheme.
Wednesday:
Today, I worked on fixing some bugs with the popup, and restructured how we scraped the web pages for the registry info. Earlier, we were getting the source code and looking for certain HTML tags to get the information that we needed, but now, we're using the Registry API, which is really great because the information is organized in a way that makes the scraping process much more efficient and less error-prone.
Thursday:
More work on the popup! Fixing inconsistencies, styling, and making it respond to touch. We also presented Eugenie so far to Natalie Kuldell, who we collaborated with earlier this summer to learn more about synthetic biology as well as a high school iGEM teacher. It seemed like they really liked the product so far, so we're excited to see how it will be received at iGEM!Friday:
Today, we presented our work so far to the CS/Math/Physics community at Wellesley. We practiced our presentation in the morning and then presented later that afternoon. We're pushing for a fully functional program that can make an inverter by Monday, so it's going to be a busy weekend!
Week 9: July 29 - August 2
Monday:
We made more progress this weekend than we did for the past couple weeks combined! Eugenie has gone leaps and bounds from where it was on Friday. Over the weekend, I added an undo functionality so that the user doesn't have to restart the program if a mistake is made in the device building process. I also added a root so that users can name their design. Additionally, users can now name their custom parts which can also be added to a collection of parts that the user can access without having to search/edit each part individually each time.
Tuesday:
Today, I worked on adding a small molecule functionality, so that when users want to specify that a part is induced by a small molecule, they can do so. Additionally, they can specify what the small molecule is produced by. Now that we have a functioning framework, it's becoming easier and easier to add functionality!
Wednesday:
Today, I improved the search function, or rather, actually made it a search function. Prior to today, users could only search by part type (e.g. "promoter", "terminator", etc). Users can now search by part name or properties such as inducible, repressible, etc, so it's definitely an improvement over what it was earlier!
Thursday:
Today is our last day of summer research! We presented our work to the Wellesley community, and overall, we got a very positive reaction for our program. In particular, people appreciated the fact that they didn't have to program at all and the visual representation of synthetic biology parts. Additionally, the fact that the corresponding Eugene text highlights when a part is selected was highly appreciated. Overall, we've made a lot of progress over the past few weeks, and I'm very proud of where Eugenie is right now! I'm also going to miss working with our team so much. To the left I have a GIF created by Google+ of us walking to starbucks, which was one of several traditions this summer.