2026 π Day latest news buy art
Lips that taste of tears, they say, are the best for kissing.Dorothy Parkerget crankymore quotes
very clickable
music + math
Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
WELCOME TO THE 5TH DIMENSION | This isn't meant to be understood — it's meant to be enjoyed.
Love music and science? Explore my collaboration with Max Cooper where we tell the story of infinities and animate the digits of π. Both tracks appear on Max's Yearning for the Infinite album.
Another collaboration with Max!

Max Cooper's Ascent — Making of the Music video

Enter the 5th dimension

Ascent answers the question: if you were living in a 5-dimensional room and projected digits of `\pi` onto its walls, what would you see?

1 · Ascent keyframes

There are three versions of the video — black-and-white (this is the official release), viridis (yellow, green, blue, purple), and plasma (yellow, orange, red, pruple, violet). You can see the viridis and plasma color palettes here.

Here are all 172 keyframes of the black-and-white version of Ascent. Below each frame is the key frame definition. The values of this keyframe are interpolated over the number of frames defined in the next keyframe's n parameter.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1 0:00:00 | 1/48 1.a0–1.a1
1.a0
a yw astepa2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #49 0:02:00 | 1/48 1.a1–1.a2
1.a1
n 2fs
c c0 f [xy] 0

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #97 0:04:00 | 1/48 1.a2–1.a3
1.a2
n 2fs
c c0 s [x] 0.05

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #145 0:06:00 | 1.a3–1.a4
1.a3
n 2fs
c c0 s [x] 0.10

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #193 0:08:00 | 1.a4–1.a5
1.a4
n 2fs
c c0 s [x] 0.15

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #265 0:11:00 | 1.a5–1.a6
1.a5
n 3fs
c c0 s [y] 0.05
rxy3

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #337 0:14:00 | 1.a6–1.a7
1.a6
n 3fs
c c0 s [y] 0.10
rxy3

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #385 0:16:00 | 1.a7–1.b1
1.a7
n 2fs
c c0 s [y] 0.15
rxy3

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #433 0:18:00 | 1.b1–1.b2
1.b1
n 2fs
c c0 f [z] 0.80
c c0 s [xy] 0.15
c c0 s [z] 0.100
ryz6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #481 0:20:00 | 1.b2–1.b3
1.b2
n 2fs
c c0 f [z] 0.60
c c0 s [xy] 0.15
c c0 s [z] 0.110
ryz6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #529 0:22:00 | 1.b3–1.b4
1.b3
n 2fs
c c0 f [z] 0.40
c c0 s [xy] 0.15
c c0 s [z] 0.120
ryz6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #577 0:24:00 | 1.b4–1.b5
1.b4
n 2fs
c c0 f [z] 0.20
c c0 s [xy] 0.15
c c0 s [z] 0.130
ryz6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #625 0:26:00 | 1.b5–1.b6
1.b5
n 2fs
c c0 f [z] 0.10
c c0 s [xy] 0.15
c c0 s [z] 0.140
ryz6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #673 0:28:00 | 1.b6–1.c1
1.b6
n 2fs
c c0 f [z] 0.00
c c0 s [xy] 0.15
c c0 s [z] 0.150
ryz6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #697 0:29:00 | 1.c1–1.c2
1.c1
n 1fs
c c0 s [w] 0.815
c c0 s [xyz] 0.15

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #745 0:31:00 | 1.c2–1.d1
1.c2
n 2fs

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #793 0:33:00 | 1.d1–1.d2
1.d1
n 2fs
a xw astepb4
c c0 f [w] 0.9
c c0 s [w] 0.715
c c0 s [xyz] 0.15
rots
rxy2
!ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #841 0:35:00 | 1.d2–1.d3
1.d2
n 2fs
a xw astepb4
c c0 f [w] 0.8
c c0 s [w] 0.615
c c0 s [xyz] 0.15
rots
rxy2
!ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #889 0:37:00 | 1.d3–1.d4
1.d3
n 2fs
a xw astepb4
c c0 f [w] 0.7
c c0 s [w] 0.515
c c0 s [xyz] 0.15
rots
rxy2
!ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #937 0:39:00 | 1.d4–1.d5
1.d4
n 2fs
a xw astepb4
c c0 f [w] 0.6
c c0 s [w] 0.415
rots
rxy2
!ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #985 0:41:00 | 1.d5–1.d6
1.d5
n 2fs
a xw astepb4
c c0 f [w] 0.4
c c0 s [w] 0.315
rots
rxy2
!ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1033 0:43:00 | 1.d6–1.d7
1.d6
n 2fs
a xw astepb4
c c0 f [w] 0.2
c c0 s [w] 0.215
rots
rxy2
!ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1081 0:45:00 | 1.d7–1.e1
1.d7
n 2fs
a xw astepb4
c c0 f [w] 0.0
c c0 s [w] 0.150
rots
rxy2
!ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1129 0:47:00 | 1.e1–1.e2
1.e1
n 2fs
c c0 s [v] 0.150
rots
rxy2
ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1177 0:49:00 | 1.e2–1.e3
1.e2
n 2fs
c c0 f [v] 1.00
c c0 s [xyzwv] 0.150
rots
rxy2
ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1225 0:51:00 | 1.e3–1.e3
1.e3
n 1fs
c c0 f [v] 1.05
c c0 s [xyzwv] 0.175
rots
rxy2
ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1249 0:52:00 | 1.e3–1.e4
1.e3
n 1fs
c c0 f [v] 1.05
c c0 s [xyzwv] 0.175
rots
rxy2
ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1297 0:54:00 | 1.e4–1.e5
1.e4
n 2fs
c c0 f [v] 1.00
c c0 s [xyzwv] 0.200
rots
rxy2
ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1345 0:56:00 | 1.e5–1.e6
1.e5
n 2fs
c c0 f [v] 1.00
c c0 s [xyzwv] 0.225
rots
rxy2
ryz2
size . 1.30

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1393 0:58:00 | 1.e6–1.e7
1.e6
n 2fs
c c0 f [v] 0.80
c c0 s [xyzwv] 0.250
rots
rxy2
ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1441 1:00:00 | 1.e7–1.e8
1.e7
n 2fs
c c0 f [v] 0.70
c c0 s [xyzwv] 0.275
rots
rxy2
ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1489 1:02:00 | 1.e8–1.e9
1.e8
n 2fs
c c0 f [v] 0.50
c c0 s [xyzwv] 0.300
rots
rxy2
ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1537 1:04:00 | 1.e9–1.f1
1.e9
n 2fs
c c0 f [v] 0.40
c c0 s [xyzwv] 0.325
rots
rxy2
ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1585 1:06:00 | 1.f1–1.f2
1.f1
n 2fs
c c0 f [v] 0.30
rots
rxy2
ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1633 1:08:00 | 1.f2–1.f3
1.f2
n 2fs
c c0 f [v] 0.20
rots
rxy2
ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1681 1:10:00 | 1.f3–1.f4
1.f3
n 2fs
c c0 f [v] 0.10
rots
rxy2
ryz2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1729 1:12:00 | 2.a–2.a
2.a
n 2fs
c c1 f [xy] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1777 1:14:00 | 2.a–2.b
2.a
n 2fs
c c1 f [xy] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1825 1:16:00 | 2.b–2.c
2.b
n 2fs
c c1 f [xy] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1873 1:18:00 | 2.c–2.d
2.c
n 2fs
c c1 f [xy] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1921 1:20:00 | 2.d–2.e
2.d
n 2fs
c c1 f [xy] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #1969 1:22:00 | 2.e–2.f
2.e
n 2fs
c c1 f [xy] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2017 1:24:00 | 2.f–2.g
2.f
n 2fs
c c1 f [xy] s2f
c c2 f [xz] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2065 1:26:00 | 2.g–2.h
2.g
n 2fs
c c1 f [xy] s2f
c c2 f [xz] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2113 1:28:00 | 2.h–2.i
2.h
n 2fs
c c1 f [xy] s2f
c c2 f [xz] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2161 1:30:00 | 2.i–2.j
2.i
n 2fs
c c1 f [xy] s2f
c c2 f [xz] s2f
c c3 f [xw] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2209 1:32:00 | 2.j–2.k
2.j
n 2fs
c c1 f [xy] s2f
c c2 f [xz] s2f
c c3 f [xw] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2257 1:34:00 | 2.k–2.l
2.k
n 2fs
c c1 f [xy] s2f
c c2 f [xz] s2f
c c3 f [xw] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2305 1:36:00 | 2.l–2.m
2.l
n 2fs
c c1 f [xy] s2f
c c2 f [xz] s2f
c c3 f [xw] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2353 1:38:00 | 2.m–2.n
2.m
n 2fs
c c1 f [xy] s2f
c c2 f [xz] s2f
c c3 f [xw] s2f
c c4 f [xv] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2401 1:40:00 | 2.n–2.o
2.n
n 2fs
c c1 f [xy] s2f
c c2 f [xz] s2f
c c3 f [xw] s2f
c c4 f [xv] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2449 1:42:00 | 2.o–2.p
2.o
n 2fs
c c1 f [xy] s2f
c c2 f [xz] s2f
c c3 f [xw] s2f
c c4 f [xv] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2497 1:44:00 | 2.p–2.q
2.p
n 2fs
c c1 f [xy] s2f
c c2 f [xz] s2f
c c3 f [xw] s2f
c c4 f [xv] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2545 1:46:00 | 2.q–2.r
2.q
n 2fs
c c1 f [xy] s2f
c c2 f [xz] s2f
c c3 f [xw] s2f
c c4 f [xv] s2f
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2593 1:48:00 | 2.r–3.a
2.r
n 2fs
c c1 f [xy] 0
c c2 f [xz] 0
c c3 f [xw] 0
c c4 f [xv] 0
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2641 1:50:00 | 3.a–3.b
3.a
n 2fs
c c1 s . s3s
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2689 1:52:00 | 3.b–3.c
3.b
n 2fs
c c1 s . s3s
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2737 1:54:00 | 3.c–3.d
3.c
n 2fs
c c1 s . s3s
c c2 s . s3s
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2785 1:56:00 | 3.d–3.e
3.d
n 2fs
c c1 s . s3s
c c2 s . s3s
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2833 1:58:00 | 3.e–3.f
3.e
n 2fs
c c0 f . s3f
c c1 s . s3s
c c2 s . s3s
c c3 s . s3s
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2881 2:00:00 | 3.f–3.g
3.f
n 2fs
c c0 f . s3f
c c1 s . s3s
c c2 s . s3s
c c3 s . s3s
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2929 2:02:00 | 3.g–3.h
3.g
n 2fs
c c0 f . s3f
c c[1-4] s . s3s
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #2977 2:04:00 | 3.h–3.i
3.h
n 2fs
c c0 f . s3f
c c[1-4] s . s3s
rotthis2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3025 2:06:00 | 3.i–3.i
3.i
n 2fs
c c0 f . s3f
c c[1-4] s . s3s
rotthis2
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3073 2:08:00 | 3.i–3.j
3.i
n 2fs
c c0 f . s3f
c c[1-4] s . s3s
rotthis2
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3121 2:10:00 | 3.j–3.j
3.j
n 2fs
c c0 f . s3f
rotthis2
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3169 2:12:00 | 3.j–3.k
3.j
n 2fs
c c0 f . s3f
rotthis2
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3217 2:14:00 | 3.k–3.k
3.k
n 2fs
rotthis2
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3265 2:16:00 | 4.a–4.a
4.a
n 2fs
c c0 f . 0.90
c c1 f [xy] s4f
c c[0-1] s . p2
map_fade(c1,.,p1)
rotthis3
size . s4u

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3313 2:18:00 | 4.a–4.b
4.a
n 2fs
c c0 f . 0.90
c c1 f [xy] s4f
c c[0-1] s . p2
map_fade(c1,.,p1)
rotthis3
size . s4u

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3361 2:20:00 | 4.b–4.c
4.b
n 2fs

a xv 0.10
a xw 0.90
a xz 0.16
c c1 f [xy] s4f
c c[0-1] s . p2
map_fade(c1,.,p1)
rotthis3
size . s4u

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3409 2:22:00 | 4.c–4.d
4.c
n 2fs

a yv 0.13
a yw 0.03
c c1 f [xy] s4f
c c[0-1] s . p2
map_fade(c1,.,p1)
rotthis3
size . s4u

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3457 2:24:00 | 4.d–4.e
4.d
n 2fs
c c2 f [xz] s4f
c c[0-2] s . p2
cube c[1] a [xy][yzwvu] astep-fast
map_fade(c2,.,p1)
rotthis3
size . s4u

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3505 2:26:00 | 4.e–4.f
4.e
n 2fs
c c2 f [xz] s4f
c c[0-2] s . p2
cube c[1-2] a [xy][yzwvu] astep-fast
map_fade(c2,.,p1)
rotthis3
size . s4u

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3553 2:28:00 | 4.f–4.g
4.f
n 2fs
a xv 0.10
a xw 0.90
a xz 0.16
c c2 f [xz] s4f
c c[0-2] s . p2
cube c[1-2] a [xy][yzwvu] astep-fast
map_fade(c2,.,p1)
rotthis3
size . s4u

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3601 2:30:00 | 4.g–4.h
4.g
n 2fs
a yv 0.15
a yw 0.03
c c3 f [xw] s4f
c c[0-3] s . p2
cube c[1-2] a [xy][yzwvu] astep-fast
map_fade(c3,.,p1)
rotthis3
size . s4u

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3649 2:32:00 | 4.h–4.i
4.h
n 2fs
c c3 f [xw] s4f
c c[0-3] s . p2
cube c[1-3] a [xy][yzwvu] astep-fast
map_fade(c3,.,p1)
rotthis3
size . s4u

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3697 2:34:00 | 4.i–4.j
4.i
n 2fs
c c3 f [xw] s4f
c c[0-3] s . p2
cube c[1-3] a [xy][yzwvu] astep-fast
map_fade(c4,.,p1)
rotthis3
size . s4u

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3745 2:36:00 | 4.j–4.k
4.j
n 2fs
a xv 0.10
a xw 0.89
a xz 0.16
c c4 f [xv] s4f
cube c[1-3] a [xy][yzwvu] astep-fast
map_fade(c[1-4],.,p1)
rotthis3
size . s4u

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3793 2:38:00 | 4.k–4.l
4.k
n 2fs
a yv 0.13
a yw 0.03
c c4 f [xv] s4f
cube c[1-4] a [xy][yzwvu] astep-fast
map_fade(c[1-4],.,p1)
rotthis3
size . s4u

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3841 2:40:00 | 4.l–4.m
4.l
n 2fs
c c4 f [xv] s4f
cube c[1-4] a [xy][yzwvu] astep-fast
map_fade(c[1-4],.,p1)
rotthis3
size . s4u

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3889 2:42:00 | 5.a–5.a
5.a
cube c[a-d] f . 1

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3937 2:44:00 | 5.a–5.b
5.a
cube c[a-d] f . 1

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #3985 2:46:00 | 5.b–5.c
5.b
n 2fs
c c[1-4] a [xy][yzwvu] astep-vfast
c c[5-5] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4033 2:48:00 | 5.c–5.c
5.c
n 2fs
c c[1-5] a [xy][yzwvu] astep-vfast
c c[5-6] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 5

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4081 2:50:00 | 5.c–5.c
5.c
n 2fs
c c[1-5] a [xy][yzwvu] astep-vfast
c c[5-6] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 5

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4129 2:52:00 | 5.c–5.c
5.c
n 2fs
c c[1-5] a [xy][yzwvu] astep-vfast
c c[5-6] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 5

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4177 2:54:00 | 5.c–5.c
5.c
n 2fs
c c[1-5] a [xy][yzwvu] astep-vfast
c c[5-6] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 5

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4225 2:56:00 | 5.c–5.d
5.c
n 2fs
c c[1-5] a [xy][yzwvu] astep-vfast
c c[5-6] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 5

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4273 2:58:00 | 5.d–5.d
5.d
n 2fs
c c[1-6] a [xy][yzwvu] astep-vfast
c c[5-7] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 9

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4321 3:00:00 | 5.d–5.d
5.d
n 2fs
c c[1-6] a [xy][yzwvu] astep-vfast
c c[5-7] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 9

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4369 3:02:00 | 5.d–5.d
5.d
n 2fs
c c[1-6] a [xy][yzwvu] astep-vfast
c c[5-7] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 9

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4417 3:04:00 | 5.d–5.d
5.d
n 2fs
c c[1-6] a [xy][yzwvu] astep-vfast
c c[5-7] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 9

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4465 3:06:00 | 5.d–5.d
5.d
n 2fs
c c[1-6] a [xy][yzwvu] astep-vfast
c c[5-7] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 9

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4513 3:08:00 | 5.d–5.d
5.d
n 2fs
c c[1-6] a [xy][yzwvu] astep-vfast
c c[5-7] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 9

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4561 3:10:00 | 5.d–5.d
5.d
n 2fs
c c[1-6] a [xy][yzwvu] astep-vfast
c c[5-7] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 9

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4609 3:12:00 | 5.d–5.d
5.d
n 2fs
c c[1-6] a [xy][yzwvu] astep-vfast
c c[5-7] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 9

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4657 3:14:00 | 5.d–5.e
5.d
n 2fs
c c[1-6] a [xy][yzwvu] astep-vfast
c c[5-7] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 9

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4705 3:16:00 | 5.e–5.e
5.e
n 2fs
c c[1-7] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 4

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4753 3:18:00 | 5.e–5.e
5.e
n 2fs
c c[1-7] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 4

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4801 3:20:00 | 5.e–5.e
5.e
n 2fs
c c[1-7] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 4

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4849 3:22:00 | 5.e–5.f
5.e
n 2fs
c c[1-7] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cf
map_fade(c[1-4],.,s5f)
rotthis3
rep 4

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4897 3:24:00 | 5.f–5.f
5.f
n 2fs
c c[1-8] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cs
rotthis3
rep 5

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4945 3:26:00 | 5.f–5.f
5.f
n 2fs
c c[1-8] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cs
rotthis3
rep 5

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #4993 3:28:00 | 5.f–5.f
5.f
n 2fs
c c[1-8] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cs
rotthis3
rep 5

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5041 3:30:00 | 5.f–5.f
5.f
n 2fs
c c[1-8] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cs
rotthis3
rep 5

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5089 3:32:00 | 5.f–5.g
5.f
n 2fs
c c[1-8] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cs
rotthis3
rep 5

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5137 3:34:00 | 5.g–5.g
5.g
n 2fs
c c[1-8] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cs
rotthis3
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5185 3:36:00 | 5.g–5.g
5.g
n 2fs
c c[1-8] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cs
rotthis3
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5233 3:38:00 | 5.g–5.g
5.g
n 2fs
c c[1-8] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cs
rotthis3
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5281 3:40:00 | 5.g–5.g
5.g
n 2fs
c c[1-8] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cs
rotthis3
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5329 3:42:00 | 5.g–5.g
5.g
n 2fs
c c[1-8] a [xy][yzwvu] astep-vfast
c c[5-8] f . s5cs
rotthis3
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5377 3:44:00 | 6.a–6.b
6.a
map_add(cd,xyzwv,179c)

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5713 3:58:00 | 6.b–6.c
6.b
n 14fs
a xv refxv
a xw refxw
a xy refxy
a xz refxz
a yv refyv
a yw refyw
a yz refyz
c c[0-9a-d] a . 0
map_fade(c[a-d],.,ps6)

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5761 4:00:00 | 6.c–6.d
6.c
n 2fs
a xw d0.01
cube c[0-8] fade . ps15
cube_rot(.,[xy][yzwvu],astep-vvslow)
f . . map . fade ps15
rot6vvs
size . ps20

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5809 4:02:00 | 6.d–6.e
6.d
n 2fs
a xw d0.01
a xy d-0.001
cube c[0-8] fade . ps14
cube_rot(.,[xy][yzwvu],astep-vvslow)
f . . map . fade ps14
rot6vs
size . ps20

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5857 4:04:00 | 6.e–6.f
6.e
n 2fs
a xw d0.01
a xy d-0.002
cube c[0-8] fade . ps13
cube_rot(.,[xy][yzwvu],astep-vslow)
f . . map . fade ps13
rot6s
size . ps20

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5905 4:06:00 | 6.f–6.g
6.f
n 2fs
a xw d0.01
a xy d-0.002
cube c[0-8] fade . ps12
cube_rot(.,[xy][yzwvu],astep-slow)
f . . map . fade ps12
rot6s
size . ps20

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #5953 4:08:00 | 6.g–6.h
6.g
n 2fs
a xw d0.02
a xy d-0.002
cube c[0-8] fade . ps11
cube_rot(.,[xy][yzwvu],astep-slow)
f . . map . fade ps11
rot6f
size . ps20

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6001 4:10:00 | 6.h–6.i
6.h
n 2fs
a xw d0.02
a xy d-0.002
cube c[0-8] fade . ps10
cube_rot(.,[xy][yzwvu],astep-med)
f . . map . fade ps10
rot6f
size . ps20

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6049 4:12:00 | 6.i–6.j
6.i
n 2fs
a xw d0.03
a xy d-0.003
cube c[0-8] fade . ps9
cube_rot(.,[xy][yzwvu],astep-med)
f . . map . fade ps9
rot6vf
size . ps20

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6097 4:14:00 | 6.j–6.k
6.j
n 2fs
a xw d0.03
a xy d-0.003
cube c[0-8] fade . ps8
cube_rot(.,[xy][yzwvu],astep-fast)
f . . map . fade ps8
rot6vf
size . ps20

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6145 4:16:00 | 6.k–6.l
6.k
n 2fs
a xw d0.04
a xy d-0.004
cube c[0-8] fade . ps7
cube_rot(.,[xy][yzwvu],astep-fast)
f . . map . fade ps7
rot6vf
size . ps21

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6193 4:18:00 | 6.l–6.m
6.l
n 2fs
a xw d0.05
a xy d-0.005
cube c[0-8] fade . ps6
cube_rot(.,[xy][yzwvu],astep-vfast)
f . . map . fade ps6
rot6vf
size . ps21

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6241 4:20:00 | 6.m–6.n
6.m
n 2fs
a xw d0.06
a xy d-0.010
cube c[0-8] fade . ps6
cube_rot(.,[xy][yzwvu],astep-vfast)
f . . map . fade ps6
rot6vvf
size . ps21

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6289 4:22:00 | 6.n–6.o
6.n
n 2fs
a xw d0.07
a xy d-0.010
cube c[0-8] fade . ps6
cube_rot(.,[xy][yzwvu],astep-vfast)
f . . map . fade ps6
rot6vvf
size . ps21

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6337 4:24:00 | 6.o–6.p
6.o
n 2fs
a xw d0.08
a xy d-0.007
cube c[0-8] fade . ps8
cube_rot(.,[xy][yzwvu],astep-vvfast)
f . . map . fade ps8
rot6vvvf
size . ps21

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6385 4:26:00 | 6.p–6.q
6.p
n 2fs
a xw d0.05
a xy d-0.004
cube c[0-8] fade . ps10
cube_rot(.,[xy][yzwvu],astep-vvfast)
f . . map . fade ps10
rot6vvvf
size . ps21

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6433 4:28:00 | 6.q–6.r
6.q
n 2fs
a xw d0.03
a xy d-0.002
cube c[0-8] fade . ps12
cube_rot(.,[xy][yzwvu],astep-vvfast)
f . . map . fade ps12
rot6vvvf
size . ps21

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6481 4:30:00 | 7.a–7.a
7.a
n 2fs
cube c[0-2] fade . p5
cube_rot(.,[xy][yzwvu],astep-med)
face c[0-9a-e] . map . fade p5
rot6f
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6529 4:32:00 | 7.a–7.a
7.a
n 2fs
cube c[0-2] fade . p5
cube_rot(.,[xy][yzwvu],astep-med)
face c[0-9a-e] . map . fade p5
rot6f
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6577 4:34:00 | 7.a–7.b
7.a
n 2fs
cube c[0-2] fade . p5
cube_rot(.,[xy][yzwvu],astep-med)
face c[0-9a-e] . map . fade p5
rot6f
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6625 4:36:00 | 7.b–7.b
7.b
n 2fs
cube_rot(.,[xy][yzwvu],astep-med)
rot6f
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6673 4:38:00 | 7.b–7.c
7.b
n 2fs
cube_rot(.,[xy][yzwvu],astep-med)
rot6f
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6721 4:40:00 | 7.c–7.c
7.c
n 2fs
cube c[0-4] fade . p5
cube_rot(.,[xy][yzwvu],astep-med)
face c[0-9a-f] . map . fade p5
rot6vf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6769 4:42:00 | 7.c–7.d
7.c
n 2fs
cube c[0-4] fade . p5
cube_rot(.,[xy][yzwvu],astep-med)
face c[0-9a-f] . map . fade p5
rot6vf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6817 4:44:00 | 7.d–7.d
7.d
n 2fs
cube_rot(.,[xy][yzwvu],astep-med)
rot6vf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6865 4:46:00 | 7.d–7.e
7.d
n 2fs
cube_rot(.,[xy][yzwvu],astep-med)
rot6vf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6913 4:48:00 | 7.e–7.e
7.e
n 2fs
cube c[0-6] fade . p5
cube_rot(.,[xy][yzwvu],astep-med)
face c[0-9a-g] . map . fade p5
rot6vvf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #6961 4:50:00 | 7.e–7.f
7.e
n 2fs
cube c[0-6] fade . p5
cube_rot(.,[xy][yzwvu],astep-med)
face c[0-9a-g] . map . fade p5
rot6vvf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7009 4:52:00 | 7.f–7.f
7.f
n 2fs
cube_rot(.,[xy][yzwvu],astep-med)
rot6vvf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7057 4:54:00 | 7.f–7.g
7.f
n 2fs
cube_rot(.,[xy][yzwvu],astep-med)
rot6vvf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7105 4:56:00 | 7.g–7.g
7.g
n 2fs
cube c[0-8] fade . p5
cube_rot(.,[xy][yzwvu],astep-med)
face c[0-9a-h] . map . fade p5
rot6vf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7153 4:58:00 | 7.g–7.h
7.g
n 2fs
cube c[0-8] fade . p5
cube_rot(.,[xy][yzwvu],astep-med)
face c[0-9a-h] . map . fade p5
rot6vf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7201 5:00:00 | 7.h–7.h
7.h
n 2fs
cube_rot(.,[xy][yzwvu],astep-med)
rot6vf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7249 5:02:00 | 7.h–7.i
7.h
n 2fs
cube_rot(.,[xy][yzwvu],astep-med)
rot6vf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7297 5:04:00 | 7.i–7.i
7.i
n 2fs
cube c[0-8] fade . p5
cube_rot(.,[xy][yzwvu],astep-med)
face . . map . fade p5
rot6vf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7345 5:06:00 | 7.i–7.j
7.i
n 2fs
cube c[0-8] fade . p5
cube_rot(.,[xy][yzwvu],astep-med)
face . . map . fade p5
rot6vf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7393 5:08:00 | 7.j–7.j
7.j
n 2fs
cube_rot(.,[xy][yzwvu],astep-med)
rot6vf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7441 5:10:00 | 7.j–8.a
7.j
n 2fs
cube_rot(.,[xy][yzwvu],astep-med)
rot6vf
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7489 5:12:00 | 8.a–8.a
8.a
n 2fs
cube . f . q33
cube c[e-h] s . r0.95
cube_rot(.,[xy][yzwvu],astep-med)
map_fade(.,.,q33)
rot6m
size . r0.90
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7537 5:14:00 | 8.a–8.a
8.a
n 2fs
cube . f . q33
cube c[e-h] s . r0.95
cube_rot(.,[xy][yzwvu],astep-med)
map_fade(.,.,q33)
rot6m
size . r0.90
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7585 5:16:00 | 8.a–8.a
8.a
n 2fs
cube . f . q33
cube c[e-h] s . r0.95
cube_rot(.,[xy][yzwvu],astep-med)
map_fade(.,.,q33)
rot6m
size . r0.90
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7633 5:18:00 | 8.a–8.a
8.a
n 2fs
cube . f . q33
cube c[e-h] s . r0.95
cube_rot(.,[xy][yzwvu],astep-med)
map_fade(.,.,q33)
rot6m
size . r0.90
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7681 5:20:00 | 8.a–8.a
8.a
n 2fs
cube . f . q33
cube c[e-h] s . r0.95
cube_rot(.,[xy][yzwvu],astep-med)
map_fade(.,.,q33)
rot6m
size . r0.90
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7729 5:22:00 | 8.a–8.c
8.a
n 2fs
cube . f . q33
cube c[e-h] s . r0.95
cube_rot(.,[xy][yzwvu],astep-med)
map_fade(.,.,q33)
rot6m
size . r0.90
rep 2

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7777 5:24:00 | 8.c–8.c
8.c
n 2fs
cube . f . q50
cube c[e-h] s . r0.95
cube_rot(.,[xy][yzwvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q31
rep 4

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7825 5:26:00 | 8.c–8.c
8.c
n 2fs
cube . f . q50
cube c[e-h] s . r0.95
cube_rot(.,[xy][yzwvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q31
rep 4

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7873 5:28:00 | 8.c–8.c
8.c
n 2fs
cube . f . q50
cube c[e-h] s . r0.95
cube_rot(.,[xy][yzwvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q31
rep 4

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7921 5:30:00 | 8.c–9.a
8.c
n 2fs
cube . f . q50
cube c[e-h] s . r0.95
cube_rot(.,[xy][yzwvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q31
rep 4

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #7969 5:32:00 | 9.a–9.a
9.a
n 2fs
cube . f . q50
cube_rot(.,[xy][ywvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q30
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #8017 5:34:00 | 9.a–9.a
9.a
n 2fs
cube . f . q50
cube_rot(.,[xy][ywvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q30
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #8065 5:36:00 | 9.a–9.a
9.a
n 2fs
cube . f . q50
cube_rot(.,[xy][ywvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q30
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #8113 5:38:00 | 9.a–9.a
9.a
n 2fs
cube . f . q50
cube_rot(.,[xy][ywvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q30
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #8161 5:40:00 | 9.a–9.a
9.a
n 2fs
cube . f . q50
cube_rot(.,[xy][ywvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q30
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #8209 5:42:00 | 9.a–9.b
9.a
n 2fs
cube . f . q50
cube_rot(.,[xy][ywvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q30
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #8257 5:44:00 | 9.b–9.b
9.b
n 2fs
cube . f . q50
cube_rot(.,[xy][ywvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q29
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #8305 5:46:00 | 9.b–9.b
9.b
n 2fs
cube . f . q50
cube_rot(.,[xy][ywvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q29
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #8353 5:48:00 | 9.b–9.b
9.b
n 2fs
cube . f . q50
cube_rot(.,[xy][ywvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q29
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #8401 5:50:00 | 9.b–9.b
9.b
n 2fs
cube . f . q50
cube_rot(.,[xy][ywvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q29
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #8449 5:52:00 | 9.b–9.b
9.b
n 2fs
cube . f . q50
cube_rot(.,[xy][ywvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q29
rep 6

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
MAX COOPER'S ASCENT #8497 5:54:00 | 9.b–9.c
9.b
n 2fs
cube . f . q50
cube_rot(.,[xy][ywvu],astep-med)
map_fade(.,.,q50)
rot6s
size . q29
rep 6

news + thoughts

Nature Biotechnology cover

Thu 23-04-2026

My cover design on the 7 April 2026 Nature Biotechnology issue shows the dendrogram that represents a cluster of uniquely expressed (or downregulated) genes in human naive stem cells induced from such cells. Within each dendrogram block, the genomic barcode sequence (sampled from Supplementary Table 1) is depicted with a Code 39 barcode. The highlighted barcode is one of those used for cell isolation.

Ishiguro S. et al. A multi-kingdom genetic barcoding system for precise clone isolation (2026) Nature Biotechnology 44:616–629.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
My Nature Biotechnology phylogenetic tree cover (volume 44, issue 4, 7 April 2026). (more)

Browse my gallery of cover designs.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
A catalogue of my journal and magazine cover designs. (more)

Happy 2026 π Day—
Art for the 5%

Fri 13-03-2026

Celebrate π Day (March 14th) and enjoy the art — but only if you're part of the 5%.

Go ahead, see what you can't see.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
2026 π DAY | Art for the 5%. Shown in the style of Ishihara color test plates, the art is visible only to those with colour blindness. (details)

Ishihara's Tests for Colour Deficiency

Sun 08-03-2026

Authentic and accurate images of Ishihara's test plates photographed (and lovingly color-corrected) from the 38-plate Ishihara's Tests for Colour Deficiency.

I also provide the position, size, and color of each circle on each test plate.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
ISHIHARA'S TEST PLATE 6 | This plate is part of the set of transformation plates. If you see 5, you're ok. If you see 2, you're not. (details)
Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
ISHIHARA'S TEST PLATE 18 | This plate is part of the set of mysterious hidden plates. If you don't see anything, you're ok. If you see 5, you're not. (details)

Symmetric alternatives to the ordinary least squares regression

Wed 23-07-2025

What immortal hand or eye, could frame thy fearful symmetry? — William Blake, "The Tyger"

This month, we look at symmetric regression, which, unlike simple linear regression, it is reversible — remaining unaltered when the variables are swapped.

Simple linear regression can summarize the linear relationship between two variables `X` and `Y` — for example, when `Y` is considered the response (dependent) and `X` the predictor (independent) variable.

However, there are times when we are not interested (or able) to distinguish between dependent and independent variables — either because they have the same importance or the same role. This is where symmetric regression can help.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
Nature Methods Points of Significance column: Symmetric alternatives to the ordinary least squares regression. Geometry of quantities minimized in OLS and symmetric regression. OLS minimizes `\Sigma e_y^2` in `Y` ~ `X` and `\Sigma e_x^2` `X` ~ `Y`. Pythagorean regression minimizes AB (magenta). Geometric means regression (GMR) minimizes area of ABP (orange). Orthogonal regression (OR) minimizes HP (blue). (read)

Luca Greco, George Luta, Martin Krzywinski & Naomi Altman (2025) Points of significance: Symmetric alternatives to the ordinary least squares regression. Nat. Methods 22:1610–1612.

Beyond Belief Campaign BRCA Art

Wed 11-06-2025

Fuelled by philanthropy, findings into the workings of BRCA1 and BRCA2 genes have led to groundbreaking research and lifesaving innovations to care for families facing cancer.

This set of 100 one-of-a-kind prints explore the structure of these genes. Each artwork is unique — if you put them all together, you get the full sequence of the BRCA1 and BRCA2 proteins.

Propensity score weighting

Mon 17-03-2025

The needs of the many outweigh the needs of the few. —Mr. Spock (Star Trek II)

This month, we explore a related and powerful technique to address bias: propensity score weighting (PSW), which applies weights to each subject instead of matching (or discarding) them.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
Nature Methods Points of Significance column: Propensity score weighting. (read)

Kurz, C.F., Krzywinski, M. & Altman, N. (2025) Points of significance: Propensity score weighting. Nat. Methods 22:638–640.

Martin Krzywinski | contact | Canada's Michael Smith Genome Sciences CentrePHSA
Google whack “vicissitudinal corporealization”
{ 10.9.234.160 }