Team:Leiden/Kit-Search

<!DOCTYPE html> DOPLLOCK iGEM Leiden

DOPL LOCK

Distribution Kit Search Tool

Excellence in Another Area

Over the course of the spring, we were hard at work trying to plan our experiments and set up our project. During this time, we used the Distribution Kit intensively. However, during this process we noticed that there were some aspects of the Distribution Kit that could be improved. To this end, we developed DiKST (Distribution Kit Search Tool). DiKST allows future iGEM teams to effortlessly navigate the Distribution Kit and easily find parts. This can prevent unnecessary effort in the planning phase of iGEM projects and streamline the experimental design of other teams, as well as facilitate optimal usage of the Distribution Kit during lab time. This will ensure that future teams can find and build upon existing knowledge while being confident that no important information is missed. We envision DiKST to be perfected and expanded in collaboration with iGEM headquarters and integrated into the iGEM registry.

Distribution Kit Search Tool (DiKST)

The iGEM Registry is an important database with amazing biobricks that can be used to build promising projects. Every year, iGEM teams around the globe contribute to this database by designing and building new constructs. In addition to this registry, iGEM provides a distribution kit to iGEM teams with ready-to-use biobricks. This is a valuable resource to iGEM teams since it can be used to resolve unforeseen problems in the lab or avoid expensive orders like synthesizing specific DNA constructs. During our project, we found it hard to search the Distribution kit for constructs we might want to use. More specifically, the parts registry has a specific section for the Distribution kit, but on this page only the part ID is shown. Although it is possible to search throughout the Registry and see if a part is in the distribution kit, we thought this process to be time-consuming and could be improved.

To tackle this problem our team encountered, we designed the Distribution Kit Search Tool (DiKST). This tool is open-source and consists of a Python program that collects all the required information for each biobrick present in the distribution kit. A website was also developed that enables users to search through this information to find a biobrick that suits their needs. You can use the 2021 Distribution Kit Search Tool here or generate your own DiKST by following the guide below.

This tool will allow future iGEM teams to streamline their project by enabling smooth interaction with the contents of the distribution kit. The search function allows for quick screening of parts to provide easier access to information on the contents of a biobrick and the whereabouts in the distribution kit. This effortless access to the distribution kit makes planning experiments with the resources available easier for teams who might want to adjust their experiments during their wet-lab phase. It is our intention that other teams will make use of this tool and extract everything they possibly can from the distribution kit to raise their project to the highest level possible

  • Creating the database

    In order to have a search function, we needed to create a database for the DiKST with enough information about the parts in the distribution kit to search through. All of the data for this database comes from the Registry, but selects only for specific information to search for possible parts one could use. The iGEM registry has three main ways of getting information. First, the Distribution kit content and layout of the plate can be downloaded here. The second source of information is the Application Programming Interface (API) which we used for tagging and categorization of biobricks. Finally, each biobrick has its own page with information on the specific part. We utilized all of these sources, combined their strengths, and included necessary information to create a comprehensive database.

    First, our Python program reads the CSV files of each Distribution kit plate (6 plates). These CSV files contain all the present biobricks and their location. We initiate the development of the database by creating an entry for each biobrick ID. The position of the biobrick is noted as well, indicating on which plate and in which well the biobrick can be found. With this setup, the Python program uses the API to get data of each biobrick in the kit in a standardized way. Although the API included a lot of categorization information for some biobricks, we missed valuable information for others. Nevertheless, we used various components of the API since acquiring the same information on the biobrick's page would have been difficult. After each biobrick was given the categories as described in the iGEM Registry API, the Registry page for each biobrick in our database was searched. The content of the Registry page of each biobrick in the distribution kit was analyzed for text. We envisioned the search tool to be simple and elegant, with only the required information to see if the biobrick you are looking for is present in the distribution kit. Then iGEM teams can decide to look deeper into each biobrick.

    We developed an algorithm to go through all the scraped text from the biobrick's Registry page and select descriptive sentences that describe the biobrick of interest. It was challenging including enough data for proper searching but not too much data, which could overwhelm the searching process.

    In order for the entire search tool to be uploaded to the iGEM servers, we decided to use a client-side search tool, with the database stored in a JSON format. The database was converted into a JSON formatted file and uploaded to the iGEM servers.

    The source code for the Python program can be found below, or downloaded here.

  • Developing front-end

    For the front-end and web application of the Distribution Kit Search Tool (DiKST), we used an open-source project from Ippsec. After obtaining permission, the open-source project was adapted to our needs. The developed solution consists of a search bar where iGEM teams can put in any search term. The search tool is designed to evaluate the search terms after clicking on the search button or pressing enter, to make the searching as smooth as possible. The actual searching through the database happens at the client (browser) side, which means the searching might feel a bit slow (takes 1 or 2 seconds) depending on the computer. This was a limitation since we could not have any server-side processing due to the programming limitations of iGEM.

    After developing the front-end, the Search Tool was introduced to multiple iGEM teams to assess the usability of the DiKST. We wanted to make sure the Tool addresses the need of searching through the distribution kit and is useful to other iGEM teams. We received feedback from the Wageningen_UR team, the Manipal Institute of Technology team (MIT_MAHE), and the MSP Maastricht University team. We would like to thank these teams for all their suggestions and feedback. They for example suggested making the hyperlink that redirects to the specific Registry page more visible, among other UI suggestions.

    "I love the idea! Kudos to the team. Great work on this, I'm sure this will be very useful for all iGEM teams. Wishing you all the best :)" – MIT_MAHE team

  • Generating your own database

    The DiKST website we published here is for the 2021 Distribution kit. We shared this tool with the iGEM community through the Slack channel, but also wanted to contribute to future iGEM teams. Below you can find a guide on generating your own DiKST tool for future distribution kits.

    It is easy to use the Python program and front-end of the DiKST for future distribution kits if you have some experience in programming. Below you will find a guide on how to run the program, generate a database, and upload the search tool to the iGEM servers. All with just a few clicks.

    Make sure you have downloaded and installed Python3 from the official Python website, as well as PIP.

    Once everything is installed, download this zip file containing all the needed files. After downloading this zip file, extract it in your Documents folder and open the extracted folder. Next, go to the iGEM Parts registry and download the detailed Excel file for each plate, by going to https://parts.igem.org, selecting Repository and 2021 Distribution

    Navigate to the Parts Registry and go to the distribution kit page

    For each kit plate, download the detailed Excel file and name these downloaded files plate1.csv, plate2.csv … plate6.csv and put them in the directory of the extracted zip file.

    Navigate to the Parts Registry and go to the distribution kit page

    This is how the folder should look like

    Now, select the path bar in Explorer and type in cmd.exe (on Windows). Alternatively, you can open cmd.exe by searching for it and navigating to the working directory using this command: "cd {path to folder as you can copy in the path bar}".

    Starting CMD

    Now, we need to install all the required modules for python. In cmd, type in "pip3 install -r requirements.txt". It will look like this:

    Install requirements

    Now we are ready to use the DiKST.py program. Type in the same cmd.exe window "python DiKST.py". Now you need to wait until the program finishes. This usually takes a while (~two hours, depending on how fast the Registry server is), so sit back and relax. If the program fails, the iGEM Registry might have dropped a request. Do not worry, just rerun the program.

    Starting the program

    Program is completed

    After the program is finished, a new file will appear in the working directory called dataset.json. Copy this file and upload this to the iGEM servers like you do with CSS or HTML files. Now open the logic.js file and edit line 144 to refer to the uploaded dataset.json file you created.

    Change this line

    For the final step, upload the logic.js file to the iGEM servers and edit the index.html file to include the uploaded logic.js file, on line 86. You can also choose to modify this document, so it represents your team by changing the team name, description or styling. Feel free to customize it and make it your own!

    Now upload this HTML file and see your DiKST in action! You can for example search for "inducible promoter tet".

    Your end product will look something like this.

    Note: The tool is based on the Excel and CSV structure of this and previous year's distribution kits. Minor adjustments might be needed for the CSV structure changes in the coming years.