esl-ssdraw(1)

๐Ÿ“ฆ
version 3.3.2 ยท 2 versions
, in fedora 43, fedora 44

๐Ÿ’– esl-ssdraw ๐Ÿ’–

straight outta the Easel Manual, section 1, bestie. this is the glow-up your RNA diagrams have been waiting for ๐Ÿฆ‹


โœจ NAME โœจ

esl-ssdraw โ€” create postscript secondary structure diagrams. that's it, that's the job, and she slays at it ๐Ÿ’…


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

esl-ssdraw [options] msafile postscript_template postscript_output_file

three files in, one gorgeous postscript out. iconic behavior, honestly.


๐ŸŒˆ DESCRIPTION ๐ŸŒˆ

okay so here's the vibe: esl-ssdraw reads an existing template consensus secondary structure diagram from postscript_template, and then makes brand new postscript diagrams that include that same template structure โ€” but with the positions colored differently based on alignment statistics. like, frequency of gaps per position, average posterior probability per position, information content per position, that whole situation. custom color story, same skeleton.

and that's not even all of it: all or some of the aligned sequences can be drawn separately too, with nucleotides or posterior probabilities mapped onto the corresponding positions of the consensus structure. ๐Ÿซถ

some ground rules, no cap:

  • the alignment must be in Stockholm format with per-column reference annotation (#=GC RF)
  • the sequences in the alignment must be RNA or DNA sequences
  • the postscript_template file must contain one page that includes <rflen> consensus nucleotides (positions), where <rflen> is the number of nongap characters in the reference (RF) annotation of the first alignment in msafile
  • the exact format required in postscript_template is described below in the INPUT section
  • postscript diagrams will only be created for the first alignment in msafile โ€” so don't come to her with a whole stacked alignment and expect a sequel, she does one and she does it well ๐Ÿ™ˆ

๐Ÿ”ฅ OUTPUT ๐Ÿ”ฅ

the default situation (zero options, zero notes, all vibes)

run her with zero command line options and esl-ssdraw creates a six or seven page postscript_output_file, where every page shows off a different alignment statistic. main character energy per page, fr fr. those pages display:

  • the alignment consensus sequence
  • information content per position
  • mutual information per position
  • frequency of inserts per position
  • average length of inserts per position
  • frequency of deletions (gaps) per position
  • average posterior probability per position (only if posterior probabilities exist in the alignment)

if -d is enabled, you get all of those pages plus extra ones โ€” things like individual sequences (see the whole --indi discussion below). so like, the deluxe package. ๐Ÿ“

you can also pick and choose which pages get drawn by using these command line options individually:

  • --cons
  • --info
  • --mutinfo
  • --ifreq
  • --iavglen
  • --dall
  • --prob

the calculation of the statistics for each of these options is discussed below, in the description for each option. so keep scrolling, bestie, the receipts are down there.

important, and I mean it: only so-called 'consensus' positions of the alignment will be drawn. a consensus position is one that is a nongap nucleotide in the 'reference' annotation of the Stockholm alignment (#=GC RF) read from msafile. gap positions simply do not get an invite to this party. ๐Ÿ’€

the consensus sequence

by default, a consensus sequence for the input alignment gets calculated and displayed on the alignment statistic diagrams. the consensus sequence is defined as the most common nucleotide at each consensus position of the alignment.

it will not be displayed if the --no-cnt option is used. and the --cthresh, --cambig, and --athresh options all affect the definition of the consensus sequence, as explained below in the descriptions for those options. (yes, all three. they're a trio. a girl group. ๐Ÿ‘‘)


--tabfile <f> โ€” the spreadsheet moment

if you use the --tabfile <f> option, a tab-delimited text file <f> gets created that includes per-position lists of the numerical values for each of the calculated statistics that were drawn to postscript_output_file.

comment lines in <f> are prefixed with a '#' character, and they explain the meaning of each of the tab-delimited columns and how each of the statistics was calculated. so it's self-documenting, which is honestly so thoughtful of her. โœจ


--indi โ€” one sequence per page, the solo era

if --indi is used, esl-ssdraw creates diagrams showing each sequence in the alignment on a separate page, with aligned nucleotides sitting in their corresponding position in the structure diagram. every sequence gets her own page. every single one. periodt.

by default, basepaired nucleotides will be colored based on their basepair type:

  • Watson-Crick (A:U, U:A, C:G, or G:C)
  • G:U or U:G
  • non-canonical (the other ten possible basepairs)

this coloring can be turned off with the --no-bp option. ๐Ÿ™…

also by default, nucleotides that differ from the most common nucleotide at each aligned consensus position will be outlined. and if the most common nucleotide occurs in more than 75% of sequences that do not have a gap at that position, the outline will be bold. (bold outline = the consensus really said "I'm built different." ๐Ÿ’…)

outlining can be turned off with the --no-ol option.


posterior probability pages

with --indi, if the alignment contains posterior probability annotation (#=GR PP), then postscript_output_file will contain an additional page for each sequence drawn with positions colored by the posterior probability of each aligned nucleotide. so many pages. so much data. obsessed. ๐Ÿ˜ญ

no posterior probability pages will be drawn if the --no-pp option is used.


mask diagrams ๐ŸŽญ

esl-ssdraw can also be used to draw 'mask' diagrams, which color positions of the structure one of two colors depending on if they are included or excluded by a mask.

this is enabled with the --mask-col <f> option. here's the fine print:

  • <f> must contain a single line of <rflen> characters, where <rflen> is the number of nongap RF characters in the alignment
  • the line must contain only '0' and '1' characters
  • a '0' at position <x> of the string indicates position <x> is excluded from the mask
  • a '1' at position <x> indicates position <x> is included by the mask

and if you use the --mask-diff <f2> option, a page comparing the overlap of the <f> mask from --mask-col and another mask in <f2> will be created. two masks, one page, drama incoming. ๐Ÿงš


--mask <f> โ€” drawing the excluded ones differently

if the --mask <f> option is used, positions excluded by the mask in <f> will be drawn differently (as open circles by default) than positions included by the mask.

you can customize the style of the masked positions with the --mask-u, --mask-x, and --mask-a options. make it yours. ๐ŸŒธ


and finally, the customizers

two different types of input files can be used to customize output diagrams, using the --dfile and --efile options, as described below. (yes, below below. we're getting there. ๐Ÿ’œ)

๐Ÿ“ฅ INPUT ๐Ÿ“ฅ

okay bestie, listen up, because the postscript_template_file is that girl with very specific demands ๐Ÿ’…. It has to be in a super particular format for esl-ssdraw to even look at it. And heads up โ€” the specifics of this format, all described below, are likely to change in future versions of esl-ssdraw. Also, plot twist: the postscript_output_file files that esl-ssdraw spits out will not be valid postscript_template_file format. So no, you literally cannot take an output file from esl-ssdraw and feed it back in as a postscript_template_file in a later run of the program. It's giving "one-way street," and we respect it ๐Ÿ™ˆ.

There's an example postscript_template_file called trna-ssdraw.ps shipped right there with the Easel distribution, chillin' in the testsuite/ subdirectory of the top-level easel directory. Iconic reference material, go look at it โœจ.

So the postscript_template_file is a valid postscript file. It's got postscript commands for drawing a secondary structure, and those commands specify x and y coordinates for placing each nucleotide on the page. It might also have commands for drawing lines connecting basepaired positions and tick marks indicating every tenth position โ€” but those two are not required, as we'll get into below.

If postscript is not your moment and you've never met it before, here's the tea ๐Ÿซ–: a postscript page is, by default, 612 points wide and 792 points tall. The (0,0) coordinate of a postscript file is at the bottom left corner of the page. (0,792) is the top left, (612,0) is the bottom right, and (612,792) is the top right. esl-ssdraw uses 8 point by 8 point cells for drawing positions of the consensus secondary structure. The scale section of the postscript_template_file lets you do different "zoom levels," which we'll explain below. And super important: postscript lines beginning with % are treated as comments and do not include postscript commands. Periodt.

An esl-ssdraw postscript_template_file contains n >= 1 pages, each one specifying a consensus secondary structure diagram. Every page is delimited by a showpage line sitting in an ignore section (explained below). esl-ssdraw reads all pages of the postscript_template_file and then picks the appropriate one that corresponds with the alignment in msafile, based on the consensus (nongap RF) length of the alignment. So for an alignment of consensus length <rflen>, the first page of postscript_template_file that has a structure diagram with consensus length <rflen> will be used as the template structure for the alignment. Slay, matching algorithm ๐Ÿ’–.


Each page of postscript_template_file contains blocks of text organized into seven different possible sections. Each section must begin with a single line % begin <sectionname> and end with a single line % end <sectionname>, and have n >= 1 lines in between. On the begin and end lines, there must be at least one space between the % and the begin or end. And <sectionname> has to be one of these:

  • modelname
  • legend
  • scale
  • regurgitate
  • ignore
  • text positiontext
  • text nucleotides
  • lines positionticks
  • lines bpconnects

The n >= 1 lines in between the begin and end lines of each section have to be in a specific format that differs for each section, and we're about to break every single one of them down. No skipping, bestie, this is the whole syllabus ๐Ÿ“š.

Also โ€” big deal, don't miss this โ€” every page must end with an ignore section that includes a single line showpage between the begin and end lines. That's how esl-ssdraw knows a page has ended and another one might follow. It's the page's little "and that's a wrap" ๐ŸŽฌ.

โœจ modelname โœจ

Every page of a postscript_template_file must include a single modelname section. This section must include exactly one line between its begin and end lines. That line must begin with a % character followed by a single space. The remainder of the line gets parsed as the model name, and it will appear on each page of postscript_output_file in the header section. If the name is more than 16 characters, it will be truncated in the output. So keep it cute and keep it short ๐ŸŽ€.

โœจ legend โœจ

Every page of a postscript_template_file must include a single legend section. This section must include exactly one line between its begin and end lines. That line must be formatted as:

% <d1> <f1> <f2> <d2> <f3>

where the pieces go like this:

  • <d1> โ€” an integer specifying the consensus position with relation to which the legend will be placed
  • <f1> and <f2> โ€” the x and y axis offsets for the top left corner of the legend relative to the x and y position of consensus position <d1>
  • <d2> โ€” the size of a cell in the legend
  • <f3> โ€” how many extra points should be between the right hand edge of the legend and the end of the page (the offset of the right hand end of the legend)

For example, the line % 34 -40. -30. 12 0. specifies that the legend be placed 40 points to the left and 30 points below the 34th consensus position, that cells appearing in the legend be squares of size 12 points by 12 points, and that the right hand side of the legend be flush against the right hand edge of the printable page. chef's kiss placement, fr fr ๐Ÿ’….

โœจ scale โœจ

Every page of a postscript_template_file must include a single scale section. This section must include exactly one line between its begin and end lines. That line must be formatted as:

<f1> <f2> scale

where <f1> and <f2> are both positive real numbers that are identical. So for example 1.7 1.7 scale is valid, but 1.7 2.7 scale is not. This line is a valid postscript command which specifies the scale or zoom level on the pages in the output.

If <f1> and <f2> are 1.0, the default scale is used, for which the total size of the page is 612 points wide and 792 points tall. A scale of 2.0 will reduce this to 306 points wide by 396 points tall. A scale of 0.5 will increase it to 1224 points wide by 1584 points tall. A single cell corresponding to one position of the secondary structure is 8 points by 8 points.

For larger RNAs, a scale of less than 1.0 is appropriate โ€” for example, SSU rRNA models (about 1500 nt) use a scale of about 0.6. And for smaller RNAs, a scale of more than 1.0 might be desirable โ€” tRNA (about 70 nt) uses a scale of 1.7. The best way to determine the exact scale to use is trial and error. Vibes-based science, honestly, and we support it ๐Ÿฆ‹.

โœจ regurgitate โœจ

Each page of a postscript_template_file can include n >= 0 regurgitate sections. These sections can include any number of lines. The text in this section will not be parsed by esl-ssdraw, but it will be included in each page of postscript_output_file. So the format of the lines in this section must therefore be valid postscript commands.

An example of content that might live in a regurgitate section: commands to draw lines and text annotating the anticodon on a tRNA secondary structure diagram. Cute little extra annotations, love that for us ๐Ÿซถ.

โœจ ignore โœจ

Each page of a postscript_template_file must include at least 1 ignore section. One of these sections must include a single line that reads showpage. This section should be placed at the end of each page of the template file. Other ignore sections can include any number of lines. The text in these sections will not be parsed by esl-ssdraw, and it will not be included in each page of postscript_output_file.

An ignore section can contain comments, or postscript commands that draw features of the postscript_template_file that are unwanted in the postscript_output_file. It's the "behind the scenes, don't look at me" section ๐Ÿ™ˆ.

โœจ text nucleotides โœจ

Each page of a postscript_template_file must include a single text nucleotides section. This section must include exactly <rflen> lines, indicating that the consensus secondary structure has exactly <rflen> nucleotide positions. Each line must be of the format:

(<c>) <x> <y> moveto show

where <c> is a nucleotide (this can be any character actually), and <x> and <y> are the coordinates specifying the location of the nucleotide on the page โ€” they should be positive real numbers.

The best way to determine what these coordinates should be is manually, by trial and error, by inspecting the resulting structure as you add each nucleotide. And note: esl-ssdraw will color an 8 point by 8 point cell for each position, so nucleotides should be placed about 8 points apart from each other. Give them space, bestie, they need room to breathe ๐Ÿ’–.

โœจ text positiontext โœจ

Each page of a postscript_template_file may or may not include a single text positiontext section. This section can include n >= 1 lines, each specifying text to be placed next to specific positions of the structure โ€” for example, to number them. Each line must be of the format:

(<s>) <x> <y> moveto show

where <s> is a string of text to place at coordinates (<x>,<y>) of the postscript page. Currently, the best way to determine what these coordinates are is manually, by trial and error, by inspecting the resulting diagram as you add each line.

โœจ lines positionticks โœจ

Each page of a postscript_template_file may or may not include a single lines positionticks section. This section can include n >= 1 lines, each specifying the location of a tick mark on the diagram. Each line must be of the format:

<x1> <y1> <x2> <y2> moveto show

A tick mark (line of width 2.0) will be drawn from point (<x1>,<y1>) to point (<x2>,<y2>) on each page of postscript_output_file. Currently, the best way to determine what these coordinates should be is manually, by trial and error, by inspecting the resulting diagram as you add each line.

โœจ lines bpconnects โœจ

Each page of a postscript_template_file may or may not include a single lines bpconnects section. This section must include <nbp> lines, where <nbp> is the number of basepairs in the consensus structure of the input msafile annotated as #=GC SS_cons. Each line should connect two basepaired positions in the consensus structure diagram. Each line must be of the format:

<x1> <y1> <x2> <y2> moveto show

A line will be drawn from point (<x1>,<y1>) to point (<x2>,<y2>) on each page of postscript_output_file. Currently, the best way to determine what these coordinates should be is manually, by trial and error, by inspecting the resulting diagram as you add each line.


๐Ÿง  REQUIRED MEMORY ๐Ÿง 

okay so memory-wise, esl-ssdraw is actually pretty chill. The memory required will be equal to roughly the larger of 2 Mb and the size of the first alignment in msafile. Lowkey nothing ๐Ÿ“.

But if you use the --small option, the memory required will be independent of the alignment size. Tiny queen behavior. Just one catch: to use --small the alignment must be in Pfam format, which is a non-interleaved (1 line/seq) version of Stockholm format.

โš ๏ธ And now the plot twist, and you need to hear this one: if you use the --indi option, the required memory may exceed the size of the alignment by up to ten-fold, and the output postscript_output_file may be up to 50 times larger than the msafile. Fifty. Times. Plan accordingly, bestie, your disk said ๐Ÿ˜ญ.

โœจ OPTIONS โœจ

okay bestie, this is the big one, the main character section, the one you actually came here for ๐Ÿ’… every single flag lives here, so grab a strawberry drink and let's go ๐Ÿ“

  • -h โ€” prints a lil baby help message for you ๐Ÿผ it's got the version number AND a rundown of every single option, even the expert ones (yes, even the ones that are giving "you're not supposed to touch this" energy).
  • -d โ€” draws the default set of alignment summary diagrams, aka the whole starter pack: consensus sequence, information content, mutual information, insert frequency, average insert length, deletion frequency, and average posterior probability (but only if the alignment actually has posterior probability annotation, no cap ๐Ÿงข). now here's the tea: these diagrams get drawn anyway if you pass zero command line options, but using -d is how you add extra pages on top, like individual aligned sequences with --indi. so it's less "please draw" and more "yes and" ๐Ÿ’–
  • --mask <f> โ€” reads the mask from file <f>, and then draws positions differently in postscript_output_file depending on whether the mask includes or excludes them ๐Ÿ‘‘. <f> has to contain a single line of length <rflen> with only '0' and '1' characters, that's it, that's the whole file. <rflen> is the number of nongap characters in the reference (#=GC RF) annotation of the first alignment in msafile. a '0' at position <x> of the mask means position <x> is excluded by the mask, and a '1' means position <x> is included by the mask โœจ
  • --small โ€” memory saving mode, the "my laptop is fighting for its life" option ๐Ÿ˜ญ without --indi, the required RAM will be independent of the size of the alignment in msafile (slay). with --indi, the required RAM will be roughly ten times the size of the alignment in msafile. and for --small to work at all, the alignment must be in Pfam Stockholm (non-interleaved 1 line/seq) format, no exceptions bestie ๐Ÿซถ
  • --rf โ€” adds a page to postscript_output_file showing the reference sequence from the #=GC RF annotation in msafile ๐ŸŽ€ by default, basepaired nucleotides get colored based on what type of basepair they are. want that off? use --no-bp. this page is drawn by default if you use zero command-line options ๐Ÿ’œ
  • --info โ€” adds a page to postscript_output_file with consensus (nongap RF) positions colored based on their information content from the alignment ๐ŸŒˆ information content is calculated as 2.0 - H, where H = sum_x p_x log_2 p_x for x in {A,C,G,U}. this page is drawn by default if you use zero command-line options โœจ
  • --mutinfo โ€” adds a page to postscript_output_file with basepaired consensus (nongap RF) positions colored based on how much mutual information they have in the alignment ๐Ÿ’ซ mutual information is sum_{x,y} p_{x,y} log_2 ((p_x * p_y) / p_{x,y}, where x and y are the four possible bases A,C,G,U. p_x is the fraction of aligned sequences that have nucleotide x in the left half (5' half) of the basepair. p_y is the fraction of aligned sequences that have nucleotide y in the position corresponding to the right half (3' half) of the basepair. and p_{x,y} is the fraction of aligned sequences that have basepair x:y. for all p_x, p_y and p{x,y}, only sequences that have a nongap nucleotide at both the left and right half of the basepair are counted. this page is drawn by default if you use zero command-line options ๐Ÿ‘‘
  • --ifreq โ€” adds a page to postscript_output_file with each consensus (nongap RF) position colored based on the fraction of sequences that span each position that have at least 1 inserted nucleotide after the position ๐Ÿฆ‹ here's the definition, keep up: a sequence s spans consensus position x that is actual alignment position a if s has at least one nongap nucleotide aligned to a position b <= a and at least one nongap nucleotide aligned to a consensus position c >= a. this page is drawn by default if you use zero command-line options ๐Ÿ’–
  • --iavglen โ€” adds a page to postscript_output_file with each consensus (nongap RF) position colored based on the average length of insertions that occur after it ๐Ÿ“ the average is calculated as the total number of inserted nucleotides after position x, divided by the number of sequences that have at least 1 inserted nucleotide after position x (so the minimum possible average insert length is 1.0, just so you know). ngl that's a lot of math but it's giving precise ๐Ÿ’…
  • --dall โ€” adds a page to postscript_output_file with each consensus (nongap RF) position colored based on the fraction of sequences that have a gap (delete) at the position ๐Ÿ•ณ๏ธ this page is drawn by default if you use zero command-line options ๐ŸŒธ
  • --dint โ€” adds a page to postscript_output_file with each consensus (nongap RF) position colored based on the fraction of sequences that have an internal gap (delete) at the position. an internal gap in a sequence is one that occurs after (5' of) the sequence's first aligned nucleotide and after (3' of) the sequence's final aligned nucleotide ๐Ÿงš this page is drawn by default if you use zero command-line options โญ
  • --prob โ€” adds a page to postscript_output_file with positions colored based on average posterior probability (PP) ๐Ÿ”ฅ the alignment must contain #=GR PP annotation for all sequences, periodt. PP annotation gets converted to numerical PP values like this: '*' = 0.975, '9' = 0.90, '8' = 0.80, '7' = 0.70, '6' = 0.60, '5' = 0.50, '4' = 0.40, '3' = 0.30, '2' = 0.20, '1' = 0.10, '0' = 0.025. this page is drawn by default if you use zero command-line options ๐Ÿ’œ
  • --span โ€” adds a page to postscript_output_file with consensus (nongap RF) positions colored based on the fraction of sequences that 'span' the position ๐ŸŒˆ and again the definition: a sequence s spans consensus position x that is actual alignment position a if s has at least one nongap nucleotide aligned to a position b <= a and at least one nongap nucleotide aligned to a consensus position c >= a. this page is drawn by default if you use zero command-line options ๐ŸŽ€

๐Ÿฆ‹ OPTIONS FOR DRAWING INDIVIDUAL ALIGNED SEQUENCES ๐Ÿฆ‹

  • --indi โ€” adds a page displaying the aligned nucleotides in their corresponding consensus positions of the structure diagram, for every aligned sequence in the alignment ๐Ÿ™ˆ by default, basepaired nucleotides get colored based on what type of basepair they are. want that off? use --no-bp. and if posterior probability information (#=GR PP) exists in the alignment, one extra page per sequence gets drawn displaying the posterior probabilities. so many pages, so little time ๐Ÿ˜ญ
  • -f โ€” with --indi, forces esl-ssdraw to create a diagram even if it's predicted to be large (> 100 Mb) ๐Ÿ’€ by default, if the predicted size exceeds 100 Mb, esl-ssdraw will fail with a warning. so -f is the "I know what I'm doing, let me cook" flag ๐Ÿ”ฅ

๐ŸŒธ OPTIONS FOR OMITTING PARTS OF THE DIAGRAMS ๐ŸŒธ

  • --no-leg โ€” omits the legend on all pages of postscript_output_file ๐Ÿ™…โ€โ™€๏ธ
  • --no-head โ€” omits the header on all pages of postscript_output_file ๐Ÿ™…
  • --no-foot โ€” omits the footer on all pages of postscript_output_file ๐Ÿ™…โ€โ™€๏ธ

๐Ÿ’… OPTIONS FOR SIMPLE TWO-COLOR MASK DIAGRAMS ๐Ÿ’…

  • --mask-col โ€” with --mask, postscript_output_file will contain exactly 1 page showing positions included by the mask as black squares, and positions excluded as pink squares ๐Ÿ–ค๐Ÿฉท (pink squares?? the aesthetic, we love to see it)
  • --mask-diff <f> โ€” with --mask <f2> and mask-col, postscript_output_file will contain one additional page comparing the mask from <f> and the mask from <f2> ๐Ÿ‘€ positions get colored based on whether they are included by one mask and not the other, excluded by both masks, and included by both masks. a whole comparison arc, iconic โœจ

๐Ÿ‘‘ EXPERT OPTIONS FOR CONTROLLING INDIVIDUAL SEQUENCE DIAGRAMS ๐Ÿ‘‘

  • --no-pp โ€” when used in combination with --indi, do not draw posterior probability structure diagrams for each sequence, even if the alignment has PP annotation ๐Ÿšซ
  • --no-bp โ€” do not color basepaired nucleotides based on their basepair type ๐Ÿšซ
  • --no-ol โ€” when used in combination with --indi, do not outline nucleotides that differ from the majority rule consensus nucleotide given the alignment โœ๏ธ
  • --no-ntpp โ€” when used in combination with --indi, do not draw nucleotides on the individual sequence posterior probability diagrams ๐Ÿšซ

  • --no-cnt โ€” do not draw consensus nucleotides on alignment statistic diagrams (like information content diagrams, for example) ๐Ÿšซ so by default, the consensus nucleotide is defined as the most frequent nucleotide in the alignment at the corresponding position. consensus nucleotides that occur in at least <x> fraction of the aligned sequences (that don't contain a gap at the position) are capitalized. by default <x> is 0.75, but you can change it with the --cthresh <x> option ๐Ÿ’–
  • --cthresh <x> โ€” specify the threshold for capitalizing consensus nucleotides defined by the majority rule (i.e. when --cambig is not enabled) as <x> โœจ
  • --cambig โ€” changes how consensus nucleotides are calculated, from majority rule to the least ambiguous IUPAC nucleotide that represents at least <x> fraction of the nongap nucleotides at each consensus position ๐Ÿงฌ by default <x> is 0.9, but you can change it with the --athresh <x> option ๐Ÿ’œ
  • --athresh <x> โ€” with --cambig, specify the threshold for defining consensus nucleotides as the least ambiguous IUPAC nucleotide that represents at least <x> fraction of the nongap nucleotides at each position ๐ŸŒŸ

๐ŸŒˆ EXPERT OPTIONS CONTROLLING STYLE OF MASKING POSITIONS ๐ŸŒˆ

  • --mask-u โ€” with --mask, changes the style of masked columns to squares โฌ›
  • --mask-x โ€” with --mask, changes the style of masked columns to x's โŒ
  • --mask-a โ€” with --mask and --mask-u or --mask-x, draws the alternative style of square or 'x' masks ๐Ÿ”€

okay bestie these are the file-reading ones, and they're lowkey the most powerful and highkey the most fiddly ๐Ÿ’… read carefully fr fr

  • --dfile <f> โ€” read the 'draw file' <f> which hands over numerical values for each consensus position in one or more postscript pages. For each page, the draw file has to include <rflen>+3 lines (and <rflen> is defined back up in the DESCRIPTION section, go look ๐Ÿ‘€). The first three lines are special. The following <rflen> 'value lines' each must contain a single number โ€” the numerical value for the corresponding position. Let's talk about those three special lines:
    • The first of the three special lines defines the 'description' for the page. This should be text describing what the numerical values refer to for the page. Max allowable length is roughly 50 characters (the exact max depends on the template file, and the program will report an informative error message upon execution if you exceed it โ€” it's giving helpful, not shady ๐Ÿซถ).
    • The second special line defines the 'legend header' line that will appear immediately above the legend. It has a max allowable length of about 30 characters.
    • The third special line per page must contain exactly 7 numbers, which must be in increasing order, each separated by a space. These numbers define the numerical ranges for the six different colors used to draw the consensus positions on the page. Number one defines the minimum value for the first color (blue) and must be less than or equal to the minimum value from the value lines. Number two defines the minimum value for the second color (turquoise). Numbers three, four, five and six define the minimum values for the third, fourth, fifth and sixth colors (light green, yellow, orange, red), and the seventh and final number defines the maximum value for red and must be equal to or greater than the maximum value from the value lines.

After the <rflen> value lines, there must exist a special line with only //, signifying the end of a page. The draw file <f> must end with this special // line, even if it only includes a single page. A draw file specifying <n> pages should include exactly <n> * (<rflen> + 4) lines. do the math, bestie ๐Ÿงฎโœจ

  • --efile <f> โ€” read the 'expert draw file' <f> which specifies the colors and nucleotides to draw on each consensus position in one or more postscript pages. Unlike with the --dfile option, no legend will be drawn when --efile is used โ€” not a single one, periodt ๐Ÿ™…โ€โ™€๏ธ. For each page, the draw file must include <rflen> lines, each with four or five tab-delimited tokens. The first four tokens on line <x> specify the color to paint position <x> and must be real numbers between 0 and 1. Those four numbers specify the cyan, magenta, yellow and black values, respectively, in the CMYK color scheme for the postscript file. The fifth token on line <x> specifies which nucleotide to write on position <x> (on top of the colored background). If the fifth token does not exist, no nucleotide will be written โ€” it's giving minimalist ๐Ÿฆ‹.

After the <rflen> lines, there must exist a special line with only //, signifying the end of a page. The expert draw file <f> must end with this special // line, even if it only includes a single page. An expert draw file specifying <n> pages should include exactly <n> * (<rflen> + 1) lines. (yes it's + 1 here and + 4 for --dfile, they are DIFFERENT, do not mix them up i am begging ๐Ÿ˜ญ)

  • --ifile <f> โ€” read insert information from the file <f>, which may have been created with INFERNAL's cmalign(1) program. The insert information in msafile will be ignored and the information from <f> will supersede it โ€” new info wins, no debate ๐Ÿ‘‘. Inserts are columns that are gaps in the reference (#=GC RF) annotation. iykyk.

๐ŸŒˆ SEE ALSO ๐ŸŒˆ

http://bioeasel.org/


Copyright (C) 2020 Howard Hughes Medical Institute.

Freely distributed under the BSD open source license.


๐Ÿฆ‹ AUTHOR ๐Ÿฆ‹

http://eddylab.org


and that's the whole page bestie, you ate it ๐Ÿ’…โœจ this was Easel 0.48, dated Nov 2020, and it's the manual for esl-ssdraw(1) โ€” go draw something iconic with it, ily, mwah ๐ŸŽ€๐Ÿ’–๐Ÿซถ

๐Ÿ“ฆ where this page comes from