Team:Rotterdam HR/Software

Software

Software

We nominated ourselves for the best software prize of iGEM 2018!!!

We are excited to announce our candidacy for the software prize of iGEM 2018! Why do we nominate ourselves you might ask? Read all about it and check out the software on github!

Wiki environment

When we started building our wiki, it soon became clear that we needed some software to help us speed up the process. We built some handy Software applications for generating as much content for pages as possible. This boosted our efficiency and will possibly boost the efficiency of future iGEM teams. Our main setup contains most (if not all) of the software projects listed below. Please, have a look.

Github page

Wiki Statistics

As a team interested in building a good wiki we liked to know which iGEM team pages were the most popular. To get the best data for inspiration, we made a web application for ranking all teampages by views. Using this application we can search for the current best pages. There is even an option to filter for a certain team and/or subpage. Of course, this application is now publically available on our wiki! We find this application helpful and we hope other iGEM teams will use it to better their own wiki.

We are currently storing all viewdata of the day on a remote server. In a future update, we want to use this gathered data to show graphs and other analytics. All if we have the time to build such a program.
If you are interested, you can check the daily viewdata of each teampage (and total views of a team) using a small python application we made here. Or if you are a programmer and would like to make your own tool for it, you can find the raw viewdata here (JSON format).

To the Wikistat Page

iGEM Wiki API

Since our wiki got big and complex relatively soon, we needed a better way to update it, because we couldn’t copy 30-40 pages manually every time a small change, for example in the navigation bar, was made (daily). To fix this, we made a python API to upload pages to the wiki automatically and could be integrated with our page building program. This way, our wiki pages can be automatically assembled and uploaded. This saves us a lot of time, and is a lot less sensitive to errors. This time could subsequently be used to make the other software that’s described on this page, and test our wiki for mistakes like missing or broken links.

Notebook Generator

As a team with only one computer scientist (and one electrical engineer who can program), we wanted a notebook that automatically updates whenever someone adds something to our lab journal. Luckily, we gained a sponsor that gave use an electronic lab journal as sponsorship. With this, we can use their API to download specific sections from our lab journal and display them on or wiki. But, as a multidisciplinary team we have multiple kinds of notebook entries: Software, Hardware and Wetlab. Therefore we also used the Google Drive RESTful API for downloading software and hardware entries from google sheets files.
For gathering all our entries we used the following programs:

Google Drive Entries

For our software and hardware notebook entries we built a program using the Google RESTful API. It downloads excel sheets from our Google Drive containing notebook entries and turns them into JSON files.

Github page

eLabJournal Entries

For our wetlab notebook entries we built a program using the eLabJournal API. This API allows for downloading sections from our electronic lab journal as JSON files.

Github page

Notebook Builder

After downloading all the entries as JSON files, they need to be converted into actual HTML code for our wiki page. This is done by the Notebook Generator program.

First, the program needs to take the entries and turn them into html code individually. This is done by filling a template with the right data. Afterwards the individual entries are put inside a page with the additional content like specific filters.

Github page

Page Builder

To make it easier for us to develop our wiki, we built a program that takes naked html code and adds a dynamic header and footer to it. This way we have files only containing content for the page, which are then transformed into a full webpage.

Github page

Bio-rad Zoe - Timelapse Software

We wanted to monitor the progress of our cells, but there was just one problem. Our fluorescence microscope (a Bio-Rad Zoe) can only take single images, and no timelapses. But there was still hope, it had a service port and uses android as it’s operating system (OS). Upon connecting to this port, windows recognized it as a FT232 usb-serial adapter. After trying to connect to it with a few common settings and a program called PuTTY, we saw a command prompt. And best of all, it was unsecured. There was no password required for the "root" user, who has access to everything.

Now that we have access to the OS, we have to find a way to make a timelapse. The most non-intrusive way we could think of was to emulate the events the touch screen produced. So first, we needed to get the event data. For this we used the built-in android command "getevent" which helpfully lists all events in real time. The only problem is that it gave us event names instead of ids, so we had to do some research to find out which names were used for which ids. After we figured that out, we used the "sendevent" command to "touch" the screen automatically. This way, we can just press the button to make a picture, and afterwards press another button export it to a usb drive, rename it using the "input text" command, and delete it from the internal memory.

Now that the software is complete, we wanted to have a standalone device for making timelapses. This way, your laptop can still be used wherever you need it, instead of being tethered to the microscope. To do this, we put our python code on a raspberry pi zero. This is a small and affordable (five dollar) computer. And made our code run when it starts. To prevent the OS on the raspberry pi from getting corrupted from random unplugging among other things, we made the SD card where everything is stored on read-only, using the instructions here.

As a result of all this, we have a standalone device. Which can be plugged into the service port of the microscope and will automatically start making timelapses.