Nucleic Acids Research, 2010, Vol. 38, Web Server issue W369 Figure 1. A ﬂow-chart depicting the algorithm for predicting RNA secondary structures. double-helix is accomplished using the RNA Vienna package (2). Each chosen helix is represented by a very coarse-grained 3D representation in a virtual 3D work- space. An RNA double helix is represented by a cylinder (using a radius of 6.5 A˚ and a length of 2.7 A˚ times the number of base pairs) that is capped with a half-sphere on both ends. This shape is called a capsule. A schematic diagram of the mapping of an RNA secondary structure into a highly coarse-grained 3D representation is shown in Figure 2. The main reason for choosing capped cylinders over regular cylinders is the computational eﬃciency of collision detection. Single stranded regions between helices are represented as constraints for the maximum distance between the ends of the capped cylinders. A newly chosen capped cylinder is placed into the 3D simu- lation space at a random position such that the distance-constraints are fulﬁlled. The distance constraints are a function of the single-stranded sequence lengths between connected helices. The maximum distance between helix ends is 2.0 A˚ + n*8.0 A˚ with n being the sequence separation. The minimum distance is 2.0. If cylinders collide, the newly placed capped cylinder is placed at a diﬀerent random position. If after 20 attempts the newly placed capped cylinder is still colliding with pre- viously placed capped cylinders, the positions of all capped cylinders are optimized in order to minimize col- lisions and constraint violations. If no collision-free position can be found, the newly chosen helix and its capped cylinder representation is discarded. Otherwise, the found collision-free position is stored. Helices that are part of the stem-list and that share bases with the newly placed helix are removed from the stem-list. In the next iteration the next helix is chosen until no more helices can be placed. Once no more helices can be placed, one simulation run is completed. Fifty simulation runs are Figure 2. Scheme for mapping between an RNA secondary structure (a) and the used 3D coarse-grained representation (b). Each helix is represented as a capped cylinder (‘capsule’). Single-stranded regions between helices are represented as distance constraints. Only those RNA secondary structures can be a (partial) solution of a secondary structure prediction, for which the algorithm succeeds in placing the corresponding capped cylinders such that they do not collide and do not violate distance constraints. performed and the overall best-scoring structure is returned to the user. IMPLEMENTATION The folding algorithm is implemented as a C++ program. The web server has been implemented using the Grails framework (18), which is based on the Groovy programming language. For a secondary structure predic- tion request, the web server launches the cylofold binary on a Linux compute cluster. After the prediction result has been generated, the program VARNA (19) is launched to generate an image of the secondary structure prediction. The prediction results are temporarily stored in a relation- al database. Usage A user of the CyloFold prediction web server can start a secondary structure prediction request by entering (‘pasting’) a nucleotide sequence (as raw characters or in FASTA form, both ACGU and ACGT alphabets are accepted) into the web form and pressing ‘submit’. The maximum sequence length that is currently accepted by the web server is 300 nt. The initial return of the web server is a unique id, which is needed if one wants to access results at a later time. Due to the compute-intensive approach for the prediction, it can take several minutes for the server to ﬁnalize a secondary structure prediction. The user can access the results by one of three methods: a simple ‘reload’ of the initial result page will update the