Team:UCSD Software/Notebook
From 2014.igem.org
Week
Entries
Justin Huang
When Jenhan first approached me about mentoring undergraduate students for a summer software project in synthetic biology, I was initially very excited at the opportunity, but at the same time I was nervous. Many of the students we recruited had very little experience programming, and our project was very ambitious. We spent the better part of the Spring quarter teaching skills to the undergraduates ranging from synthetic biology concepts, to algorithm development, to learning how to read scientific papers. I was pleased and impressed at how quickly the undergraduate students were able to pick up these new skills, and when summer arrived, we were ready to hit the ground running.My undergraduate background was in biology and mathematics, but all of my research experience had been in bioinformatics up to this point. I had never worked on a synthetic biology project either, but after attending IWBDA 2014, I was able to learn more about the field, giving me the confidence to move forward in mentoring this group of undergraduates. Software development was also a new project style for me, so the process has also been a great learning experience for me as well. Much of my summer was spent helping the students develop and analyze algorithms to perform searches and queries across our manually-curated networks. I was also involved with the database schema development to better represent the network we were trying to present. As a member of the Trey Ideker lab at UCSD, I have spent the past year working closely with network biology and tools used in network biology, which has been important to the development of both the back-end database and the front-end application.
Additionally, as a new graduate student, I felt it was an excellent opportunity to begin sharpening my skills as a teacher and mentor to students not only on their projects but also their academic careers. I have found that I myself have a great love for teaching and lecturing, and it has truly been rewarding to see how far many of these students have come this year. This year, we have also been part of UCSD's very first iGEM team ever, which in itself, comes with a unique set of challenges. Our team did all of its own fundraising to pay for the registration costs of iGEM as well as the travel costs to Boston. Along the way, we have also pitched our team in addition to the project itself to several labs at UCSD in hopes of creating a sustainable team for years to come. However, even with these limited resources and barriers to our project's development, particularly in terms of our wet lab validation for this project, I am extremely pleased with what we've been able to accomplish this summer and I am proud to have been a part of UCSD's first iGEM team.
Week 1
- Generated Pydoc
- Learnt SQL
- Learnt Petri Nets
- Read about past IGEM teams and projects
- Read emailed papers and also helped others understand their assigned papers
- Read more about synthetic biology theories and concepts
- Did Learn Python the Hard Way
- Read Python Wiki
- Read Cytoscape.js API
- Learnt Boolean Networks
- Continued Petri Nets
- Learnt Dynamic Programming and Path Traversal
- Learnt Cytoscape
- Learnt Python
- Learnt Petri Nets
- Attempted to develop basic parser for Pigeon commands
- Read up on synthetic biology and Pigeon images
- Finished command line interface
- Acquired snippet of Linh's database
Week 2
- Learnt boolean networks
- Continued learning Petri Nets
- Looked for useful Python packages for the project
- Learnt Boolean networks
- Continued learning Petri nets
- Continued playing with Cytoscape.js add/remove nodes
- Learnt Boolean Networks
- Learnt reachability treees
- Developed Entity Relationship Diagram
- Learnt Boolean networks
- Found SNAKES- a Python package that utilizes Petri nets
- Learnt Boolean networks
- Disambiguated Linh's device composition
- Learnt SQL
- Learnt traversal algorithms
- Read assigned papers to populate database
- Read about past IGEM teams and projects
- Petri net reading
- CodeAcademy Python tutorials
- BFS/DFS algorithms
- Read papers to fill in database
- Learnt basics of Angular.js
- Meet with CyNetShare team
- Got approval to use CyNetShare code
- SQl columns modification
- Read papers to fill in database
- Learnt SQL
- Conceptualized traversal algorithms
- Read assigned papers to populate database
- Found possible approach to weigh our edges using "Quantitative Estimation of Activity and Quality for Collections of Functional Genetic Elements" and its database
- Started relearning python to work with the traversal as suggested by Jenhan
- Read a few chapters from different books about Jquery functions to use for data loading onto the website
- Learnt HTML
- Went over everyone else's codes
- SQL cleanup
- Wrote code for BFS and DFS
- Learn Python the Hard Way
- Prepared presentation for expanded BFS on Monday
- Continued shifting through CyNetShare code and annotate functions
- Learnt Bioservices for Miriam
- Read papers to fill in database
- scheme for UUID
- add implicit output list to device table
- promoter sequence database (biobrick registry)
- insert_into_database fix
- determine necessary data for device input
- Worked on traversal algorithm
- Continued debugging network
- Updated database
- Learnt Angular.js main functions to use for the website
- Went over more CyNetShare code
- Read a few articles about visualizing data using JSON files and different techniques to do so
- Created database structure
- Normalization complete
- Working on algorithm
- Reading on petri nets
- Learning about designing wiki
- Populating new database
- Learnt more about Petri Nets
- Learnt more about SQL and its functions
- Met with Joaquin and Fred to brainstorm the traversal algorithm
- Edited the Petri Net traversal to accept multiple inputs
- Formatted integration of Bolean logic and multiple outputs
- Busy with Final Exams
- Began outlining Web part of presentation
- Designed a new structure for the database and the traversal
- Improved BFS algorithm
- Populated database
- Kept journal clean
- Incorporated NetworkX into script
- Began Boolean Satisfiability Problem
- Worked on designing a specific JSON file to visualize database with CyNetShare
- Played around with more JSON data to add more key values and data
- Enabled CyNetShare on his server
- Cleaned up web dev part of master branch
- Met with Joaquin and Huwate (Kwat), improved database structure, finished database normalization, prepared for presentation and traversal algorithm
- Cleaned the database and commented on everyone's data
- Worked on search algorithm
- Read about Petri nets
- Tried to modify traverse algorithm to fit Petri Net model
- Edited the database
- Fixed errors in traversal
- Continued to clean up database
- Added NOT gate entries to AND gates involving repressors
- Contributed to website portion of presentations
- Learnt scale vector graphs for possible plotting
- Filled database PowerPoint presentation
- Filled database section
- Improved BFS algorithm
- Populated database
- Kept journal clean
- Worked on presentation
- Incorporated NetworkX into script
- Began Boolean Satisfiability Problem
- Worked on designing a specific JSON file to visualize database with CyNetShare
- Looked over database
- Thought about possible website designs
- Played around with JSON data
- Edited more database information
- Enabled CyNetShare on his server
- Cleaned up web dev part of master branch
- Made a script that parses a user input, searches graph and returns one more more linear searchable space
- Learned SNAKES
- Learned SQL stored function
- Provided Fernando data for analysis
- Added traversal algorithm to presentation
- Updated slides for iGEM presentation and added figures explaining overall traversal algorithm
- Wrote project description
- Continued to clean up database
- Got CyNetShare running on NetBeans
- Discussed implementing Ryan’s modeling to the application
- Worked on presentation
- Started script to get JSON information
- Added minimum spanning tree slides to presentation
- Started learning JSON
- Wrote project description
- Read Overpowering the Component Problem and Circuit Simulation of Genetic Networks
- Designed web app page
- Worked on wiki
- Added slides to presentation
- Finished parser
- Finished database structure
- Wrote pseudocode for search algorithm
- Learnt SQL stored function
- Changed size/shapes of nodes in CyNetShare
- Began learning Angular UI Bootstrap
- Began working on carousel within CyNetShare
- Added dynamic labels to graph that enumerates lines as they are added
- Got CyNetShare running on NetBeans
- Finished operon, plasmid I.D.s etc. In database
- Worked on JSON
- Edited presentation
- Modified pigeon command generator for plasmid to generate commands for each individual operon
- Modified logo
- Designed web app page
- Worked on wiki
- Added slides to presentation
- Got inputs on parser working
- Began working on outputs and verifying codes
- Remote
- Finished adding line removal buttons to legend
- Cleaned up Web Dev branch
- Populated working data
- Worked on JSON
- Began learning NetworkX
- Revisited learning Cytoscape
- Patched codes together
- Finished database with Joaquin
- Worked on reachability
- Worked on convergence
- Remote
- Validated database
- Drafted JSON format
- Went remote
- Learnt how to use database
- Parsed excel file into database
- Prepared for presentation
- Wrote Python script that takes SQL query and outputs JSON
- Began learning Cytoscape.js
- Began learning igraph
- Worked on poster
- Worked on presentation outline
- Updated traverse code
- Updated Google Drive
- Updated Parser again
- Updated reachability analyzer again to not return AND logic
- Remote
- Remote
- Designed master Python
- Designed device insert page
- Read up on network motif algorithms (mfinder, color-coding, Kavosh)
- Decided on Kavosh
- Began learning CytoKavosh
- Almost finished JSON graph constructor
- Verified database code compatibility with network traversal
- Populated and finalized database
- Combined visualization property with traverse code
- Tested and debugged traversal algorithm
- Started working on presentation
- Remote
- No longer remote
- Met with Ryan and Jenhan to refine modeling development directoin
- Decided to use dictionaries of each operon's modeling information
- Stored equations locally for reference
- Populated new database structure
- Implemented dictionaries necessary for traversal
- Continued network analysis with Kavosh
- Began validating database
- Remote
- Generated DOT file creator to retrieve node coordinates from GraphViz
- Worked on reachability
- Worked on convergence
- Remote
- Rendered full network JSON
- Tweaked HTML and laid down function frameworks for search box
- Reorganized app HTML for easier styling and positioning
- Fixed operon I.D.s in database creator
- Fixed operon to output transition mapping
- Connected positions to JSON creator
- Worked on Pidgeon
- Rendered full network on CytoScape
- Attempted to run Linux VirtualBox on my machine to run CytoKavosh
- Remote
- Debugged JSON file creator
- Worked on update functions
- Worked on documentation
- Worked on testers for traversal algorithm
- Remote
- Connected algorithms and servlet between database and SBIDer
- Modified GET requests to accept JSON strings instead of JSON files
- Edited color scheme and style of nodes
- Connected algorithms to servlet between database and SBIDer
- Integrated database into file creator
- VirtualBox did not work
- Ran CytoKavosh on CSE lab Linux machines and found motifs
- Worked on SBML modeling script
- Finished QualitativeSpecies class and Modeling class
- Integrated database into file creator
- Worked on update functions
- Worked on documentation
- Worked on testers for traversal algorithm
- No longer remote!
- Brought all basic functionality online remotely
- Made wiki notebook for past 15 weeks
- Wrote network analysis/Kavosh documentation
- Updated slides to include motifs found with Kavosh and sent to Jenhan/Justin/Ben
- New names for pigeon files
- Added colors to each species so that no color repeats within a single operon