jsinscience

JavaScript Web Apps in Science

JavaScript is gaining traction in the scientific community as a simple and powerful language to build engaging and interactive applications running only on the web browser.

This page is a repository of simple examples that attempt to illustrate the potential of ‘web apps’. Click on the title of each example to see a live demo, or browse the repository for the code.

List of Examples

Principal Component Analysis

Implementation of PCA for simple inspection of similarities and differences among complex datasets. Uses the LALOlib library for PCA and Google Charts API for plotting.

Circular Dichroism of Proteins

Tool to fit and simulate circular dichroism spectra of proteins. Pure JavaScript implementation of the algorithm described in this publication

Entrez API

Very simple examples of retrieving records from PubMed from keywords and/or authors, using the Entrez API services. Further, it uses nlp-compromise to extract terms from the abstracts.

Abstract Mutation Parser

Another example of using the Entrez API to retrieve abstracts and analyzing them for specific text patters, in this case mutations.

Augmented Reality Energy Calculation

An example of the use of Augmented Reality to drive the interaction of two amino acids, while a simple distance-dependent energy function is running in real-time. Uses Three.js, A-Frame and AR.js.

Voice-Aided Augmented Reality Energy Calculation

Another example of Augmented Reality to perform interactive docking, integrating voice recognition to activate/deactivate a force field to highlight certain interactions. Uses annyang for voice recognition.

Molecular Viewer with Gaze Tracking

Example of integration of gaze tracking and a molecular viewer. Uses WebGazer.js to track the user’s eyes and JSmol to display the molecule.

Concurrent Molecular Visualization

Using WebRTC through PeerJS to synchronize multiple JSmol sessions in different browsers.

Code

The code for these examples is available at the repository.

Authors

Luciano Abriata Ported to GitHub by Joao Rodrigues