RE: Text Wrapping
- To: mathgroup at smc.vnet.net
- Subject: [mg32105] RE: [mg32099] Text Wrapping
- From: "David Park" <djmp at earthlink.net>
- Date: Mon, 24 Dec 2001 23:44:37 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Brian,
If you have a huge data base it will never fit of one screen so you will
need a convenient method to display selected portions of it. Here is what I
came up with. I assume that the data contains only the single sequence since
we can generate the paired sequence.
This generates the four nucleotides randomly.
randomnucl :=
Switch[Random[],
_?(# < 0.25 &), a,
_?(# < 0.50 &), t,
_?(# < 0.75 &), c,
_, g]
This generates a sample DNA sequence.
data = Table[randomnucl, {1000}];
This generates the matching base pair. For our display short rows will be
padded with blanks.
basepair[n_] :=
Switch[n,
a, t,
t, a,
c, g,
g, c,
_, " "]
This routine will display a segment of the data.
DisplaySequence::usage =
"DisplaySequence[start, rowlength, n][data] will display the DNA
sequence \
in paired format starting at position start in n rowlength rows. data must
be \
a sequence of the symbols a, t, g and c. ";
DisplaySequence[start_, rowlength_, rows_][data_] :=
Module[{subdata, rowgrid},
rowgrid[subdata_] :=
GridBox[{ToBoxes /@ subdata, Table["|", {rowlength}],
ToBoxes /@ basepair /@ subdata}, GridBaseline -> Bottom];
subdata =
Take[data, {start, Min[start + rows rowlength - 1, Length[data]]}];
subdata = Partition[subdata, rowlength, rowlength, {1, 1}, " "];
subdata = {rowgrid[#]} & /@ subdata;
DisplayForm[FrameBox[GridBox[subdata, RowLines -> True]]]
]
Here is a sample display.
data // DisplaySequence[905, 25, 5]
David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/
> From: Brian Higgins [mailto:bghiggins at ucdavis.edu]
To: mathgroup at smc.vnet.net
>
> I am interested in using GridBoxes to generate some output that will
> wrap in the notebook window. Here is a simple example using numbers
>
> CellPrint[Cell[BoxData[GridBox[Table[Random[], {2}, {10}]]],
> "Output"]]
>
> The output is a "table" consisting of two rows and 10 columns.
> Obviously you can scroll to see all the entries, but I would like the
> output to wrap in the browser window because in my application(see
> below) the number of columns will be large(>1000). Is there some
> option I can specify for GridBoxes, Cell?
>
> In my application the actual grid structure I want to generate is a
> DNA sequence of paired bases that can be graphically represented as
> follows
>
> CellPrint[
> Cell[RowBox[{GridBox[{Characters["atcgt"], Table["|", {5}],
> Characters["tagca"]}, GridBaseline -> Bottom]}],
> "Output"]]
>
>
> Any thoughts how this can be done?
>
>
> Brian
>