The lab needs a file-transfer widget to support app development. It should have the ability to:
- Interface with Dropbox (i.e., transfer user-specified files to the server).
- Interface with Google drive.
- Interface with OneDrive.
- Interface with Box.
- Upload files directly from the hard drive, using this very nice bootstrap plugin.
Each of these systems should be accessible through the same functions. So, for example, to identify a file I would always call the same TypeScript function, which would accept as one of its parameters which external file system to use (e.g., fileSystem = “DROPBOX”).
Here are the functions needed:
- Authenticate the user.
- Allow the user to specify which external file to transfer.
- Transfer the file from the remote system.
- Upload a file to the remote system.
- List the files on a remote drive.
- Delete/move remote files.
There are published packages that can do this, but as best I can tell they have some limitations:
- Dependency on external servers via REST API (which may or may not be here 5 years from now).
- Require a subscription.
It would be good to investigate before starting to make sure there isn’t suitable code already published.
I imagine this project will be publicly available and open sourced.
I’d like to make a file-access widget for NW.js, written in typescript. It consists of a button and a text field. When you click the button, it opens up a file dialog for selecting a file. It then places the filename in the text field and has options for copying, moving, and deleting the selected file.
This project focuses on extending 3DMol.js with functions that make the meshes it generates accessible to outside frameworks. 3DMol.js is a great web-based molecular visualizer. It’s very well suited for displaying molecules, but I’m also interested in better accessing the meshes it renders (e.g., it can quickly render surface representations in a browser!). The mesh data (vertices, vertex colors, normals) could then be imported into other 3D environments (e.g., babylon.js, three.js, Blender, etc.).
In order to ensure that our software can run on any operating system, we need a node.js function equivalent to the unix “find” command. Really, only the -name parameter of the find command needs to be implemented.
Our lab creates free drug-discovery apps that run both in the cloud (through a browser) and on the desktop (using nw.js). These apps are based mostly on Typescript. The web-based versions communicate with our remote servers through ajax calls, mostly to node.js cgi scripts. We need to be able to do the same on the desktop versions of our apps.
This project involves creating a Typescript function that:
- Accepts POST data as input.
- Detects whether or not it’s being run from within a browser or nw.js.
- Passes the POST data through AJAX if it’s in a browser, or to a local file if running in nw.js.
- Accepts a callback function to process the returned data.
The AJAX should be managed using JQuery’s $.ajax function.
Web menus look like this:
We need a single Typescript function that accepts a json object that fully describes how a menu should behave (i.e., the structure, which functions to call when clicked, etc.). This function should support disabled menu items, as well as separator bars. Based on a boolean parameter (isBrowser), the function renders a browser-based menu or a windows-based/nw.js menu.
When we discover a new molecule that might one day be developed into a drug, it’s helpful to know if other scientists have discovered that that same molecule is useful elsewhere. This project involves creating a TypeScript function that:
- As input, accepts a molecule represented as a smiles string.
- Makes an AJAX call to the PubChem servers to download information about that molecule. This link and this link should be helpful. We’re especially interested in learning if the molecule was active in any bioassays (perhaps here)?
- The function encodes that data and returns it as a JSON.