Introduction to Table-maker on the WWW

see also Dave Matthews' Using TableMaker, which documents the xace table-maker
[Try it out!]
Although the data in ACEDB is organized into individual objects, it is possible to extract this information in tabular form. Each column in the table is the result of a query; thus, table-maker can be used for queries which go beyond what ACEDB allows for a single query.

Each table begins with a single class in column 1. Here's the section of the table-maker form for GrainGenes which pertains to setting up the first column:

Column 1:

What does each of these fields mean?
The title for the whole table; this field is optional, and is purely for display.
This determines whether or not this column will be displayed. For now, keep all the columns visible. Later we'll cover building a table with hidden columns, which are useful for adding queries.
Hmm... a button with only one setting. Other columns may be optional; that is, if an object doesn't meet the criterion for a given column, the space is left blank. If the column is mandatory (as it always is for the first column), only those objects with data that fit the condition are left in the table.
A table has to start somewhere. In the first column, we must choose a class from which to build the rest of the table. In this example, we'll choose Colleague.
This is a blank for entering an optional ace query, which limits the list of objects in this column. The simplest query to enter here is a string match; for now, we'll leave it blank.
Moving along now to the second column, we see that the setup is slightly different:

Column 2:

The Class selection list is gone, and some new fields are included:
Every column past the first is derived from a previous column. There are two ways to construct the new column; 'From' is the default, and means that the class in the previous column will be used as the base class for choosing the field for this column.
Columns can be derived only from those to the left; in column 2, the only valid choice is '1'. Later columns will have more choices.
Tag Chooser
To choose a field to show in this column, click this button. What it shows is the model of the class, with radio buttons placed next to each tag or field; in this example, it will show the model for Colleague:

Model : ?Colleague

Position Text 
Profession Text 
Address Mail ?Text 
          Street Text 
          City ?Text 
          State ?Text 
          Postal_code ?Text 
          Country ?Text 
          Phone Text 
          Fax Text 
          E_mail Text 
          Telex Text 
Research_interest ?Text 
Image ?Image 
Publishes_as ?Author 
Last_update ?Text 
Obtained_from ?Source Text 

Let's display the e-mail address. To do this, click the button by the Text field next to the E_mail tag; don't click the button next to the tag, since this will simply show the tag in the table. After choosing this field, click the 'Continue' button. This returns to the column setup page. Let's make one final change: make column 2 mandatory, so that only colleagues with an e-mail address will show up in the table. Now we're ready to see the table. Click on get html table, and you should see this table (click here for the whole page) :
Colleague                           E_mail                                                                                  
Anderson, James A.                                                                       
Armstrong, Erin                     75671.3535@COMPUSERVE.COM                                                               
Bakkeren, Guss                                                                               
Barrett, James A.                                                                          
Baum, Bernard R.                                                                            
Choo, T.M. (Alek)                                                                              
CIMMYT                              username@CIMMYT.MX                                                                      
Close, Timothy J.                                                                          
Coppock, Daren                                                                              
Dahleen, Lynn                                                                           
Davis, P. Michael                                                                         
DePauw, Ron M.                      DEPAUW@SKRSSC.AGR.CA                                                                    
DeScenzo, Richard A.                                                                          
Devos, Katrien M.                                                                                
Dofing, Stephen M.                                                                          
Dunford, Roy                                                                                    
Fortin, Marc                                                                                  
Gale, Michael D.                                                                               
Giese, Henriette                                                                                  

By no means are we limited to two columns for the table; let's add another column, by clicking on the new column button in the header or footer of the column setup page, and then configure the column to list any pictures. This column is also derived from column 1, so there's no need to change 'From 1'. Let's make this an optional field. Using the tag chooser, click on the button next to ?Image, then continue. The final table should look like this.

A more involved example

Let's build a table showing all the loci on a given map (say, Hordeum-Giese1-7H, with their associated position and error values. There are two ways to begin this table; one way is to make the first column the Locus class, which can be narrowed down to only the loci which are on a given map. However, the locus class is fairly large, and this could be a time-consuming query. Instead, we'll start with column 1 as the Map we're interested in:
Column 1:

Now we have to use the tag chooser to pick the field to be displayed in column 2 (which we'll make mandatory and visible); choose the ?Locus field, next to the tags "Contains Locus".

Model : ?Map

Type Genetic 
Mapping_data ?Map_Data 
Display Non_graphic 
          Title ?Text 
          Remark Text 
          Unit Text 
          Centre Float Float 
          Extent Float Float 
          Default_view ?View 
          Minimal_view ?View 
          View ?View 
Inherits From_map ?Map 
           Author Text 
           Date Text 
Main_Marker Main_Locus ?Locus 
Contains Locus ?Locus            <----- choose this field
           Chrom_Band ?Chrom_Band 
           Rearrangement ?Rearrangement 
           Contig ?Contig 

Add a new column, to get information from each of the loci. This time, the third column will be derived from the Locus class in column two, so change 1 to 2 after 'From'. This time, when clicking on the tag chooser, it will bring back the model for ?Locus:

Model : ?Locus

Type RFLP 
Homoeology_name ?Locus 
Other_name ?Locus ?Reference 
Correct_name ?Locus ?Reference 
Previous_name ?Locus ?Reference 
Current_name ?Locus ?Reference 
Location Chromosome ?Text 
           Chromosome_arm ?Text 
           Map ?Map #map_position 
           Main_Marker ?Map 
           Inside Chrom_Band ?Chrom_Band 
           Rearrangement ?Rearrangement 
Probe ?Probe ?Reference 
TABLE ?Text 
Mapped_bands ?Restriction Float ?Germplasm ?Text 
Linked_QTL ?QTL 
Associated_gene ?Gene 
Candidate_gene ?Gene 
Image ?Image 
Data ?Map_Data 
Mapping_data Well_ordered 
               2_point ?2_Point_Data 
Rearrangement_data Uncovered_by ?Rearrangement 
                     Not_uncovered_by ?Rearrangement 
                     Carried_by ?Rearrangement 
                     Not_carried_by ?Rearrangement 
Reference ?Reference 
Data_source ?Colleague Text 
Remarks Text 
Candidate_orthology_group ?Locus 
Possible_orthologues ?Locus 
Gale_orthology_group ?Locus 
Gale_orthologues ?Locus 
Note that there are fields which aren't currently clickable. That is because acedb can only access rooted tags and the fields next to them; any fields futher out can be added to the right of a previous column. In order to get to #map_position, we first have to select ?Map, then add another column. (Remember to set the condition for ?Map to match the original, in case this locus is on multiple maps). This final column should be derived not From the Locus column, but Right_of the Map column. On this final trip through the tag chooser, we get the model of map_position:

Model : ?map_position

Position Float #map_error Ends Left Float #map_error Right Float #map_error Multi_Position Float #map_error Multi_Ends Float Float
Choose the float field next to Position, and continue. Let's sort by the position, so set the sort column to 4; also, hide the map names and put it in the title, instead. The final table should look like this:

Table-maker : "Hordeum-Giese1-7H"

Map                 Locus       Map                 HERE # Position 
Hordeum-Giese1-7H   Xris17      Hordeum-Giese1-7H     0 
Hordeum-Giese1-7H   Est5        Hordeum-Giese1-7H    25 
Hordeum-Giese1-7H   Prx4        Hordeum-Giese1-7H    32 
Hordeum-Giese1-7H   OB06-850    Hordeum-Giese1-7H    80 
Hordeum-Giese1-7H   OH14-1600   Hordeum-Giese1-7H    80 
Hordeum-Giese1-7H   OD12-520    Hordeum-Giese1-7H    83 
Hordeum-Giese1-7H   Xris15      Hordeum-Giese1-7H    83 
Hordeum-Giese1-7H   Xris25c     Hordeum-Giese1-7H    87 
Hordeum-Giese1-7H   PSR129      Hordeum-Giese1-7H    98 
Hordeum-Giese1-7H   Xris44      Hordeum-Giese1-7H   100 
Hordeum-Giese1-7H   Xris19      Hordeum-Giese1-7H   134 
Hordeum-Giese1-7H   Acp2        Hordeum-Giese1-7H   138 
Hordeum-Giese1-7H   OH11-560    Hordeum-Giese1-7H   153