Skip to content
This repository was archived by the owner on May 5, 2026. It is now read-only.

Commit 0be896a

Browse files
noahgiftclaude
andcommitted
Add .apr/.ald display demo example
- apr_ald_display.rs demonstrates loading and displaying - Shows ModelCard from .apr with metrics, params, layers - Shows DataCard from .ald with tensor info - Both direct loading and extension trait usage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent f2e117b commit 0be896a

1 file changed

Lines changed: 109 additions & 0 deletions

File tree

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
//! Demo: Display .apr model and .ald dataset files
2+
//!
3+
//! Run with: cargo run --example apr_ald_display
4+
5+
use presentar_widgets::{load_ald_as_card, load_apr_as_card, AldDatasetExt, AprModelExt};
6+
use presentar_yaml::formats::{AldDataset, AprModel, ModelLayer, Tensor};
7+
8+
fn main() {
9+
println!("=== Presentar .apr/.ald Display Demo ===\n");
10+
11+
// Create a sample .apr model
12+
let model = create_sample_model();
13+
let model_bytes = model.save();
14+
println!("Created sample .apr model ({} bytes)\n", model_bytes.len());
15+
16+
// Load and display as ModelCard
17+
let model_card = load_apr_as_card(&model_bytes).expect("load apr");
18+
println!("ModelCard from .apr:");
19+
println!(" Name: {}", model_card.get_name());
20+
println!(" Version: {}", model_card.get_version());
21+
println!(" Framework: {:?}", model_card.get_framework());
22+
println!(" Parameters: {:?}", model_card.get_parameters());
23+
println!(" Status: {:?}", model_card.get_status());
24+
println!(" Tags: {:?}", model_card.get_tags());
25+
println!();
26+
27+
// Create a sample .ald dataset
28+
let dataset = create_sample_dataset();
29+
let dataset_bytes = dataset.save();
30+
println!("Created sample .ald dataset ({} bytes)\n", dataset_bytes.len());
31+
32+
// Load and display as DataCard
33+
let data_card = load_ald_as_card(&dataset_bytes, "mnist_train").expect("load ald");
34+
println!("DataCard from .ald:");
35+
println!(" Name: {}", data_card.get_name());
36+
println!(" Columns: {}", data_card.column_count());
37+
println!(" Description: {:?}", data_card.get_description());
38+
println!(" Tags: {:?}", data_card.get_tags());
39+
println!();
40+
41+
// Using extension traits directly
42+
println!("=== Using Extension Traits ===\n");
43+
44+
let card = model.to_model_card();
45+
println!("Direct conversion: {}", card.get_name());
46+
47+
let card = dataset.to_data_card("custom_name");
48+
println!("Direct conversion: {}", card.get_name());
49+
50+
println!("\nDone!");
51+
}
52+
53+
fn create_sample_model() -> AprModel {
54+
let mut model = AprModel::new("MLP");
55+
56+
// Add layers
57+
model.layers.push(ModelLayer {
58+
layer_type: "dense".to_string(),
59+
parameters: vec![
60+
Tensor::from_f32("weights", vec![784, 256], &vec![0.0; 784 * 256]),
61+
Tensor::from_f32("bias", vec![256], &vec![0.0; 256]),
62+
],
63+
});
64+
65+
model.layers.push(ModelLayer {
66+
layer_type: "relu".to_string(),
67+
parameters: vec![],
68+
});
69+
70+
model.layers.push(ModelLayer {
71+
layer_type: "dense".to_string(),
72+
parameters: vec![
73+
Tensor::from_f32("weights", vec![256, 10], &vec![0.0; 256 * 10]),
74+
Tensor::from_f32("bias", vec![10], &vec![0.0; 10]),
75+
],
76+
});
77+
78+
// Add metadata
79+
model
80+
.metadata
81+
.insert("accuracy".to_string(), "0.98".to_string());
82+
model
83+
.metadata
84+
.insert("task".to_string(), "classification".to_string());
85+
model
86+
.metadata
87+
.insert("dataset".to_string(), "MNIST".to_string());
88+
model
89+
.metadata
90+
.insert("author".to_string(), "PAIML".to_string());
91+
92+
model
93+
}
94+
95+
fn create_sample_dataset() -> AldDataset {
96+
let mut dataset = AldDataset::new();
97+
98+
// Add training images (simulated)
99+
dataset.add_tensor(Tensor::from_f32(
100+
"images",
101+
vec![60000, 28, 28],
102+
&vec![0.0; 60000 * 28 * 28],
103+
));
104+
105+
// Add labels
106+
dataset.add_tensor(Tensor::from_f32("labels", vec![60000], &vec![0.0; 60000]));
107+
108+
dataset
109+
}

0 commit comments

Comments
 (0)