latest newsbuy art
Poetry is just the evidence of life. If your life is burning well, poetry is just the ashLeonard Cohenburn somethingmore 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

Regression modeling of time-to-event data with censoring

Mon 21-11-2022

If you sit on the sofa for your entire life, you’re running a higher risk of getting heart disease and cancer. —Alex Honnold, American rock climber

In a follow-up to our Survival analysis — time-to-event data and censoring article, we look at how regression can be used to account for additional risk factors in survival analysis.

We explore accelerated failure time regression (AFTR) and the Cox Proportional Hazards model (Cox PH).

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
Nature Methods Points of Significance column: Regression modeling of time-to-event data with censoring. (read)

Dey, T., Lipsitz, S.R., Cooper, Z., Trinh, Q., Krzywinski, M & Altman, N. (2022) Points of significance: Regression modeling of time-to-event data with censoring. Nature Methods 19.

Music video for Max Cooper's Ascent

Tue 25-10-2022

My 5-dimensional animation sets the visual stage for Max Cooper's Ascent from the album Unspoken Words. I have previously collaborated with Max on telling a story about infinity for his Yearning for the Infinite album.

I provide a walkthrough the video, describe the animation system I created to generate the frames, and show you all the keyframes

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
Frame 4897 from the music video of Max Cooper's Asent.

The video recently premiered on YouTube.

Renders of the full scene are available as NFTs.

Gene Cultures exhibit — art at the MIT Museum

Tue 25-10-2022

I am more than my genome and my genome is more than me.

The MIT Museum reopened at its new location on 2nd October 2022. The new Gene Cultures exhibit featured my visualization of the human genome, which walks through the size and organization of the genome and some of the important structures.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
My art at the MIT Museum Gene Cultures exhibit tells shows the scale and structure of the human genome. Pay no attention to the pink chicken.

Annals of Oncology cover

Wed 14-09-2022

My cover design on the 1 September 2022 Annals of Oncology issue shows 570 individual cases of difficult-to-treat cancers. Each case shows the number and type of actionable genomic alterations that were detected and the length of therapies that resulted from the analysis.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
An organic arrangement of 570 individual cases of difficult-to-treat cancers showing genomic changes and therapies. Apperas on Annals of Oncology cover (volume 33, issue 9, 1 September 2022).

Pleasance E et al. Whole-genome and transcriptome analysis enhances precision cancer treatment options (2022) Annals of Oncology 33:939–949.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
My Annals of Oncology 570 cancer cohort cover (volume 33, issue 9, 1 September 2022). (more)

Browse my gallery of cover designs.

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

Survival analysis—time-to-event data and censoring

Fri 05-08-2022

Love's the only engine of survival. —L. Cohen

We begin a series on survival analysis in the context of its two key complications: skew (which calls for the use of probability distributions, such as the Weibull, that can accomodate skew) and censoring (required because we almost always fail to observe the event in question for all subjects).

We discuss right, left and interval censoring and how mishandling censoring can lead to bias and loss of sensitivity in tests that probe for differences in survival times.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
Nature Methods Points of Significance column: Survival analysis—time-to-event data and censoring. (read)

Dey, T., Lipsitz, S.R., Cooper, Z., Trinh, Q., Krzywinski, M & Altman, N. (2022) Points of significance: Survival analysis—time-to-event data and censoring. Nature Methods 19:906–908.

3,117,275,501 Bases, 0 Gaps

Sun 21-08-2022

See How Scientists Put Together the Complete Human Genome.

My graphic in Scientific American's Graphic Science section in the August 2022 issue shows the full history of the human genome assembly — from its humble shotgun beginnings to the gapless telomere-to-telomere assembly.

Read about the process and methods behind the creation of the graphic.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
3,117,275,501 Bases, 0 Gaps. Text by Clara Moskowitz (Senior Editor), art direction by Jen Christiansen (Senior Graphics Editor), source: UCSC Genome Browser.

See all my Scientific American Graphic Science visualizations.


© 1999–2022 Martin Krzywinski | contact | Canada's Michael Smith Genome Sciences CentreBC Cancer Research CenterBC CancerPHSA