Building framework maps

Framework maps are maps that are supposedly firmly ordered (weakly ordered markers are not included). Such maps can be build by CarthaGene using a stepwise marker insertion method called buildfw.

This command uses an incremental insertion method. It tries to insert non inserted markers in a current map. For a given marker that could be inserted, it tries to insert the marker at all possible position of the map. The difference in loglikelihood between the best insertion and the second best insertion is used to qualify the marker. The marker inserted in practice is the marker that maximizes this difference and such that this difference is larger than a first threshold (Adding Threshold). The marker is inserted at its optimal position. However, if there are orders whose difference in loglikelihood with this best position is less than a second threshold (the Keep Threshold), they are also kept as possible new starting point for the next marker to be inserted.

Note that the build process may start from an empty map or from an existing order (that must contain at least 3 markers). Finally, when all insertable markers have been inserted, the map is kept aside and the remaining marker are tentatively inserted, one by one, in all possible positions in this map and then removed. For each such marker, the command reports how the loglikelihood changes wrt to the best inseryion point. The best position is marked with a ``+''. The difference in loglikelihood between the best position and each position are printed out if this difference is less than a threshold. When the last parameter of buildfw is set to 0, this last step (testing all remaining loci) is not performed. More complex postprocessing are possible, see the reference user documentation.

Let us test this command on our data. We will use a Keep and Adding threshold of $3.0$ LODs, starting the build process from the empty map and trying to position remaining markers.

CG> buildfw 3 3 {} 1

BuildFW, Adding  Threshold = 3.00, Saving Threshold = 3.00.

>>> Delta = 5.23 :

Map  0 : log10-likelihood =   -44.30
-------:
 Set : Marker List ...
   1 : T035 L001 M237

>>> Delta = 5.34 , Id = 220,  Locus = M232 :

Map  0 : log10-likelihood =   -47.13
-------:
 Set : Marker List ...
   1 : T035 L001 M232 M237

>>> Delta = 4.01 , Id = 255,  Locus = A036 :

Map  0 : log10-likelihood =   -55.54
-------:
 Set : Marker List ...
   1 : T035 L001 M232 M237 A036

>>> Delta = 3.53 , Id = 284,  Locus = A079 :

Map  0 : log10-likelihood =   -59.57
-------:
 Set : Marker List ...
   1 : T035 L001 A079 M232 M237 A036

>>> Delta = 3.21 , Id = 20,  Locus = L029 :

Map  0 : log10-likelihood =   -67.59
-------:
 Set : Marker List ...
   1 : L029 T035 L001 A079 M232 M237 A036

BuildFW, remaining loci test :
       |       2 2 1 2  |
       | 2 8 4 8 2 8 5  |     Lod2pt         Dist2pt
       | 0 5 2 4 0 6 5  |  Left<-M->Right Left<-M->Right | 0->N    N->M | W...
     --|----------------|--------------------------------|--------------|--...
  A059 |    2 +         |  19.88   18.40     1.1   2.2   |   20.3   1.1 |  ...
  D022 |  2 +           |   9.64    6.37     2.4  10.4   |    6.3   2.6 |  ...
  M030 |      0 +       |  21.67   15.97     0.0   3.5   |   23.7  0    |  ...
  M076 |          + 0   |  12.97   19.87     5.9   0.0   |   33.1  0    |  ...
  M034 |            + 0 |  12.97   21.37     5.9   0.0   |   39.0  0    |  ...
  T018 |        2 +     |  17.79   12.82     1.2   4.9   |   27.1   1.1 |  ...
  L078 |  + 0           |  13.87   21.37     5.9   0.0   |    6.3  0    |  ...
  L010 |0 +             |  18.06   12.85     0.0   4.1   |    0.0  0    |  ...
Here the map produced contains only 7 markers. The additional uninserted markers list (A059, D022, M030, M076, M034, T018, L078, L010) contain all the 5 ``possible double markers'' identified by the mrkdouble command which is good news. The final map produced is automatically used as the best map. It is supposed to be firmly ordered as we can check with a flips command:
CG> flips 6 3.0 1

Repeated Flip(window size : 6, threshold : 3.00).


Map -1 : log10-likelihood =   -67.59
-------:
 Set : Marker List ...
   1 : L029 T035 L001 A079 M232 M237 A036

       2 2 1 2
 2 8 4 8 2 8 5  log10
 0 5 2 4 0 6 5    -67.59
which finds no better order at $3.0$ LOD units.

We can check with a polish command:

CG> polish

Local map analysis:

        L029  T035  L001  A079  M232  M237  A036
      ------------------------------------------
 L029 |-----   3.2  19.9  21.1  19.9  23.2  12.3
 T035 |  3.2 -----  16.7  18.4  18.1  23.0  14.2
 L001 | 13.0  16.7 -----   3.5   7.2  15.7  12.3
 A079 | 13.9  19.6   3.5 -----   4.1  13.3  10.9
 M232 | 14.6  20.2   5.7   4.1 -----  10.0  10.0
 M237 | 15.0  24.0  12.6  13.7  10.0 -----   4.0
 A036 | 11.9  22.4  12.9  15.8  13.2   4.0 -----
      ------------------------------------------
which finds no better order at $3.0$ LOD units.

To check the quality of the map even more thoroughly, we can use map improving commands such as annealing or greedy. In the process of trying to improve the current framework map, these commands may identify a map whose loglikelihood, if not better than the current map's loglikelihood, may still be close enough to prove that the current map is not a valid framework map. In order to stop the search process as soon as such a map is found, we can use the cgrobustness command. The threshold given to the command indicates that every search should stop as soon as a map is found whose loglikelihood is within the threshold of the best map's loglikelihood.

CG> cgrobustness 3.0
We now try to improve the map using the greedy command.
CG> greedy 1 0 5 30

Map -1 : log10-likelihood =   -67.59
-------:
 Set : Marker List ...
   1 : L029 T035 L001 A079 M232 M237 A036
Run number 0
----*-*********-*****-*--*
which does not find any counter-example that proves that our map is not a framework map. We now remove the previous threshold using the cgnorobust command:
CG> cgnotrobust

Thomas Schiex 2009-10-27