If you want to have this newsletter mailed to you or you want to make comments/suggestions about the format/content then send an email to acedb@sanger.ac.uk.
This month, some new homology drawing tags/code, some bug fixes and some general gubbins for developers.
More smap and more smap and more smap.
From the xace "Preferences" dialog you can now specify a path for the script that launches the stand alone version of blixem (you need to set the BLIXEM_EXTERNAL preference to use the stand alone version). This allows users to select which version of blixem they want to run which can be useful for testing new versions.
The FMap display now supports drawing of lines between the blocks for a single feature, e.g. all the blocks of a single homolgy match. This is very useful when there are lots of homologies in a column or when a homology is spread out over a long distance as it makes it easy to see which blocks belong with each other or whether there are further blocks off screen. This is extended for EST read pairs so that the blocks for each match are joined by lines and the pair are also joined with a dashed line. The line drawing is turned on when the display mode for a feature/homology column is set to "cluster" (cluster mode already vertically aligns the blocks for each feature).
Line drawing for all features is controlled by:
Join_blocks
:This is a new tag in the Display
section of the ?Method
class, if present in the Method object
for a feature then blocks will be joined by lines when the column display mode is "cluster".
In addition to specifying the Join_blocks
tag,
connecting of EST read pairs by a dashed
line is controlled by the following tags within the two Sequence
class objects representing the EST read pair:
Paired_read ?Sequence XREF Paired_read
: each EST Sequence object
must cross reference the other.
EST_5
or EST_3
: one EST Sequence object must have the
EST_5
tag and one the EST_3
tag to
indicate whether they are the 5' or 3' read.
Fixed a small buglet in "Model" command which meant code read past the end of the class definition to be displayed and showed irrelevant comments that happened to follow the definition.
The code now crashes if it cannot write the database.map file, it used to fail silently potentially leaving a corrupted database.
Homols that have the Show_in_reverse_orientation tag set get swopped to the opposite strand, they must be swopped back to their original strand when passed to Blixem.
If you wish to make comments/suggestions about any of the below, please mail them to acedb@sanger.ac.uk
messcrash message format: The format of the message now contains information about the program running, userid etc. in a more easily parsed/uniform way:
// FATAL ERROR (ruid: XXX, euid: XXX, nodeid: XXX, program: XXX, version: XXX, file: XXX.c, line: XXXX)
- Unable to update database/database.map file (system error 13 - Permission denied)
messcrash
optional abort()
call: You can control whether messcrash calls
abort()
or not using the messAbortOnCrash()
routine prior to the messcrash call. This
call is used in the implementation of the messAssert()
macro described below.
A safer hprintf(): hprintf()
(and other XXprintf style routines)
have been a problem in Standard C because there was no way to tell whether you had
allocated a big enough buffer to hold the string that they produce. Some operating
systems and the latest version of the C standard library overcome this to some
extent with XXnprintf versions of the calls which print at most "n" characters.
Glib already provides these type of calls, e.g. g_vsnprintf(), and hprintf() now
makes use of this.
Some messNNN macros(): The following macros have been added to regular.h which should help with producing concise but error-checking code:
messCheck( var = func(arg1, arg2), cond) ;
messCheck( func(arg1, arg2), cond) ;
Note that you don't have to assign the function result to a variable and that
"cond" should be a simple equality test like != 0 or == NULL.
If the checks fail then messcrash is called with a string which shows the condition that failed.
You can now set the graph line style via the graphLineStyle()
call to either
GRAPH_LINE_SOLID
or GRAPH_LINE_DASHED
.
There is a new graphBoxSetDim()
function which you can use to set the dimensions
of a box, this enables you to do things like draw a single pixel wide line but
in a box that is several pixels wide so that the user can more easily click on the
line (this is used in the homology block line drawing code so that the user
can click on the lines between homology boxes to select that particular homology match.
The smap code now makes use of the NO_OVERLAP_EXTERNAL status flags to detect which end of a feature has been clipped if the feature extends beyond the end of the current smap. We can make use of this to draw at least part of very long features that extend beyond the ends of the current FMap context for instance.
Apologies, once again there was no build this month due to the major SMap development work.