RNA Secondary Structure Visualization Using a Force Directed Graph Layout
The front end makes use of Bootstrap and
Knockout.js for the user interfact while the back end
uses Flask to serve the static files and provide a
REST API. The RNA structure manipulation and graph construction is created
using the python forgi RNA
structure manipulation library and the provided
forna.py script. We heavily
depend on the python bindings of the ViennaRNA package.
The server can be run locally on your machine. It depends on the forgi library and needs the ViennaRNA package installed with python bindings enabled (
Further, you need to downlaod the MC-Annotate program
and make it executeable by the server script.
To run it use the following command:
python forna_server.py -s -d
Documentation about the available options is provided using the
We provide the opportunity to add an RNA molecule from supported platforms using URL encoded queries. At the moment the ViennaRNA webservices and the RNAcentral database are supported as well as URL encoded data. Please contact us if you have suggestions for additional platforms.
To add a molecule using the RNAcentral-ID you can just call forna like this:
To include the data directly in the URL, two formats are available:
In the first case it's possible to input multiple molecules at once by having them all in a single string which is passed to the 'file' query. Note that in both cases the
structure is optional. If it's not provided, RNAfold will calculate and display the MFE structure.
For any platform it is also optionally possible to append a colors query using the custom color format:
Notice that the
range part of the color parameter uses %3D to denote the '='. This is to prevent
it from being interpreted as its own argument.
This way it's also possible to embed forna on a website with a preloaded molecule.
<iframe src="forna/index.html?id=RNAcentral/URS0000000001" align="center" height="650px" width="100%" seamless='seamless' frameBorder="0" AllowFullScreen></iframe>
In many situations, the user interaction is superfluous and the desired goal is to simply display a secondary structure on a web page. This is a common scenario in, for example, servers that predict a secondary structure. The output, a dot-bracket string can simply be added to a FornaContainer object to display.
While the specifics are detailed in the online documentation,
the general pattern for use is shown in the example web page below:
Questions and/or comments can be sent to firstname.lastname@example.org
This work was funded by the Austrian DK RNA program FG748004, by the Austrian FWF, project "SFB F43 RNA regulation of the transcriptome," and the European Commission under the Environment Theme of the 7th Framework Program for Research and Technological Development (Grant agreement no: 323987).