2025 π Day latest news buy art
syncopation & accordionCafe de Flore (Doctor Rockit)like France, but no dog poopmore 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

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:1–3.

Happy 2025 π Day—
TTCAGT: a sequence of digits

Thu 13-03-2025

Celebrate π Day (March 14th) and sequence digits like its 1999. Let's call some peaks.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
2025 π DAY | TTCAGT: a sequence of digits. The digits of π are encoded into DNA sequence and visualized with Sanger sequencing. (details)

Crafting 10 Years of Statistics Explanations: Points of Significance

Sun 09-03-2025

I don’t have good luck in the match points. —Rafael Nadal, Spanish tennis player

Points of Significance is an ongoing series of short articles about statistics in Nature Methods that started in 2013. Its aim is to provide clear explanations of essential concepts in statistics for a nonspecialist audience. The articles favor heuristic explanations and make extensive use of simulated examples and graphical explanations, while maintaining mathematical rigor.

Topics range from basic, but often misunderstood, such as uncertainty and P-values, to relatively advanced, but often neglected, such as the error-in-variables problem and the curse of dimensionality. More recent articles have focused on timely topics such as modeling of epidemics, machine learning, and neural networks.

In this article, we discuss the evolution of topics and details behind some of the story arcs, our approach to crafting statistical explanations and narratives, and our use of figures and numerical simulations as props for building understanding.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
Crafting 10 Years of Statistics Explanations: Points of Significance. (read)

Altman, N. & Krzywinski, M. (2025) Crafting 10 Years of Statistics Explanations: Points of Significance. Annual Review of Statistics and Its Application 12:69–87.

Propensity score matching

Mon 16-09-2024

I don’t have good luck in the match points. —Rafael Nadal, Spanish tennis player

In many experimental designs, we need to keep in mind the possibility of confounding variables, which may give rise to bias in the estimate of the treatment effect.

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

If the control and experimental groups aren't matched (or, roughly, similar enough), this bias can arise.

Sometimes this can be dealt with by randomizing, which on average can balance this effect out. When randomization is not possible, propensity score matching is an excellent strategy to match control and experimental groups.

Kurz, C.F., Krzywinski, M. & Altman, N. (2024) Points of significance: Propensity score matching. Nat. Methods 21:1770–1772.

Understanding p-values and significance

Tue 24-09-2024

P-values combined with estimates of effect size are used to assess the importance of experimental results. However, their interpretation can be invalidated by selection bias when testing multiple hypotheses, fitting multiple models or even informally selecting results that seem interesting after observing the data.

We offer an introduction to principled uses of p-values (targeted at the non-specialist) and identify questionable practices to be avoided.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
Understanding p-values and significance. (read)

Altman, N. & Krzywinski, M. (2024) Understanding p-values and significance. Laboratory Animals 58:443–446.

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