Monocle

Personal/Open source

← back to my portfolio

The Problem

eLife Lens provides a novel way of reading scientific papers that is web-centric: it separates text from figures and allows easy navigation throughout the article. Lens was originally developed by Ivan Grubisic in collaboration with the open-access publisher eLife, and is now used on their website. Lens was released as open-source code, and is being used by several other journals. Because it works by parsing NLM XML (an XML format used by most publishers to produce the PDF and HTML versions of their articles already) it could theoretically be used to read content from any journal, as long as the XML is available and can be legally scraped.

PubMed Central (PMC) is a free, online repository of biomedical papers from thousands of journals (even subscription journals deposit papers there after an embargo period). Of these, a subset are truly open-access, and the NLM XML is publically available. Ivan Grubisic built a JavaScript app which uses the PMC API to search the open-access literature and return results that can be viewed with Lens. It thus represents the broadest implementation of Lens on the web, in the sense that it can access the greatest fraction of the literature.

My Role

Ivan's project made heavy use of jQuery to retrieve, parse, and render search results, which made refactoring difficult. I used parts of the codebase to begin my own version of the app based on Node.js and React, which I call Monocle. This streamlined the UI and made iterating on development much quicker. It also allowed cleaner separation of the logic: I have released standalone modules handling the PMC API and a dedicated Lens parser that may be useful in their own right. Further development will proceed from here.