; quick-start.scm - Fast interactive startup for CogServer experiments
; Usage: guile -l quick-start.scm
(use-modules (ice-9 format))
(use-modules (opencog) (opencog exec) (opencog persist) (opencog persist-rocks))
(use-modules (opencog lg))
(use-modules (opencog matrix))
;; Inject ParseNode/SentenceNode into (opencog lg) before loading learn
(define (ParseNode name) (Anchor (string-append "parse:" name)))
(define (SentenceNode name) (Anchor (string-append "sentence:" name)))
(module-define! (resolve-module '(opencog lg)) 'ParseNode ParseNode)
(module-define! (resolve-module '(opencog lg)) 'SentenceNode SentenceNode)
(use-modules (opencog learn))
(display "=== Modules loaded ===\n")
;; Open RocksDB
(define *storage* (RocksStorageNode "rocks://data/pairs.rdb"))
(cog-open *storage*)
(display "=== RocksDB connected ===\n")
;; Create matrix API
(define ala (make-any-link-api))
(define aca (add-count-api ala))
(define *pair-api* (add-pair-stars aca))
(display "=== Matrix API ready ===\n")
;; Load pairs from RocksDB (fast part - ~80 sec)
(display "Loading pairs from RocksDB...\n")
(define load-start (current-time))
(*pair-api* 'fetch-pairs)
(format #t "=== Pairs loaded in ~a seconds ===\n" (- (current-time) load-start))
;; Status helper
(define (status)
(format #t "Atoms in AtomSpace: ~a\n" (cog-count-atoms 'Atom))
(format #t "Nodes: ~a Links: ~a\n"
(cog-count-atoms 'Node) (cog-count-atoms 'Link)))
(display "\n=== READY FOR EXPERIMENTS ===\n")
(display "Available:\n")
(display " *pair-api* - matrix API for word pairs\n")
(display " *storage* - RocksDB connection\n")
(display " (status) - show atom counts\n")
(display " (batch-all-pair-mi *pair-api*) - compute MI\n")
(display " (make-block-mpg-pipe-observer) - create MST parser\n")
(newline)
(status)