Purpose: Multi-format export generation (JSON, XML, GraphML, GEXF, Pickle) from parsed GNN models
Pipeline Step: Step 7: Multi-format export (7_export.py)
Category: Data Export / Transformation
Status: ✅ Production Ready
Version: 1.1.3
Last Updated: 2026-01-21
- Export parsed GNN models to multiple formats
- Generate graph-based representations (GraphML, GEXF)
- Create portable serializations (JSON, XML, Pickle)
- Validate export integrity
- Provide format-specific documentation
- JSON export with schema validation
- XML export with DTD/XSD
- GraphML for network analysis tools
- GEXF for Gephi visualization
- Pickle for Python persistence
Description: Main export processing function. Exports all GNN .md files in target_dir to multiple formats.
Parameters:
target_dir(Path): Directory containing GNN filesoutput_dir(Path): Output directory for exportsverbose(bool): Enable verbose logging (default: False)
Returns: True if all exports succeeded
Example:
from export import generate_exports
success = generate_exports(
target_dir=Path("input/gnn_files"),
output_dir=Path("output/7_export_output"),
verbose=True
)- JSON: Human-readable, widely compatible
- XML: Schema-validated, industry standard
- GraphML: Standard graph format (Cytoscape, yEd)
- GEXF: Gephi visualization format
- Plaintext Summary: Human-readable model overview
- Plaintext DSL: Round-trip GNN-like text
- Pickle: Fast Python serialization
export_formats(List[str]): Formats to export (default:["json", "xml", "graphml", "gexf", "pickle"])"json": JSON export (human-readable)"xml": XML export (schema-validated)"graphml": GraphML format (Cytoscape, yEd)"gexf": GEXF format (Gephi)"pickle": Python pickle serialization"txt": Plaintext summary"dsl": Plaintext DSL
include_metadata(bool): Include metadata in exports (default:True)validate_schema(bool): Validate XML schema (default:True)pretty_print(bool): Pretty-print JSON/XML (default:True)compress(bool): Compress large exports (default:False)
graph_layout(str): Graph layout algorithm (default:"force")- Options:
"force","hierarchical","circular"
- Options:
include_weights(bool): Include edge weights in graphs (default:True)node_attributes(List[str]): Node attributes to include (default: all)
json- JSON exportxml.etree.ElementTree- XML exportpickle- Pickle serialization
networkx- Graph format export (recovery: basic XML-based export)
from export import generate_exports
success = generate_exports(
target_dir=Path("input/gnn_files"),
output_dir=Path("output/7_export_output"),
verbose=True
)from export import export_model
results = export_model(
model_data=parsed_data,
output_dir=Path("output/7_export_output"),
formats=["json", "graphml", "gexf"]
){model}_export.json- JSON export{model}_export.xml- XML export{model}_graph.graphml- GraphML graph{model}_graph.gexf- GEXF graph{model}_model.pkl- Pickle serializationexport_summary.json- Export summary
output/7_export_output/
├── model_name_export.json
├── model_name_export.xml
├── model_name_graph.graphml
├── model_name_graph.gexf
├── model_name_model.pkl
└── export_summary.json
- Duration: 61ms
- Memory: 28.7 MB
- Status: SUCCESS_WITH_WARNINGS
- Formats Generated: 5
- Format Unavailable: Skip unavailable format, log warning, continue with others
- Schema Validation Failure: Export without validation, log warning
- Large Model: Use compression or split exports, provide warnings
- Invalid GNN Model: Return structured error, skip model
- Format Errors: Format not supported or unavailable (recovery: skip format)
- Validation Errors: Schema validation fails (recovery: export without validation)
- Serialization Errors: Cannot serialize model (return error)
- File I/O Errors: Cannot write export files (return error)
- Format Recovery: Automatically skip unavailable formats
- Partial Export: Export what's possible, report failures
- Resource Cleanup: Proper cleanup of export resources on errors
- Input: Receives parsed GNN models from Step 3 (gnn processing)
- Output: Generates exports consumed by Step 8 (visualization), Step 11 (render), and Step 20 (website generation)
- Dependencies: Requires GNN parsing results from
3_gnn.pyoutput
- gnn/: Reads parsed GNN model data for export
- visualization/: Provides graph formats for visualization
- render/: Provides model data for code generation
- website/: Provides export data for website generation
- Cytoscape: GraphML format for network analysis
- Gephi: GEXF format for graph visualization
- NetworkX: Graph format conversion and analysis
3_gnn.py (GNN parsing)
↓
7_export.py (Multi-format export)
↓
├→ 8_visualization.py (Graph visualization)
├→ 11_render.py (Code generation)
├→ 20_website.py (Website integration)
└→ output/7_export_output/ (Standalone exports)
src/tests/test_export_overall.py
- Current: 86%
- Target: 90%+
- Multi-format export generation
- Format validation and error handling
- Graph format conversion
- Export integrity verification
generate_exports— Generate multi-format exports for GNN files in a directoryexport_single_gnn_file— Export a single GNN file to all supported formatsexport.list_functions— List callable functions in the export moduleexport.call_function— Call any public function by name with keyword arguments
src/export/mcp.py— Tool registrations and MCP wrappers
Symptom: Export succeeds for some formats but fails for others
Cause: Missing optional dependency (networkx) or format-specific errors
Solution:
- Check that required dependencies are installed:
uv pip install networkx - Use
--verboseflag to see detailed error messages - Check format-specific requirements in documentation
Symptom: Graph formats fail to generate
Cause: Missing networkx dependency or invalid graph structure
Solution:
- Install networkx:
uv pip install networkx - Verify GNN model has valid connections section
- Check that graph data is properly structured
Symptom: Export times out or runs out of memory
Cause: Model too large for single export operation
Solution:
- Use
compress=Trueoption to reduce file size - Export formats individually instead of all at once
- Process models in smaller batches
Symptoms: Export takes longer than expected
Diagnosis:
# Enable verbose logging
python src/7_export.py --target-dir input/ --verboseSolutions:
- Export only needed formats (don't export all formats if not needed)
- Use pickle format for fastest serialization
- Disable schema validation for faster XML export
Features:
- Multi-format export (JSON, XML, GraphML, GEXF, Pickle, Plaintext Summary, Plaintext DSL)
- Format validation and error handling
- Graph format conversion via NetworkX
- Export integrity verification
- MCP tool integration
Known Issues:
- None currently
- Future: Streaming export for very large models
Last Updated: 2026-01-21 Maintainer: GNN Pipeline Team Status: ✅ Production Ready Version: 1.1.3 Architecture Compliance: ✅ 100% Thin Orchestrator Pattern