#!/usr/bin/env python3 """Distinct passive models matching one observed finite-time compliance.""" import numpy as np import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt def main(): time = np.linspace(0, 6, 1201) fig, ax = plt.subplots(figsize=(8, 3.5), dpi=120, facecolor="white") for compliance, color in [(.12, "#2367a1"), (.20, "#b85224"), (1., "#24845e")]: tau = -1 / np.log(1 - .1 / compliance) response = compliance * (1 - np.exp(-time / tau)) ax.plot(time, response, color=color, lw=2, label=f"Equilibrium C = {compliance:g}; time constant {tau:.2f} s") ax.axvline(1, color=".6", ls=":", lw=1) ax.scatter([1], [.1], color=".15", zorder=5, s=32) ax.annotate("All give 0.10 at 1 s", (1, .1), xytext=(1.6, .23), fontsize=10, arrowprops={"arrowstyle": "->", "color": ".3"}) ax.set(xlim=(0, 6), ylim=(0, .52), xlabel="Time after pressure step (s)", ylabel="Volume / pressure (L per cm H2O)") ax.set_title("One early observation, different equilibrium compliances", fontsize=12) ax.legend(loc="lower right", fontsize=8) ax.grid(alpha=.18) ax.set_facecolor("white") fig.text(.5, .015, "Constructed single-compartment models; not patient measurements", ha="center", fontsize=9) fig.tight_layout(rect=(0, .055, 1, 1)) fig.savefig("same-early-response-different-lung-compliances.png", dpi=120, facecolor="white", transparent=False) plt.close(fig) if __name__ == "__main__": main()