Manipulating and viewing assemblies in the FAKtory software can be done in one of the three main working panels.
Manipulating and Viewing Assemblies The FAKtory maintains a master layout cache of possible assemblies which may be viewed and individually manipulated in the Layout Edit panel. Like the Fragments and Finishing panels, this is one of FAKtory's three main working panels where one actually processes data, as opposed to configuring things in order to process data. We refer to assemblies as layouts
in this panel, as the intent here is to manipulate and study the
assemblies at the level of how the fragments have been arranged, rather
than at the level of the individual bases in them which is the domain
of the Finisher panel (see Section 10).
Each fragment is always represented in this panel as a line or stick
whose proportionate length reflects that of the fragment's sequence,
and whose position in the stick layout depicting the assembly
shows how it interacts with all the other fragments. The focus of this
panel is to allow a user to experiment and interact with the space of
all possible assemblies of the data by adding and deleting constraints,
manually locking, splitting, or joining contigs, and adding new
fragments to existing assemblies. The FAKtory is unique in its concept
of allowing a user to manipulate and experiment with a number of
distinct assembly objects.
One or more assembly objects are added
to the FAKtory's layout cache whenever a user advances a set of
fragments through the final Assembly stage of the fragment pipeline. The exact process is as follows. First, any configured constraint matchers (see Section 8)
are applied to the given set of fragments and the specified constraints
attached to specific pairs of fragments. Then the FAKII assembly kernel
is invoked on this set of fragments, producing up to k-best assemblies where k can be specified in the Assembly Preferences
panel that contains a number of other useful configuration options for
controlling the assembly. These assemblies are then added to the layout
cache. Note carefully, that only the subset of fragments advanced
through the Assembly stage are passed to the kernel for assembly, which
is not necessarily every fragment in the FAKtory's database.
Furthermore, every such advance produces new, distinct assembly objects
to be added to FAKtory's layout cache.
The top portion of the
Layout Edit panel is designed for viewing the set of layouts currently
on the layout cache. It consists of a scrollable display of these
assemblies that can present them in a number of visual styles. First,
each assembly can be presented as either a stick layout or a 3'/5'
coverage plot, with or without summary statistics for each contig. One
may zoom in and out on these presentations in either dimension of the
graphic display. One may optionally view the parameters that were used
to produce the assembly, the number of contigs in it, and the number of
fragments that did not overlap with any others. Finally, one may also
compare one assembly to all the others in the list by clicking on the
assembly and then on the Compare
button. Each contig of the selected assembly is distinctly colored, and
the fragments in every other assembly are colored according to the
color they have in the selected assembly. This simple mechanism allows
one to easily see rearrangements in the data between solutions.
Conceptually layouts consist of an assembly and a set of constraints.
As described above, layouts can be generated and added to the layout
list by advancing fragments through the Assembly stage of the pipeline.
One may also delete layouts from the layout cache. A third and powerful
option, is where one edits the set of constraints for a layout and then
reassembles it, possibly with some new fragment sequences if
desired. Precisely speaking, the reassembly of a layout consists of
taking (1) the fragments in the layout, (2) the current set of
constraints for the layout, and (3) possibly some new fragments and
concomitant new constraints inferred by matchers, submitting these to
the FAKII assembly kernel, and adding the resulting assembly objects to
the layout cache. This reassembly mechanism can be utilized in a number
of ways as illustrated below.
The lower portion of the Layout
Edit panel is the layout editing area. One can select a layout from the
master layout cache in the top portion and load it into the editing
area. Thereupon one may split some contigs apart, and join
others along ``weak'' overlaps between their end fragments. Both of
these operations are achieved by (an implicit) reassembly. One may also
lock sets of fragments together, which adds constraints to the
layout so that it is guaranteed that these fragments will always be in
the same relative positions with respect to one another if ever
reassembled. One can visualize the constraints that are in force for
the layout in the editing area, and can either add or delete
constraints individually for this layout. The resulting layout may then
be put back into the layout cache, either replacing its former instance
or as a new layout object. Often, however, what one will do after
locking fragments and editing constraints, is to hit the ReAssemble
button to see how the fragments assemble under the modified
constraints. The results appear in the layout cache where they may be
discarded or kept according to the user's evaluation of the results.
Such an explicitly requested reassembly will also involve any fragments
in the current selection of the Fragment panel, permitting one to
incorporate new data into the assembly, if desired.
In
summary, our idea is to create a ``scratch pad'' where one can
experiment and interact with layouts in a very general way. One can
remove or add some constraints, and then reassemble to see what they
get. If the result looks right, the user can keep it, and if not,
discard it. We finish with a couple of examples that hopefully convey
the flexibility of the assembly/reassembly cycle provided by the Layout
Editor. Late in a project, a few reactions are resequenced or some gaps
are filled by PCR. One can lock the entire the current solution and
reassemble it with the new data, in which case the new fragments will
be incorporated without disturbing the existing assembly. In the final
example, one may have several dual-end sequencing constraints that are
actually incorrect due to lane tracking problems. One can resolve the
problems they cause by deleting suspect constraints and seeing how the
solution changes without them.
|