Delila Program: curvafea

# curvafea program

## By downloading this code you agree to the Source Code Use License (PDF). Pascal source code: curvafea.p (wget instructions) Instructions on compiling MacOS binary: curvafea Alphabetic List of Delila Programs Delila Programs by Most Recent Update Please report broken links delilabundle.zip = All Programs and MacOS Binaries Copyright Statement for Delila Programs

### Documentation for the curvafea program is below, with links to related programs in the "see also" section.

```{   version = 1.06; (* of curvafea.p 2003 Sep 2}

(* begin module describe.curvafea *)
(*
name
curvafea: DNA curvature to lister features

synopsis
curvafea(book: in, curvafeap: in, curvaout: in,
curvafeamarks: out, curvaxyin: out,
output: out)

files

book:  A book from the delila system.

curvafeap:  parameters to control the program.  The file must contain the
following parameters, one per line:

1. The version number of the program.  This allows the user to be
warned if an old parameter file is used.

2. zerobase: character and one integer OR one integer.  The coordinate
to set the phase of the wave by.  This base will be red.

If the first character is 'f' then the first base is the zerobase.

If the first character is 'l' then the last base is the zerobase.

When the first character is 'f' or 'l', it is followed by the
zerobase as an offset.  So f 0 is the first base, f 1 is the second
base, etc.

If the first character is not 'f' or 'l' then an integer is given
that is the phase offset.

When a set of coordinates are used (6th parameter and beyond), 'f'
and 'l' apply to each coordinate pair.  As a result, the phases of
the colors WILL NOT MATCH.  If neither 'f' nor 'l' are used, then
there is only one zero base for all pairs, so THE PHASES WILL
MATCH.

3. wavelength: one real.  The wave length in bases.  Usually there are
10.6 base pairs per turn of DNA, but using 10.0 allows checking the
program.  It can have other useful value, for example, one can set
it to 3 to see translation frames.

4. wavevertical (real):  how much to move the colored bar up or down
(in character heights = bits).  This is preadjusted (by a constant
(shiftdown) to fit just between the lister map numbering and the
sequence.

5. waveheight (real):  the height of the colored bar (in character
heights = bits).  0.25 is the normal value that fits the line
between the lister map numbering and the sequence.

6. and all following lines: firstbase lastbase: two integers per line.
The first and last bases to create marks for.  There may be an
indefinite number of lines.  You can also use the program with
different parameters and concatenate the curvafeamarks files together.
WARNING:  Coordinate systems can jump in the Delila system, so this
method will fail across jumps.  You can set the ranges by hand.
This method can be used to mark only portions of the sequence.
The program bookends can be used to find the end numbers of book
pieces.

IF PARAMETERs 6 ARE MISSING then the book will be used to obtain the
coordinate system.  This method should always work, but it gives
curvafea marks for the entire book.

curvaout:  One or more '.map' files from the curva program.  These
give the coordinate followed by the curvature on each line.  To
make it possible to concatenate .map files together with
spacers, blank lines and '*' at the starts of line are accepted

curvafeamarks:  marks for the lister program

curvaxyin:  curve in xyin format for the xyplo program

output: messages to the user

description

The program makes waves for lister by using the marks definition.  The
waves are colored strips on the number line (or wherever the lister line
starts).  The strip shows the phase of the DNA, allowing the orientation
of binding sites to be compared.

Since lister marks must be in order of the coordinate system, integrating
the curvafea marks with other marks would require a lot of hand editing.  The
mergemarks program allows marks to be smoothly joined together.

examples

1.34      version of curvafea that this parameter file is designed for.
f 0       zerobase: to set the phase of the wave by.  This base will be red.
10.6      wavelength: The wave length in bases.  Usually 10.6.
0         wavevertical: amount to shift colored wave vertically
0.25      waveheight: height of colored wave

Optionally, there can be:

-150  92  firstbase lastbase: range of sequence to mark
... (any number of repeats of the last line above may be made)

documentation

The CURVATURE (ie curva) program is described at:

@article{Shpigelman.Bolshoy1993,
author = "E. S. Shpigelman
and E. N. Trifonov
and A. Bolshoy",
title = "{CURVATURE: software for the analysis of curved DNA}",
journal = "Comput Appl Biosci",
volume = "9",
pages = "435--440",
year = "1993"}

example parameter file: curvafeap

The curves program is available from:
http://ext.haifa.ac.il/~leokol/curvature/

A script that takes a book as input and uses this program  to
generate various files that can be used with Delila programs is:
run.curva

the program that uses the curvafeamarks: lister.p
another program that could use curvafea marks:  makelogo.p
a program to merge curvafeamarks with others:  mergemarks.p
a program to obtain the range of a book:  bookends.p

a program for plotting the curvaxyin:  xyplo.p

Documentation on how the curvafea program produces the color wave:
https://alum.mit.edu/www/toms/livecolors/

This program was created by modifying:  live.p

author
Thomas Dana Schneider

bugs

NOTES from live.p:

When one gives a pair of coordinates, curvafea creates marks running between
the pair.  This will *fail* when there is a coordinate jump.  Also, it
means that if the coordinate system is decreasing, the wave colors will be
*reversed*.  When the book is used for coordinates, the wave is determined
on internal (1 to n) coordinates and so the colors will never be
reversed.  It is not clear yet whether the latter solution is a problem or
not.  (Is it a bug or a feature?  :-)  Are there times when one would like
the colors to reverse when the piece reverses?

The answer to the above is YES: the colors must reverse for curva!
zzz check that this is true

The code could be imbedded into lister.

technical notes

The definition of the marks is in makelogo.p