Digital Cell Classifier
Year
2021
Programs
- HTML, CSS & JS
- Django & Python
Rapidly Label Cells For AI Applications
This is an ongoing project to create a streamlined and digital method of labeling hematopathology slides with an end goal of using AI to assist pathologists in cancer diagnosis and prediction.
The software is built in Django with the help of vanilla JavaScript as well as several JavaScript libraries. The project was well under way by the time I joined the team. After familiarizing myself with the code base and overall operations, I got to work designing the user interface as well as building user capabilities. I used Django's default User model and enabled Django's User authentication system. this required the creation of new code in addition to adding appropriate permissions to existing code. In the end, the site is now able to track individual users' projects, uploaded slides, created regions, and labelled cells.
I built the software's 'projects' page and features. This included creating a form that allows users to create a project to consolidate their slides, regions, and cells into a single place. These 'projects' could then be used as a jumping off point for a user profile, as well as sharing data between users.
I created the ability to add other registered users to a project. In effect, creating the ability to 'share' the project between users. When a project is created, only the user who created it has access to it. This ability to add collaborator to a project gives the specified user access to all data within the project and facilitates teamwork within the software.
Originally, each slide object was created by manually adding it to the database via the admin panel. I was tasked with creating a system for uploading large .tif images. To do this, I took advantage of JavaScript's Dropzone library which enabled the ability to drag and drop files for upload. I customized this library to handle multiple image files at once and used JQuery and AJAX to load the newly created slide object to the page as soon as they were processed.
I took the initiative to restyle some of the large pages to provide the user with a less overwhelming and cluttered view. I perfected the slide info box using JavaScript and JQuery to create drop-down elements to display/hide the cell summary for each slide. Additionally, I made it a priority to create consistent button and link styles to ensure optimal accessibility.
I was also asked to create forms for selecting each slide's tissue type and diagnosis. These forms were created using Django Model Forms. I then used AJAX to automatically display the submitted from data in the slide info box, as well as AJAX calls to remove the selected element form the display and simultaneously delete the corresponding database entry.
On the cell labeler page, I was asked to create a preview thumbnail for the selected cell. This mini pop-out container needed to contain an image of the selected cell as well as any relevant information - ID, AI Predicted Label, Etc. It also became necessary for the user to be able to move the pop-out window around the screen. To achieve this I used a combination of CSS, JQuery, and JavaScript.
When it came time to deploy the project, I was selected as the point person. I taught myself how to create an Amazon Web Services EC2 Instance, launch a development server using Apache2, and tie the whole thing together with a custom domain. I implemented the SSL Certificate and designed a git branching system to separate development code from production code in order to facilitate a smoother workflow.