pose-deep-learning / app_a12_patch.py
Reem
test + a12 classifier tab
9bf65dd
"""One-time helper to insert the A12 Gradio tab into the existing app.py.
Run from the repository root:
python3 app_a12_patch.py
The script is intentionally small and conservative: it adds one import and one
new tab, but does not rewrite the rest of app.py.
"""
from pathlib import Path
APP_PATH = Path("app.py")
IMPORT_LINE = "from A12.service.ui import run_a12_tab\n"
AFTER_IMPORT = "from A12.pose_interpolator import smooth_pose_sequence\n"
TAB_CODE = '''
# A12 Classifier Tab
with gr.TabItem("🧪 A12 Classifier"):
gr.Markdown(
"""
### A12 Service Endpoint: Pose CSV classifier
Endpoint alternative chosen: **Gradio tab inside the existing app**.
This keeps the HuggingFace Space architecture simple and avoids a
separate REST/FastAPI service. Upload a pose-feature CSV exported
with the same feature schema used by the A12 classifier.
"""
)
with gr.Row():
with gr.Column():
a12_csv_input = gr.File(
label="Pose feature CSV",
file_types=[".csv"],
type="filepath",
)
a12_problem_input = gr.Radio(
choices=["A", "B"],
value="B",
label="Classifier problem",
info="A = Kinect 3D features, B = PoseNet 2D features",
)
a12_predict_btn = gr.Button("Run A12 classifier", variant="primary")
with gr.Column():
a12_summary_output = gr.Markdown(label="Summary")
a12_json_output = gr.JSON(label="Structured JSON output")
a12_predict_btn.click(
fn=run_a12_tab,
inputs=[a12_csv_input, a12_problem_input],
outputs=[a12_json_output, a12_summary_output],
)
'''
INSERT_BEFORE = " # Example section\n"
def main() -> None:
text = APP_PATH.read_text()
if IMPORT_LINE not in text:
if AFTER_IMPORT not in text:
raise RuntimeError("Could not find A12 pose_interpolator import line.")
text = text.replace(AFTER_IMPORT, AFTER_IMPORT + IMPORT_LINE, 1)
if "with gr.TabItem(\"🧪 A12 Classifier\")" not in text:
if INSERT_BEFORE not in text:
raise RuntimeError("Could not find location for the A12 tab insertion.")
text = text.replace(INSERT_BEFORE, TAB_CODE + "\n" + INSERT_BEFORE, 1)
APP_PATH.write_text(text)
print("A12 Gradio tab inserted into app.py")
if __name__ == "__main__":
main()