|Next| |Contents| |Previous|

9. The Layout Edit Panel:

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.



|Previous| |Contents| |Next|