Skip to content

Fall 2014‐Spring 2015 Independent Studies Report

Kam Dahlquist edited this page Feb 5, 2025 · 1 revision

The majority of the 2014-2015 school year was focused on extending robustness and developing a testing framework to use as development on GRNsight continues.

Fall 2014

The primary task of Fall 2014 was to improve the error handling so as to prevent server crashes should unacceptable files be uploaded. The most significant task of the semester was rewriting the spreadsheet controller to allow for asymmetrical adjacency matrices, as well as extending the error handling of the spreadsheet controller so as to catch a greater number of errors more elegantly.

The first major release of the semester was version 1.4. This released contained the majority of the work that had been completed over the summer. Alongside various bug fixes to the loading of the demo files and unusual behavior of the first node in an uploaded file, it extended the number of options in the user interface. The force graph parameter slides, lock force graph parameter sliders check box and menu items, and reset force graph parameter button and menu item were set to be active before a spreadsheet is loaded, allowing a user to customize the appearance of a graph before loading a file. Options were also added to the preferences menu to allow for weighted graphs to be depicted as unweighted graphs. Lastly, printing was implemented, though it had several bugs that needed to be fixed.

Among the first tasks of the semester was increasing the number of errors captured by the spreadsheet controller. Several spreadsheets would cause the server to crash, so a more robust method was needed to as to avoid server crashes. Preliminary error catching was added to the existing spreadsheet controller, and a preliminary error object was created to generate errors in a specific format. The release of version 1.6 contained the improved spreadsheet controller, as well as cosmetic changes to the arrowheads and centering of repressor bars and other small bug fixes. With version 1.6, we began using Github's releases system to announce and document current and past releases.

Prior to the release of version 1.6, it became apparent that GRNsight would need to accept asymmetrical or unordered matrices. Asymmetrical matrices caused a server crash on the existing spreadsheet controller, and unordered matrices simply did not load. The way that the spreadsheet controller was written could not allow for the existence of asymmetrical or unordered matrices, as it required symmetry in order to properly draw the graph. I began development of a spreadsheet controller that would allow for asymmetrical and unordered matrices shortly after the release of version 1.6. Development of the new spreadsheet controller proved to be challenging, but by the end of the semester, a preliminary version with basic error handling was complete and functional.

Spring 2015

With the new spreadsheet controller complete, the primary focus of the Spring 2015 semester was to develop a testing framework to utilize alongside development of GRNsight. Testing frameworks are essential to ensuring that no features are broken by a release due to not having been tested properly.

The new spreadsheet controller was officially released in version 1.8. Version 1.8 also added new demo file and a variety of cosmetic changes to the bounding box and nodes and edges. The bounding box was set at a fixed size, and different sizes are planned to be implemented in the future. The nodes and edges were changed to be prevented from going outside the now-fixed bounding box. Other small bugs were also fixed. With the new spreadsheet controller released, development of the testing framework became a priority. The spreadsheet controller was adjusted several times to allow for ease in testing. The main functions of the spreadsheet controller were modularized so as to allow the testing framework to run only the necessary functions for parsing the graph. Additionally, the full network was returned from the spreadsheet controller instead of only the graph, allowing for the errors array to be viewed.

Version 1.10 released the initial version of the testing framework. The testing framework utilized the errors object in the spreadsheet controller and the network object returned by the spreadsheet controller to determine whether or not a file had generated the appropriate response. It also contained cosmetic changes to the repressor bars, as well as the implementation of a Google Analytics page counter on each page. Version 1.10.2, a small release shortly after, contained a hotfix that caused some files to hang on the old errors glossary when they should have returned an error.

With the release of the initial testing framework, the need for a more robust errors object became apparent. Each of the errors was being documented only as a string that followed a unique format for each error, but the errors were not assigned a unique identifier. Additionally, any change to the text of an error would cause an issue with the testing framework. A new errors object was created that uniquely catalogued each error with an ID that the testing framework could use, and also allowed for greater specificity in the errors that occurred at specific points in the adjacency matrix. The details of the new errors object are available in the Errors Glossary on the wiki. This list of errors is contained inside a parent object, and is capable of being expanded or changed easily without affecting the testing framework, so long as an error code is not changed.

Version 1.10.4 implemented the new errors object as well as the new testing framework that utilized it. The testing framework was also greatly expanded to include a wider variety of errors. Additionally, an upload counter was added that tracked the number of uploads to beta and master, and the page view counter was adjusted to combine the total visits to the homepage and index.html.

Moving forward, the errors glossary needs to be amended to be more specific for certain errors. The cause behind the unknown errors needs to be tracked down and handled more elegantly. Additionally, the corrupt gene error should be split into a series of errors, as it currently covers a wide variety of problems with gene naming and format. The spreadsheet controller also needs to be changed so that it looks only within the adjacency matrix and ignores extraneous data outside of it, as outside data can cause the file to not load.

Clone this wiki locally