Make ppt on agnitia amara on second page include characteristics

Reading File
Searching the Web

Agnitia amara plant characteristics medicinal uses

Reading File
Running Command

mkdir -p /tmp/workspace/ignatia-amara-ppt

Writing File

~/ignatia-amara-ppt/create_ppt.py

from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.util import Inches, Pt
import io

prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)

blank = prs.slide_layouts[6]

# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 1  –  Title Slide
# ─────────────────────────────────────────────────────────────────────────────
s1 = prs.slides.add_slide(blank)

def fill_bg(slide, r, g, b):
    from pptx.oxml.ns import qn
    from lxml import etree
    bg = slide.background
    fill = bg.fill
    fill.solid()
    fill.fore_color.rgb = RGBColor(r, g, b)

fill_bg(s1, 20, 60, 40)   # dark green

# Decorative top strip
from pptx.util import Inches
top_bar = s1.shapes.add_shape(
    1,  # MSO_SHAPE_TYPE.RECTANGLE = 1
    Inches(0), Inches(0), Inches(13.333), Inches(0.18)
)
top_bar.fill.solid()
top_bar.fill.fore_color.rgb = RGBColor(180, 210, 100)
top_bar.line.fill.background()

# Bottom strip
bot_bar = s1.shapes.add_shape(
    1, Inches(0), Inches(7.32), Inches(13.333), Inches(0.18)
)
bot_bar.fill.solid()
bot_bar.fill.fore_color.rgb = RGBColor(180, 210, 100)
bot_bar.line.fill.background()

# Main title
tb = s1.shapes.add_textbox(Inches(0.8), Inches(1.8), Inches(11.7), Inches(1.6))
tf = tb.text_frame
tf.word_wrap = True
p = tf.paragraphs[0]
p.alignment = PP_ALIGN.CENTER
run = p.add_run()
run.text = "Ignatia Amara"
run.font.name = "Georgia"
run.font.size = Pt(64)
run.font.bold = True
run.font.color.rgb = RGBColor(230, 255, 200)

# Subtitle
tb2 = s1.shapes.add_textbox(Inches(0.8), Inches(3.5), Inches(11.7), Inches(0.9))
tf2 = tb2.text_frame
p2 = tf2.paragraphs[0]
p2.alignment = PP_ALIGN.CENTER
r2 = p2.add_run()
r2.text = "St. Ignatius Bean  |  A Homeopathic Remedy"
r2.font.name = "Calibri"
r2.font.size = Pt(26)
r2.font.italic = True
r2.font.color.rgb = RGBColor(180, 230, 150)

# divider line
line = s1.shapes.add_shape(1, Inches(3.5), Inches(4.5), Inches(6.3), Pt(3))
line.fill.solid()
line.fill.fore_color.rgb = RGBColor(180, 210, 100)
line.line.fill.background()

# Tagline
tb3 = s1.shapes.add_textbox(Inches(0.8), Inches(4.8), Inches(11.7), Inches(0.7))
tf3 = tb3.text_frame
p3 = tf3.paragraphs[0]
p3.alignment = PP_ALIGN.CENTER
r3 = p3.add_run()
r3.text = "Family: Loganiaceae  |  Genus: Strychnos  |  Species: S. ignatii"
r3.font.name = "Calibri"
r3.font.size = Pt(18)
r3.font.color.rgb = RGBColor(200, 240, 180)

# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 2  –  Characteristics
# ─────────────────────────────────────────────────────────────────────────────
s2 = prs.slides.add_slide(blank)
fill_bg(s2, 245, 250, 240)   # light off-white/green tint

# Header bar
hbar = s2.shapes.add_shape(1, Inches(0), Inches(0), Inches(13.333), Inches(1.2))
hbar.fill.solid()
hbar.fill.fore_color.rgb = RGBColor(20, 80, 45)
hbar.line.fill.background()

# Slide title
htb = s2.shapes.add_textbox(Inches(0.4), Inches(0.1), Inches(12), Inches(1.0))
htf = htb.text_frame
hp = htf.paragraphs[0]
hp.alignment = PP_ALIGN.LEFT
hr = hp.add_run()
hr.text = "Characteristics of Ignatia Amara"
hr.font.name = "Georgia"
hr.font.size = Pt(32)
hr.font.bold = True
hr.font.color.rgb = RGBColor(230, 255, 200)

# Accent bar under header
abar = s2.shapes.add_shape(1, Inches(0), Inches(1.2), Inches(13.333), Pt(4))
abar.fill.solid()
abar.fill.fore_color.rgb = RGBColor(140, 195, 80)
abar.line.fill.background()

# ── Left column  (Botanical / Physical)
def add_section_box(slide, left, top, width, height, title, bullets, title_color, accent_color):
    # Section card background
    card = slide.shapes.add_shape(1, left, top, width, height)
    card.fill.solid()
    card.fill.fore_color.rgb = RGBColor(255, 255, 255)
    card.line.color.rgb = RGBColor(180, 210, 100)
    card.line.width = Pt(1.2)

    # Section title strip
    stitle = slide.shapes.add_shape(1, left, top, width, Pt(32))
    stitle.fill.solid()
    stitle.fill.fore_color.rgb = accent_color
    stitle.line.fill.background()

    ttb = slide.shapes.add_textbox(left + Inches(0.12), top, width - Inches(0.2), Pt(34))
    ttf = ttb.text_frame
    ttf.margin_top = Pt(3)
    ttf.margin_bottom = 0
    tp = ttf.paragraphs[0]
    tr = tp.add_run()
    tr.text = title
    tr.font.name = "Calibri"
    tr.font.size = Pt(15)
    tr.font.bold = True
    tr.font.color.rgb = title_color

    # Bullet content
    ctb = slide.shapes.add_textbox(
        left + Inches(0.18), top + Pt(36),
        width - Inches(0.3), height - Pt(42)
    )
    ctf = ctb.text_frame
    ctf.word_wrap = True
    ctf.margin_top = Pt(4)
    ctf.margin_left = 0
    ctf.margin_right = 0

    for i, bullet in enumerate(bullets):
        if i == 0:
            cp = ctf.paragraphs[0]
        else:
            cp = ctf.add_paragraph()
        cp.space_before = Pt(3)
        cr = cp.add_run()
        cr.text = f"•  {bullet}"
        cr.font.name = "Calibri"
        cr.font.size = Pt(13)
        cr.font.color.rgb = RGBColor(40, 60, 40)

# Column layout
col1_left = Inches(0.25)
col2_left = Inches(4.55)
col3_left = Inches(8.85)
row1_top  = Inches(1.40)
row2_top  = Inches(4.10)
col_w     = Inches(4.05)
row1_h    = Inches(2.55)
row2_h    = Inches(2.75)

G1  = RGBColor(20, 100, 50)
G2  = RGBColor(60, 140, 80)
G3  = RGBColor(100, 170, 60)
TW  = RGBColor(255, 255, 255)

add_section_box(s2, col1_left, row1_top, col_w, row1_h,
    "Botanical Identity",
    [
        "Family: Loganiaceae",
        "Genus & Species: Strychnos ignatii",
        "Common name: St. Ignatius Bean",
        "Native to Philippines & Southeast Asia",
    ], TW, G1)

add_section_box(s2, col2_left, row1_top, col_w, row1_h,
    "Physical Description",
    [
        "Large climbing woody vine / liana",
        "Fruit: pear-shaped, contains 20-24 seeds",
        "Seeds: oblong/ovate, ~2.5 cm, angular",
        "Seed color: grey to clear-brown, translucent shell",
    ], TW, G2)

add_section_box(s2, col3_left, row1_top, col_w, row1_h,
    "Organoleptic Properties",
    [
        "Taste: intensely bitter",
        "Odor: slight, pleasant fragrance",
        "Texture: hard, almond-like seed coat",
        "Appearance: smooth, brownish surface",
    ], TW, G3)

add_section_box(s2, col1_left, row2_top, col_w, row2_h,
    "Key Chemical Constituents",
    [
        "Strychnine – primary alkaloid (toxic in excess)",
        "Brucine – secondary alkaloid",
        "Loganin – iridoid glycoside",
        "Tetrahydroharman – psychoactive compound",
        "Flavonoids & volatile oils",
    ], TW, G1)

add_section_box(s2, col2_left, row2_top, col_w, row2_h,
    "Homeopathic Characteristics",
    [
        "Remedy type: polychrest (wide-ranging use)",
        "Potencies: 3C, 5C, 7C, 9C, 30C common",
        "Form: pellets, liquid dilutions",
        "Keynote: emotional hypersensitivity & grief",
        "Contradictory / paradoxical symptom picture",
    ], TW, G2)

add_section_box(s2, col3_left, row2_top, col_w, row2_h,
    "Therapeutic Indications",
    [
        "Grief, emotional shock, depression",
        "Anxiety, nervousness, stress",
        "Insomnia & sleep disturbances",
        "Headaches / migraines",
        "Oral lichen planus (clinical study)",
    ], TW, G3)

# Footer
ftb = s2.shapes.add_textbox(Inches(0.3), Inches(7.2), Inches(12.7), Pt(22))
ftf = ftb.text_frame
fp = ftf.paragraphs[0]
fp.alignment = PP_ALIGN.CENTER
fr = fp.add_run()
fr.text = "Ignatia Amara  |  Homeopathic Materia Medica"
fr.font.name = "Calibri"
fr.font.size = Pt(11)
fr.font.italic = True
fr.font.color.rgb = RGBColor(100, 140, 80)

# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 3  –  Medicinal Uses & Action
# ─────────────────────────────────────────────────────────────────────────────
s3 = prs.slides.add_slide(blank)
fill_bg(s3, 245, 250, 240)

hbar3 = s3.shapes.add_shape(1, Inches(0), Inches(0), Inches(13.333), Inches(1.2))
hbar3.fill.solid()
hbar3.fill.fore_color.rgb = RGBColor(20, 80, 45)
hbar3.line.fill.background()

htb3 = s3.shapes.add_textbox(Inches(0.4), Inches(0.1), Inches(12), Inches(1.0))
htf3 = htb3.text_frame
hp3 = htf3.paragraphs[0]
hp3.alignment = PP_ALIGN.LEFT
hr3 = hp3.add_run()
hr3.text = "Medicinal Uses & Pharmacology"
hr3.font.name = "Georgia"
hr3.font.size = Pt(32)
hr3.font.bold = True
hr3.font.color.rgb = RGBColor(230, 255, 200)

abar3 = s3.shapes.add_shape(1, Inches(0), Inches(1.2), Inches(13.333), Pt(4))
abar3.fill.solid()
abar3.fill.fore_color.rgb = RGBColor(140, 195, 80)
abar3.line.fill.background()

uses = [
    ("Mental & Emotional", [
        "Primary remedy for acute grief and bereavement",
        "Emotional shock, hysteria, and mood swings",
        "Suppressed emotions leading to physical symptoms",
        "Situational anxiety and nervous exhaustion",
    ]),
    ("Nervous System", [
        "Neuralgic headaches and migraines",
        "Spasms, tics, and involuntary movements",
        "Insomnia from over-active mind",
        "Hypersensitivity to pain, light, and noise",
    ]),
    ("Digestive System", [
        "Spasmodic hiccup and globus sensation (lump in throat)",
        "Nausea and vomiting from emotional upset",
        "Cramping abdominal pain",
        "Paradoxical: sore throat better swallowing solids",
    ]),
]

box_top = Inches(1.45)
box_h   = Inches(5.5)
box_w   = Inches(4.05)

for idx, (title, bullets) in enumerate(uses):
    left = Inches(0.25 + idx * 4.3)
    add_section_box(s3, left, box_top, box_w, box_h, title, bullets,
                    TW, [G1, G2, G3][idx])

ftb3 = s3.shapes.add_textbox(Inches(0.3), Inches(7.2), Inches(12.7), Pt(22))
ftf3 = ftb3.text_frame
fp3 = ftf3.paragraphs[0]
fp3.alignment = PP_ALIGN.CENTER
fr3 = fp3.add_run()
fr3.text = "Ignatia Amara  |  Homeopathic Materia Medica"
fr3.font.name = "Calibri"
fr3.font.size = Pt(11)
fr3.font.italic = True
fr3.font.color.rgb = RGBColor(100, 140, 80)

# ─────────────────────────────────────────────────────────────────────────────
# SLIDE 4  –  Safety & Summary
# ─────────────────────────────────────────────────────────────────────────────
s4 = prs.slides.add_slide(blank)
fill_bg(s4, 20, 60, 40)

top_bar4 = s4.shapes.add_shape(1, Inches(0), Inches(0), Inches(13.333), Inches(0.18))
top_bar4.fill.solid()
top_bar4.fill.fore_color.rgb = RGBColor(180, 210, 100)
top_bar4.line.fill.background()

tb_t4 = s4.shapes.add_textbox(Inches(0.5), Inches(0.6), Inches(12.3), Inches(1.0))
tf_t4 = tb_t4.text_frame
p_t4 = tf_t4.paragraphs[0]
p_t4.alignment = PP_ALIGN.CENTER
r_t4 = p_t4.add_run()
r_t4.text = "Safety Profile & Key Summary"
r_t4.font.name = "Georgia"
r_t4.font.size = Pt(36)
r_t4.font.bold = True
r_t4.font.color.rgb = RGBColor(230, 255, 200)

# Two-column layout
def summary_col(slide, left, top, width, height, title, points, accent):
    card = slide.shapes.add_shape(1, left, top, width, height)
    card.fill.solid()
    card.fill.fore_color.rgb = RGBColor(255, 255, 255)
    card.fill.fore_color.theme_color = None
    card.line.color.rgb = accent
    card.line.width = Pt(1.5)

    strip = slide.shapes.add_shape(1, left, top, width, Pt(36))
    strip.fill.solid()
    strip.fill.fore_color.rgb = accent
    strip.line.fill.background()

    stb = slide.shapes.add_textbox(left + Inches(0.15), top + Pt(2), width - Inches(0.2), Pt(36))
    stf = stb.text_frame
    stf.margin_top = 0
    sp = stf.paragraphs[0]
    sr = sp.add_run()
    sr.text = title
    sr.font.name = "Calibri"
    sr.font.size = Pt(16)
    sr.font.bold = True
    sr.font.color.rgb = RGBColor(255, 255, 255)

    ctb = slide.shapes.add_textbox(left + Inches(0.2), top + Pt(44), width - Inches(0.35), height - Pt(50))
    ctf = ctb.text_frame
    ctf.word_wrap = True
    for i, pt in enumerate(points):
        cp = ctf.paragraphs[0] if i == 0 else ctf.add_paragraph()
        cp.space_before = Pt(5)
        cr = cp.add_run()
        cr.text = f"•  {pt}"
        cr.font.name = "Calibri"
        cr.font.size = Pt(14)
        cr.font.color.rgb = RGBColor(30, 50, 30)

summary_col(s4,
    Inches(0.5), Inches(1.85), Inches(5.8), Inches(4.9),
    "Safety & Toxicology",
    [
        "Strychnine is toxic at high doses – lethal in large quantities",
        "Homeopathic dilutions (3C-200C) contain negligible active substance",
        "Generally regarded as safe at homeopathic potencies",
        "Avoid crude/unprepared seed extracts",
        "Consult a practitioner before use in pregnancy or children",
        "Not a replacement for conventional psychiatric treatment",
    ],
    RGBColor(200, 60, 60)
)

summary_col(s4,
    Inches(7.0), Inches(1.85), Inches(5.8), Inches(4.9),
    "Key Takeaways",
    [
        "Derived from seeds of Strychnos ignatii (Philippines)",
        "Rich in strychnine and brucine alkaloids",
        "One of the most widely used emotional/grief remedies",
        "Paradoxical symptom picture is its hallmark",
        "Animal studies suggest anxiolytic-like effects (2012)",
        "Evidence base remains limited – further RCTs needed",
    ],
    RGBColor(80, 160, 60)
)

bot_bar4 = s4.shapes.add_shape(1, Inches(0), Inches(7.32), Inches(13.333), Inches(0.18))
bot_bar4.fill.solid()
bot_bar4.fill.fore_color.rgb = RGBColor(180, 210, 100)
bot_bar4.line.fill.background()

# ─────────────────────────────────────────────────────────────────────────────
# Save
# ─────────────────────────────────────────────────────────────────────────────
out = "/tmp/workspace/ignatia-amara-ppt/Ignatia_Amara.pptx"
prs.save(out)
print(f"Saved: {out}")
Running Command

cd /tmp/workspace/ignatia-amara-ppt && python create_ppt.py 2>&1

Editing File

~/ignatia-amara-ppt/create_ppt.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/ignatia-amara-ppt/create_ppt.py'
Running Command

cd /tmp/workspace/ignatia-amara-ppt && python create_ppt.py 2>&1

Your presentation is ready! Here is the download link:

Ignatia Amara

Presentation · PPTX


What's inside the 4-slide deck:
SlideContent
1 - Title"Ignatia Amara" on a dark green background with family/genus/species info
2 - CharacteristicsSix info cards covering: Botanical Identity, Physical Description, Organoleptic Properties, Key Chemical Constituents, Homeopathic Characteristics, and Therapeutic Indications
3 - Medicinal UsesThree sections: Mental & Emotional, Nervous System, and Digestive System uses
4 - Safety & SummarySafety/toxicology notes (strychnine warning) and key takeaways
Slide 2 covers all major characteristics of Ignatia amara as requested, including its origin (Philippines, Strychnos ignatii), bitter taste, alkaloid content (strychnine & brucine), seed morphology, and homeopathic potency details.
This is a shared conversation. Sign in to Orris to start your own chat.