"""Draw a schematic connection map, rather than a spatial brain reconstruction.""" from pathlib import Path import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt from matplotlib.patches import FancyBboxPatch def main(): fig, ax = plt.subplots(figsize=(8.5, 6.4), dpi=100, facecolor="white") fig.subplots_adjust(left=0.03, right=0.97, bottom=0.15, top=0.87) fig.suptitle("Connections of the ventricular system", y=0.97, fontsize=16, weight="bold", color="#172330") positions = {} entries = [ ("left", 2.25, 9.0, 3.4, "Left lateral ventricle"), ("right", 7.75, 9.0, 3.4, "Right lateral ventricle"), ("left_foramen", 2.25, 7.45, 3.4, "Left interventricular\nforamen"), ("right_foramen", 7.75, 7.45, 3.4, "Right interventricular\nforamen"), ("third", 5.0, 5.9, 4.5, "Third ventricle\nwithin the diencephalon"), ("aqueduct", 5.0, 4.35, 4.5, "Cerebral aqueduct"), ("fourth", 5.0, 2.8, 4.5, "Fourth ventricle"), ("subarachnoid", 5.0, 1.25, 4.5, "Subarachnoid spaces"), ] half_height = 0.43 for key, x, y, width, text in entries: positions[key] = (x, y) color = "#e5eff6" if "foramen" not in key and key != "aqueduct" else "#edf5ef" ax.add_patch(FancyBboxPatch((x - width / 2, y - half_height), width, 2 * half_height, boxstyle="round,pad=0.03,rounding_size=0.12", facecolor=color, edgecolor="#607e91", linewidth=1.2)) ax.text(x, y, text, ha="center", va="center", fontsize=11, color="#172330") for source, target in [ ("left", "left_foramen"), ("right", "right_foramen"), ("left_foramen", "third"), ("right_foramen", "third"), ("third", "aqueduct"), ("aqueduct", "fourth"), ("fourth", "subarachnoid"), ]: sx, sy = positions[source] tx, ty = positions[target] if target == "third": tx += -1.25 if source == "left_foramen" else 1.25 ax.annotate("", xy=(tx, ty + half_height + 0.05), xytext=(sx, sy - half_height - 0.05), arrowprops={"arrowstyle": "->", "linewidth": 1.5, "color": "#4c677a"}) ax.text(7.5, 2.04, "median and lateral apertures", fontsize=9, color="#45535d", va="center") ax.set_xlim(0, 10.5) ax.set_ylim(0.4, 9.75) ax.axis("off") fig.text(0.5, 0.09, "Schematic connections; arrows follow the conventional passage sequence.", ha="center", fontsize=10, color="#45535d") fig.text(0.5, 0.04, "CSF movement is pulsatile and can form local recirculating patterns.", ha="center", fontsize=10, color="#45535d") fig.savefig(Path.cwd() / (Path(__file__).stem + ".png"), dpi=100, facecolor="white", transparent=False) plt.close(fig) if __name__ == "__main__": main()