%!PS-Adobe-2.0 EPSF-2.0 %%Title: makelogo 8.74 %%Creator: Tom Schneider, toms@ncifcrf.gov %%BoundingBox: 57 57 482 754 %%Pages: atend %%DocumentFonts: %%EndComments /llx 56.7 def /lly 56.7 def /urx 481.9 def /ury 754.0 def % * alpro 1.70 % *>dmsA % *>moaA % *>modA % *>dmsA % * DNA ALIGNMENT % * position, samples, information, variance % % logo from 1 to 24 /cmfactor 72 2.54 div def % defines points -> cm conversion /cm {cmfactor mul} bind def % defines centimeters % user defined parameters /lowest 1 def /highest 24 def /bar 100 def /xcorner 16.00000 cm def /ycorner 4.00000 cm def /rotation 90.00000 def % degrees /charwidth 0.90000 cm def /barheight 12.00000 cm def /barwidth 0.10000 cm def /barbits 2.00000 def % bits /Ibeamfraction 1.00000 def /barends true def /showingbox false def /outline false def /caps true def /stacksperline 24 def /linesperpage 1 def /linemove 1.00000 def /numbering true def /shrinking false def /edgecontrol (n) def /edgeleft 2.00000 def /edgeright 1.00000 def /edgelow 2.00000 def /edgehigh 1.00000 def /shrink 1.00000 def /ShowEnds (d) def % d: DNA, p: PROTEIN, -: none /HalfWhiteIbeam true def /knirhs 1 shrink sub 2 div def /charwidth4 charwidth 4 div def /charwidth2 charwidth 2 div def /setthelinewidth {1 setlinewidth} def setthelinewidth % set to normal linewidth % define fonts /ffss {findfont fontsize scalefont setfont} def /FontForStringRegular {/Times-Bold ffss} def /FontForStringItalic {/Times-BoldItalic ffss} def /FontForLogo {/Helvetica-Bold ffss} def /FontForPrime {/Symbol ffss} def /FontForSymbol {/Symbol ffss} def % Set up the font size for the graphics /fontsize charwidth def % movements to place 5' and 3' symbols /fivemovex {0} def /fivemovey {(0) charparams lx ux sub 3 mul} def /threemovex {(0) stringwidth pop 0.5 mul} def /threemovey {fivemovey} def /prime {FontForPrime (\242) show FontForStringRegular} def % make italics possible in titles /IT {% TRstring ITstring IT - exch show FontForStringItalic show FontForStringRegular } def % make symbols possible in titles /SY {% TRstring SYstring SY - exch show FontForSymbol show FontForStringRegular } def %(*[[ This special comment allows deletion of the repeated % procedures when several logos are concatenated together % See the censor program. /charparams { % char charparams => uy ux ly lx % takes a single character and returns the coordinates that % defines the outer bounds of where the ink goes gsave newpath 0 0 moveto % take the character off the stack and use it here: true charpath flattenpath pathbbox % compute bounding box of 1 pt. char => lx ly ux uy % the path is here, but toss it away ... grestore /uy exch def /ux exch def /ly exch def /lx exch def } bind def /dashbox { % xsize ysize dashbox - % draw a dashed box of xsize by ysize (in points) /ysize exch def % the y size of the box /xsize exch def % the x size of the box 1 setlinewidth gsave % Define the width of the dashed lines for boxes: newpath 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto 0 0 lineto [3] 0 setdash stroke grestore setthelinewidth } bind def /boxshow { % xsize ysize char boxshow % show the character with a box around it, sizes in points gsave /tc exch def % define the character /ysize exch def % the y size of the character /xsize exch def % the x size of the character /xmulfactor 1 def /ymulfactor 1 def % if ysize is negative, make everything upside down! ysize 0 lt { % put ysize normal in this orientation /ysize ysize abs def xsize ysize translate 180 rotate } if shrinking { xsize knirhs mul ysize knirhs mul translate shrink shrink scale } if 2 { gsave xmulfactor ymulfactor scale tc charparams grestore ysize % desired size of character in points uy ly sub % height of character in points dup 0.0 ne { div % factor by which to scale up the character /ymulfactor exch def } % end if {pop pop} ifelse xsize % desired size of character in points ux lx sub % width of character in points dup 0.0 ne { div % factor by which to scale up the character /xmulfactor exch def } % end if {pop pop} ifelse } repeat % Adjust horizontal position if the symbol is an I tc (I) eq {charwidth 2 div % half of requested character width ux lx sub 2 div % half of the actual character sub 0 translate} if % Avoid x scaling for I tc (I) eq {/xmulfactor 1 def} if /xmove xmulfactor lx mul neg def /ymove ymulfactor ly mul neg def newpath xmove ymove moveto xmulfactor ymulfactor scale tc show grestore } def /numchar{ % charheight character numchar % Make a character of given height in cm, % then move vertically by that amount gsave /char exch def /charheight exch cm def charwidth charheight char boxshow grestore charheight abs 1 gt {0 charheight abs translate} if } bind def /Ibar{ % make a horizontal bar gsave newpath charwidth4 neg 0 moveto charwidth4 0 lineto stroke grestore } bind def /Ibeam{ % height Ibeam % Make an Ibeam of twice the given height, in cm /height exch cm def /heightDRAW height Ibeamfraction mul def 1 setlinewidth HalfWhiteIbeam outline not and {0.75 setgray} % grey on bottom {0 setgray} % black on bottom ifelse gsave charwidth2 height neg translate Ibar newpath 0 0 moveto 0 heightDRAW rlineto stroke 0 setgray % black on top newpath 0 height moveto 0 height rmoveto currentpoint translate Ibar newpath 0 0 moveto 0 heightDRAW neg rlineto currentpoint translate stroke grestore setthelinewidth } bind def /makenumber { % number makenumber % make the number gsave shift % shift to the other side of the stack 90 rotate % rotate so the number fits dup stringwidth pop % find the length of the number neg % prepare for move charwidth (0) charparams uy ly sub % height of numbers sub 2 div % moveto % move back to provide space show grestore } bind def /shift{ % move to the next horizontal position charwidth 0 translate } bind def /bar2 barwidth 2 div def /bar2n bar2 neg def /makebar { % make a vertical bar at the current location gsave bar2n 0 moveto barwidth 0 rlineto 0 barheight rlineto barwidth neg 0 rlineto closepath fill grestore } def % definitions for maketic /str 10 string def % string to hold number % points of movement between tic marks: % (abs protects against barbits being negative) /ticmovement barheight barbits abs div def /maketic { % make tic marks and numbers gsave % initial increment limit proc for 0 1 barbits abs cvi {/loopnumber exch def % convert the number coming from the loop to a string % and find its width loopnumber 10 str cvrs /stringnumber exch def % string representing the number stringnumber stringwidth pop /numberwidth exch def % width of number to show /halfnumberheight stringnumber charparams % capture sizes uy ly sub 2 div def numberwidth 2 mul % move back two digits neg loopnumber ticmovement mul % shift on y axis halfnumberheight sub % down half the digit moveto % move back the width of the string stringnumber show % now show the tic mark 0 halfnumberheight rmoveto % shift up again numberwidth 0 rlineto stroke } for grestore gsave /labelstring (bits) def numberwidth neg 2.5 mul barheight labelstring stringwidth pop sub 2 div translate 90 rotate 0 0 moveto labelstring show grestore } def /degpercycle 360 def /cosine {% amplitude phase wavelength base % xmin ymin xmax ymax step dash thickness % cosine - % draws a cosine wave with the given parameters: % amplitude (points): height of the wave % phase (points): starting point of the wave % wavelength (points): length from crest to crest % base (points): lowest point of the curve % xmin ymin xmax ymax (points): region in which to draw % step steps for drawing a cosine wave % dash if greater than zero, size of dashes of the wave (points) % thickness if greater than zero, thickness of wave (points) /thickness exch def /dash exch def /step exch def /ymax exch def /xmax exch def /ymin exch def /xmin exch def /base exch def /wavelength exch def /phase exch def /amplitude exch def % fun := amplitude*cos( ((-y-phase)/wavelength)*360) + base /fun {phase sub wavelength div degpercycle mul cos amplitude mul base add} def gsave /originallinewidth currentlinewidth def thickness 0 gt {thickness setlinewidth} if /c currentlinewidth def % Make the curve fit into the region specified newpath xmin ymin c sub moveto xmax ymin c sub lineto xmax ymax c add lineto xmin ymax c add lineto closepath clip newpath xmin dup fun moveto xmin step xmax { % loop from xmin by step to xmax dup fun lineto } for dash 0 gt {[dash cvi] 0 setdash} if % turn dash on stroke originallinewidth setlinewidth grestore } bind def /circlesymbol { % x y radius circlesymbol - (path) newpath 0 360 arc closepath} bind def /sqrt3 3 sqrt def /trianglesymbol { % x y radius trianglesymbol - (path) /r exch def /sqrt3r sqrt3 r mul def translate 120 rotate 0 r translate -120 rotate newpath 0 0 moveto sqrt3r 0 lineto -300 rotate sqrt3r 0 lineto closepath} bind def /squaresymbol { % x y side squaresymbol - (path) /side exch def translate side 2 div neg dup translate newpath 0 0 moveto 0 side lineto side side lineto side 0 lineto closepath} bind def /linesymbol { % x1 y1 x2 y2 linesymbol - (path) /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y2 lineto } bind def /boxsymbol { % x1 y1 x2 y2 boxsymbol - (path) /y2 exch def /x2 exch def /y1 exch def /x1 exch def newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath } bind def % The following special comment allows deletion of the repeated % procedures when several logos are concatenated together % See the censor program. %]]%*) /startpage { % start a page save % [ startpage % set the font used in the title strings FontForStringRegular gsave % [ startpage xcorner ycorner translate rotation rotate % now move up to the top of the top line: 0 linesperpage linemove barheight mul mul translate % set the font used in the logos FontForLogo } def %(*[[ This special comment allows deletion of the repeated % procedures when several logos are concatenated together % See the censor program. /endpage { % end a page grestore % ] endpage showpage % REMOVE FOR PACKAGING INTO ANOTHER FIGURE restore % ] endpage } def /showleftend { gsave charwidth neg 0 translate fivemovex fivemovey moveto ShowEnds (d) eq {(5) show prime} if ShowEnds (p) eq {(N) show} if grestore } def /showrightend { gsave threemovex threemovey moveto ShowEnds (d) eq {(3) show prime} if ShowEnds (p) eq {(C) show} if grestore } def /startline{ % start a line % move down to the bottom of the line: 0 linemove barheight mul neg translate gsave % [ startline barends { maketic % maketic.startline gsave bar2n 0 translate % makebar.startline makebar % makebar.startline grestore } if showleftend } def /endline{ % end a line showrightend barends { gsave bar2 0 translate % makebar.endline makebar % makebar.endline grestore } if grestore % ] startline } def % @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ % @@@@@@@@@@@@@@@@@@@@ End of procedures @@@@@@@@@@@@@@@@@@@ % @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ % The following special comment allows deletion of the repeated % procedures when several logos are concatenated together % See the censor program. %]]%*) %%EndProlog %%Page: 1 1 startpage % [ startline % line number 1 % at coordinate 1 numbering {(1) makenumber} if gsave 6.66540 (C) numchar 2.54558 Ibeam grestore shift % at coordinate 2 numbering {(2) makenumber} if gsave 6.66540 (G) numchar 2.54558 Ibeam grestore shift % at coordinate 3 numbering {(3) makenumber} if gsave 2.54558 Ibeam grestore shift % at coordinate 4 numbering {(4) makenumber} if gsave 6.66540 (T) numchar 2.54558 Ibeam grestore shift % at coordinate 5 numbering {(5) makenumber} if gsave 0.38522 (G) numchar 0.77044 (A) numchar 2.54558 Ibeam grestore shift % at coordinate 6 numbering {(6) makenumber} if gsave 6.66540 (T) numchar 2.54558 Ibeam grestore shift % at coordinate 7 numbering {(7) makenumber} if gsave 6.66540 (A) numchar 2.54558 Ibeam grestore shift % at coordinate 8 numbering {(8) makenumber} if gsave 6.66540 (T) numchar 2.54558 Ibeam grestore shift % at coordinate 9 numbering {(9) makenumber} if gsave 0.38522 (T) numchar 0.77044 (A) numchar 2.54558 Ibeam grestore shift % at coordinate 10 numbering {(10) makenumber} if gsave 0.38522 (G) numchar 0.77044 (C) numchar 2.54558 Ibeam grestore shift % at coordinate 11 numbering {(11) makenumber} if gsave 0.38522 (T) numchar 0.77044 (A) numchar 2.54558 Ibeam grestore shift % at coordinate 12 numbering {(12) makenumber} if gsave 2.54558 Ibeam grestore shift % at coordinate 13 numbering {(13) makenumber} if gsave 6.66540 (G) numchar 2.54558 Ibeam grestore shift % at coordinate 14 numbering {(14) makenumber} if gsave 0.38522 (A) numchar 0.77044 (C) numchar 2.54558 Ibeam grestore shift % at coordinate 15 numbering {(15) makenumber} if gsave 0.38522 (T) numchar 0.77044 (C) numchar 2.54558 Ibeam grestore shift % at coordinate 16 numbering {(16) makenumber} if gsave 6.66540 (T) numchar 2.54558 Ibeam grestore shift % at coordinate 17 numbering {(17) makenumber} if gsave 6.66540 (A) numchar 2.54558 Ibeam grestore shift % at coordinate 18 numbering {(18) makenumber} if gsave 0.38522 (T) numchar 0.77044 (C) numchar 2.54558 Ibeam grestore shift % at coordinate 19 numbering {(19) makenumber} if gsave 6.66540 (A) numchar 2.54558 Ibeam grestore shift % at coordinate 20 numbering {(20) makenumber} if gsave 6.66540 (T) numchar 2.54558 Ibeam grestore shift % at coordinate 21 numbering {(21) makenumber} if gsave 6.66540 (A) numchar 2.54558 Ibeam grestore shift % at coordinate 22 numbering {(22) makenumber} if gsave 0.38522 (A) numchar 0.77044 (G) numchar 2.54558 Ibeam grestore shift % at coordinate 23 numbering {(23) makenumber} if gsave 6.66540 (C) numchar 2.54558 Ibeam grestore shift % at coordinate 24 numbering {(24) makenumber} if gsave 6.66540 (G) numchar 2.54558 Ibeam grestore shift endline endpage % ] % Rs total is 16.14536 +/- 2.07846 bits in the range from 1 to 24 %%Trailer %%Pages: 1