2023 Pi Daylatest newsbuy art
Feel the vibe, feel the terror, feel the painHooverphonicMad about you, orchestrally.more 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

Neural network primer

Mon 06-02-2023

Nature is often hidden, sometimes overcome, seldom extinguished. —Francis Bacon

In the first of a series of columns about neural networks, we introduce them with an intuitive approach that draws from our discussion about logistic regression.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
Nature Methods Points of Significance column: Neural network primer. (read)

Simple neural networks are just a chain of linear regressions. And, although neural network models can get very complicated, their essence can be understood in terms of relatively basic principles.

We show how neural network components (neurons) can be arranged in the network and discuss the ideas of hidden layers. Using a simple data set we show how even a 3-neuron neural network can already model relatively complicated data patterns.

Derry, A., Krzywinski, M & Altman, N. (2023) Points of significance: Neural network primer. Nature Methods 20.

Background reading

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

Cell Genomics cover

Mon 16-01-2023

Our cover on the 11 January 2023 Cell Genomics issue depicts the process of determining the parent-of-origin using differential methylation of alleles at imprinted regions (iDMRs) is imagined as a circuit.

Designed in collaboration with with Carlos Urzua.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
Our Cell Genomics cover depicts parent-of-origin assignment as a circuit (volume 3, issue 1, 11 January 2023). (more)

Akbari, V. et al. Parent-of-origin detection and chromosome-scale haplotyping using long-read DNA methylation sequencing and Strand-seq (2023) Cell Genomics 3(1).

Browse my gallery of cover designs.

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

Science Advances cover

Thu 05-01-2023

My cover design on the 6 January 2023 Science Advances issue depicts DNA sequencing read translation in high-dimensional space. The image showss 672 bases of sequencing barcodes generated by three different single-cell RNA sequencing platforms were encoded as oriented triangles on the faces of three 7-dimensional cubes.

More details about the design.

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
My Science Advances cover that encodes sequence onto hypercubes (volume 9, issue 1, 6 January 2023). (more)

Kijima, Y. et al. A universal sequencing read interpreter (2023) Science Advances 9.

Browse my gallery of cover designs.

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

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.

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