# Name

Sidewinder - Do an *ab initio* reconstruction on a set of class sums representing side views.

# Disabled

# Usage

Sidewinder(DataSetName,NumImages,SymString, NumLoops=20,MovesPerLoop=10000,jump='no')

## Input

DataSetName - name of a stack of class sums along with ext.

NumImages - the number of images in the stack (and the number of slots to be filled).

SymString - for example, 'd2', 'c3': generally has the form of c or d followed by an integer.

NumLoops - the number of refinement loops. Passed to routine Anneal (see below)

MovesPerLoop - number of moves per refiinement loop. Passed to routine Anneal.

- jump - the pairwise CCCs are written out to file. If you don't want to recalculate, use jump='yes'.
- . Several cutoffs also need to be entered by the user during the program

## Output

DataSetNameAngles.txt is a text file with the purported assignment angles.

- SWReconVol.mrc gives a reconstruction for the final angle assignment.
- SWReproj.spi stores reprojections (odd) and projections (even).
- SWEvenlySpaced.spi gives an even sampling of the projections of the reconstructed volume
- All of the above files are created in the directory 'SWfiles'.
- There are also many diagnostic images that are created in the directory 'SWpng'.

# Description

Purpose: Sidewinder is a program that assigns angles to class sums based on a simulated annealing algorithm. The class sums are to represent side views of a protein and the symmetry of the protein should be known. The

# Reference

- P.R. Baldwin and P.A. Penczek, Ab Initio Reconstruction for Orthoaxial Sets of Projections via Simulated Annealing.

# Author / Maintainer

P. R. Baldwin

# Keywords

- category 1
- UTILITIES

# Files

- sparx/libpy/sideprojectionmatch.py
This contains the program Sidewinder, the program side_projection_match

which is to be compared to it, and a large testing script, TestSidewinder, which compares both routines.

- sparx/libpy/sideprojectionmatchB.py

This contains the programs:

Anneal(NE,thetaIJMRad,JXM,JYM,thetaIJRad,JXP,JYP,SymmetryString!,NumLps=3,MovesPerLp=10000)

MinFuncPM(thetaRad,thetaIJMRad,JXM,JYM,thetaIJRad,JXP,JYP,SymmetryString)

Anneal is the guts of the angle assignment part of the Sidewinder routine, which comes into play after the class sums are pruned, and the approximate relation between cross correlation coefficient and angle is established. It takes as arguments the number of assignments to be made, as well as the minus relations (thetaIJMRad) between the JX and JY class sums, and the plus relations (thetaIJPRad) between the JX and JY class sums. The symmetry is given by SymmetryString as defined above. It currently is working only on Dn proteins. Anneal calls the function MinFuncPM to evaluate the quality of the current assignment, which is stored in thetaRad. Therefore MinFuncPM is the minimization functional. It is given by

$ S = \sum_{(m,j) \in M} | \cos( n ( \phi_m -\phi_j) ) - \cos( n \phi_{M,mj} ) | + \sum_{(m,j) \in P} | \cos( n ( \phi_m +\phi_j) ) - \cos( n \phi_{P,mj} ) | , $

- There are no P terms unless the symmetry is $D_n$ (as opposed to $C_n$). Notice also that the function MinFuncPM is is the same regardless as to whether the symmetry is $C$ or $D$, since it just operates on the appropriate lists.

Anneal is a standalone program, and can be considered a Simulated Annealing Multidimensional Scaling routine (constrained to a circle). MinFuncPM may also be checked as a standalone program.

# See also

# Maturity

- alpha

# Bugs

Anneal, and therefore the rest of the Sidewinder suite, works only on Dn proteins (not Cn). This will be changed shortly. The cutoffs are set manually now.