2023 Pi Daylatest newsbuy art
Love itself became the object of her love.Jonathan Safran Foercount sadnessesmore 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

Convolutional neural networks

Thu 17-08-2023

Nature uses only the longest threads to weave her patterns, so that each small piece of her fabric reveals the organization of the entire tapestry. – Richard Feynman

Following up on our Neural network primer column, this month we explore a different kind of network architecture: a convolutional network.

The convolutional network replaces the hidden layer of a fully connected network (FCN) with one or more filters (a kind of neuron that looks at the input within a narrow window).

Martin Krzywinski @MKrzywinski mkweb.bcgsc.ca
Nature Methods Points of Significance column: Convolutional neural networks. (read)

Even through convolutional networks have far fewer neurons that an FCN, they can perform substantially better for certain kinds of problems, such as sequence motif detection.

Derry, A., Krzywinski, M & Altman, N. (2023) Points of significance: Convolutional neural networks. Nature Methods 20:.

Background reading

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

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

Neural network primer

Tue 10-01-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:165–167.

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

Thu 17-08-2023

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:1513–1515.

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.


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