Skip to content

Commit f1c472e

Browse files
committed
cleanup logo voiceovers, move summaries into next screen in each chapter, refactor logo building into util function.
1 parent ca1c789 commit f1c472e

15 files changed

Lines changed: 644 additions & 497 deletions

File tree

Chapter0/Scene0.py

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,8 @@ def construct(self):
1919
title = Tex("The Illustrated GraphBLAS").scale(1.5).to_edge(UP)
2020

2121
with self.voiceover(
22-
"""The GraphBLAS is a sparse linear algebra API—a powerful
23-
mathematical framework for graph analysis. In this video
24-
series, we'll explore the basic concepts of algebraic
25-
graph theory and how it can be used to write portable
26-
graph algorithms on many different kinds of hardware,
27-
including CPUs and GPUs. By the end of this series, you
28-
will understand how to create new parallel graph
29-
algorithms using simple mathematical notation. GraphBLAS
30-
was developed by a consortium of researchers from academia
31-
and industry, and is now an open standard with multiple
32-
implementations."""
22+
"""This chapter introduces the GraphBLAS, a sparse linear
23+
algebra API for graph analysis."""
3324
):
3425
self.play(Write(title))
3526
for logo in logos_group:
@@ -44,10 +35,10 @@ def construct(self):
4435

4536
# Chapter summary slide
4637
with self.voiceover(
47-
"""In this chapter, we'll cover how sparse matrices represent graphs,
48-
the duality between graphs and matrices, the basics of matrix-vector
49-
multiplication, and why algebraic approaches to graph algorithms
50-
are so powerful."""
38+
"""We'll cover how sparse matrices represent graphs, the duality
39+
between graphs and matrices, the basics of matrix-vector
40+
multiplication, and why algebraic approaches enable portable,
41+
parallel graph algorithms across CPUs and GPUs."""
5142
):
5243
chapter_title = Text("Chapter 0: Introduction to GraphBLAS", font_size=40).to_edge(UP)
5344

Chapter1/Scene0.py

Lines changed: 9 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,48 +5,22 @@
55
from manim_voiceover import VoiceoverScene
66
from dotenv import load_dotenv
77
load_dotenv()
8-
import os
98

10-
from scene_utils import setup_scene
9+
from scene_utils import create_logo_grid, setup_scene
1110

1211

1312
class Scene0(VoiceoverScene, Scene):
1413
def construct(self):
1514
setup_scene(self)
1615

17-
# Load all logo images from the imgs/ directory
18-
img_dir = "../imgs"
19-
logo_filenames = [
20-
"aristotle.png", "anaconda.png", "berkeley.png",
21-
"cmu.png", "cwi.png", "du.png",
22-
"graphegon.png", "humboldt.png", "intel.png",
23-
"imbr.png", "lucata.png", "mit.png",
24-
"njit.png", "nvidia.png", "pnnl.png",
25-
"redis.png", "romatre.png", "tamu.png",
26-
"ucdavis.png", "ucsb.png", "unibz.png",
27-
"JuliaComputing.jpg", "falkor.png", "supabase3.png",
28-
]
29-
30-
# Create ImageMobject for each logo and scale them uniformly
31-
logos = [
32-
ImageMobject(os.path.join(img_dir, filename)).scale(0.5)
33-
for filename in logo_filenames
34-
]
35-
36-
# Arrange logos in a 4x6 grid using Group
37-
logos_group = Group(*logos).arrange_in_grid(rows=4, cols=6, buff=0.5)
16+
logos_group = create_logo_grid()
3817

3918
# Title text
4019
title = Tex("The Illustrated GraphBLAS").scale(1.5).to_edge(UP)
4120

4221
with self.voiceover(
43-
"""In this video, you will learn how to install and use the Python
44-
GraphBLAS library, which will be used throughout the rest
45-
of the video series for code examples. It's not necessary
46-
to install Python or use the library for understanding the
47-
basic concepts of the GraphBLAS, so you can skip this
48-
video and move onto the next chapter if you want to get
49-
straight to the concepts. """
22+
"""This chapter covers installing and using the Python GraphBLAS
23+
library for code examples throughout the series."""
5024
):
5125
self.play(Write(title))
5226
for logo in logos_group:
@@ -61,9 +35,11 @@ def construct(self):
6135

6236
# Chapter summary slide
6337
with self.voiceover(
64-
"""This chapter covers installing the python-graphblas library,
65-
creating matrices and vectors, basic operations, and provides
66-
code examples that will be used throughout the rest of the series."""
38+
"""We'll walk through installing the python-graphblas library,
39+
creating matrices and vectors, basic operations like assignment
40+
and extraction, and introduce code patterns used throughout the
41+
rest of the series. This chapter is optional if you want to skip
42+
straight to the concepts."""
6743
):
6844
chapter_title = Text("Chapter 1: Python GraphBLAS", font_size=40).to_edge(UP)
6945

Chapter2/Scene0.py

Lines changed: 9 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,22 @@
55
from manim_voiceover import VoiceoverScene
66
from dotenv import load_dotenv
77
load_dotenv()
8-
import os
98

10-
from scene_utils import setup_scene
9+
from scene_utils import create_logo_grid, setup_scene
1110

1211

1312
class Scene0(VoiceoverScene, Scene):
1413
def construct(self):
1514
setup_scene(self)
1615

17-
# Load all logo images from the imgs/ directory
18-
img_dir = "../imgs"
19-
logo_filenames = [
20-
"aristotle.png", "anaconda.png", "berkeley.png",
21-
"cmu.png", "cwi.png", "du.png",
22-
"graphegon.png", "humboldt.png", "intel.png",
23-
"imbr.png", "lucata.png", "mit.png",
24-
"njit.png", "nvidia.png", "pnnl.png",
25-
"redis.png", "romatre.png", "tamu.png",
26-
"ucdavis.png", "ucsb.png", "unibz.png",
27-
"JuliaComputing.jpg", "falkor.png", "supabase3.png",
28-
]
29-
30-
# Create ImageMobject for each logo and scale them uniformly
31-
logos = [
32-
ImageMobject(os.path.join(img_dir, filename)).scale(0.5)
33-
for filename in logo_filenames
34-
]
35-
36-
# Arrange logos in a 4x6 grid using Group
37-
logos_group = Group(*logos).arrange_in_grid(rows=4, cols=6, buff=0.5)
16+
logos_group = create_logo_grid()
3817

3918
# Title text
4019
title = Tex("The Illustrated GraphBLAS").scale(1.5).to_edge(UP)
4120

4221
with self.voiceover(
43-
"""In this chapter, we'll explore semirings, a powerful GraphBLAS
44-
feature that lets you customize what matrix multiplication means.
45-
The same operation can compute total costs, find shortest paths,
46-
or check simple reachability, just by changing the semiring."""
22+
"""This chapter explores semirings, which let you customize what
23+
matrix multiplication means in GraphBLAS."""
4724
):
4825
self.play(Write(title))
4926
for logo in logos_group:
@@ -58,9 +35,11 @@ def construct(self):
5835

5936
# Chapter summary slide
6037
with self.voiceover(
61-
"""We'll learn what a semiring is, explore plus-times for standard
62-
arithmetic, min-plus for tropical optimization, and any-pair for
63-
structural operations on graphs."""
38+
"""We'll learn what a semiring is and how it changes the meaning
39+
of matrix multiplication. We'll explore plus-times for standard
40+
weighted arithmetic, min-plus for tropical optimization problems,
41+
and any-pair for structural operations that ignore edge weights
42+
entirely."""
6443
):
6544
chapter_title = Text("Chapter 2: Semirings", font_size=40).to_edge(UP)
6645

0 commit comments

Comments
 (0)