latest news

Distractions and amusements, with a sandwich and coffee.

And she looks like the moon. So close and yet, so far.
•
• aim high
• more quotes

I collaborated with Scientific American to create a data graphic for the September 2014 issue. The graphic compared the genomes of the Denisovan, bonobo, chimp and gorilla, showing how our own genomes are almost identical to the Denisovan and closer to that of the bonobo and chimp than the gorilla.

Here you'll find Hilbert curve art, a introduction to Hilbertonians, the creatures that live on the curve, an explanation of the Scientific American graphic and downloadable SVG/EPS Hilbert curve files.

There are wheels within wheels in this village and fires within fires!

— Arthur Miller (The Crucible)

The Hilbert curve is one of many space-filling curves. It is a mapping between one dimension (e.g. a line) and multiple dimensions (e.g. a square, a cube, etc). It's useful because it preserves locality—points that are nearby on the line are usually mapped onto nearby points on the curve.

The Hilbert curve is a line that gives itself a hug.

It's a pretty strange mapping, to be sure. Although a point on a line maps uniquely onto the curve this is not the case in reverse. At infinite order the curve intersects itself infinitely many times! This shouldn't be a surprise if you consider that the unit square has the same number of points as the unit line. Now that's the real surprise! So surprising in fact that it apparently destabilized Cantor's mind, who made the initial discovery.

Bryan Hayes has a great introduction (Crinkly Curves) to the Hilbert curve at American Scientist.

If manipulated so that its ends are adjacent, the Hilbert curve becomes the Moore curve.

The order 1 curve is generated by dividing a square into quadrants and connecting the centers of the quadrants with three lines. Which three connections are made is arbitrary—different choices result in rotations of the curve.

The order 6 curve is the highest order whose structure can be discerned at this figure resolution. Though just barely. The length of this curve is about 64 times the width of the square, so about 9,216 pixels! That's tight packing.

By order 7 the structure in the 620 pixel wide image (each square is 144 px wide) cannot be discerned. By order 8 the curve has 65,536 points, which exceeds the number of pixels its square in the figure. A square of 256 x 256 would be required to show all the points without downsampling.

Two order 10 curves have 1,048,576 points each and would approximately map onto all the pixels on an average monitor (1920 x 1200 pixels).

A curve of order 33 has `7.38 * 10^19` points and if drawn as a square of average body height would have points that are an atom's distance from one another (`10^{-10}` m).

By mapping the familiar rainbow onto the curve you can see how higher order curves "crinkle" (to borrow Bryan's term) around the square.

order | points | segments | length |

`n` | `4^n` | `4^{n-1}` | `2^n-2^{-n}` |

1 | 4 | 3 | 1.5 |

2 | 16 | 15 | 3.75 |

3 | 64 | 63 | 7.875 |

4 | 256 | 255 | 15.9375 |

5 | 1,024 | 1,023 | 31.96875 |

6 | 4,096 | 4,095 | 63.984375 |

7 | 16,384 | 16,383 | 127.9921875 |

8 | 65,536 | 65,535 | 255.99609375 |

9 | 262,144 | 262,143 | 511.998046875 |

10 | 1,048,576 | 1,048,575 | 1023.9990234375 |

11 | 4,194,304 | 4,194,303 | 2047.99951171875 |

12 | 16,777,216 | 16,777,215 | 4095.99975585938 |

13 | 67,108,864 | 67,108,863 | 8191.99987792969 |

14 | 268,435,456 | 268,435,455 | 16383.9999389648 |

15 | 1,073,741,824 | 1,073,741,823 | 32767.9999694824 |

16 | 4,294,967,296 | 4,294,967,295 | 65535.9999847412 |

17 | 17,179,869,184 | 17,179,869,183 | 131071.999992371 |

18 | 68,719,476,736 | 68,719,476,735 | 262143.999996185 |

19 | 274,877,906,944 | 274,877,906,943 | 524287.999998093 |

20 | 1,099,511,627,776 | 1,099,511,627,775 | 1048575.99999905 |

21 | 4,398,046,511,104 | 4,398,046,511,103 | 2097151.99999952 |

22 | 17,592,186,044,416 | 17,592,186,044,415 | 4194303.99999976 |

23 | 70,368,744,177,664 | 70,368,744,177,663 | 8388607.99999988 |

24 | 281,474,976,710,656 | 281,474,976,710,655 | 16777215.9999999 |

You can download the basic curve shapes for orders 1 to 10 and experiment yourself. Both square and circular forms are available.

Decision trees classify data by splitting it along the predictor axes into partitions with homogeneous values of the dependent variable. Unlike logistic or linear regression, CART does not develop a prediction equation. Instead, data are predicted by a series of binary decisions based on the boundaries of the splits. Decision trees are very effective and the resulting rules are readily interpreted.

Trees can be built using different metrics that measure how well the splits divide up the data classes: Gini index, entropy or misclassification error.

When the predictor variable is quantitative and not categorical, regression trees are used. Here, the data are still split but now the predictor variable is estimated by the average within the split boundaries. Tree growth can be controlled using the complexity parameter, a measure of the relative improvement of each new split.

Individual trees can be very sensitive to minor changes in the data and even better prediction can be achieved by exploiting this variability. Using ensemble methods, we can grow multiple trees from the same data.

Krzywinski, M. & Altman, N. (2017) Points of Significance: Classification and regression trees. *Nature Methods* **14**:757–758.

Lever, J., Krzywinski, M. & Altman, N. (2016) Points of Significance: Logistic regression. *Nature Methods* **13**:541-542.

Altman, N. & Krzywinski, M. (2015) Points of Significance: Multiple Linear Regression *Nature Methods* **12**:1103-1104.

Lever, J., Krzywinski, M. & Altman, N. (2016) Points of Significance: Classifier evaluation. *Nature Methods* **13**:603-604.

Lever, J., Krzywinski, M. & Altman, N. (2016) Points of Significance: Model Selection and Overfitting. *Nature Methods* **13**:703-704.

Lever, J., Krzywinski, M. & Altman, N. (2016) Points of Significance: Regularization. *Nature Methods* **13**:803-804.

The artwork was created in collaboration with my colleagues at the Genome Sciences Center to celebrate the 5 year anniversary of the Personalized Oncogenomics Program (POG).

The Personal Oncogenomics Program (POG) is a collaborative research study including many BC Cancer Agency oncologists, pathologists and other clinicians along with Canada's Michael Smith Genome Sciences Centre with support from BC Cancer Foundation.

The aim of the program is to sequence, analyze and compare the genome of each patient's cancer—the entire DNA and RNA inside tumor cells— in order to understand what is enabling it to identify less toxic and more effective treatment options.

Principal component analysis (PCA) simplifies the complexity in high-dimensional data by reducing its number of dimensions.

To retain trend and patterns in the reduced representation, PCA finds linear combinations of canonical dimensions that maximize the variance of the projection of the data.

PCA is helpful in visualizing high-dimensional data and scatter plots based on 2-dimensional PCA can reveal clusters.

Altman, N. & Krzywinski, M. (2017) Points of Significance: Principal component analysis. *Nature Methods* **14**:641–642.

Altman, N. & Krzywinski, M. (2017) Points of Significance: Clustering. *Nature Methods* **14**:545–546.

Similar to the `h` index in publishing, the `k` index is a measure of fitness performance.

To achieve a `k` index for a movement you must perform `k` unbroken reps at `k`% 1RM.

The expected value for the `k` index is probably somewhere in the range of `k = 26` to `k=35`, with higher values progressively more difficult to achieve.

In my `k` index introduction article I provide detailed explanation, rep scheme table and WOD example.

I've applied the char-rnn recurrent neural network to generate new words, names of drugs and countries.

The effect is intriguing and facetious—yes, those are real words.

But these are not: *necronology*, *abobionalism*, *gabdologist*, and *nonerify*.

These places only exist in the mind: *Conchar and Pobacia*, *Hzuuland*, *New Kain*, *Rabibus and Megee Islands*, *Sentip and Sitina*, *Sinistan* and Urzenia.

And these are the imaginary afflictions of the imagination: *ictophobia*, *myconomascophobia*, and *talmatomania*.

And these, of the body: *ophalosis*, *icabulosis*, *mediatopathy* and *bellotalgia*.

Want to name your baby? Or someone else's baby? Try *Ginavietta Xilly Anganelel* or *Ferandulde Hommanloco Kictortick*.

When taking new therapeutics, never mix *salivac* and *labromine*. And don't forget that *abadarone* is best taken on an empty stomach.

And nothing increases the chance of getting that grant funded than proposing the study of a new –ome! We really need someone to looking into the *femome* and *manome*.

An exploration of things that are missing in the human genome. The nullomers.

Julia Herold, Stefan Kurtz and Robert Giegerich. Efficient computation of absent words in genomic sequences. *BMC Bioinformatics* (2008) **9**:167