Changeset 30644 in project


Ignore:
Timestamp:
04/04/14 05:00:49 (7 years ago)
Author:
Ivan Raikov
Message:

picnic: some refactoring of population import mechanisms

Location:
release/4/picnic/trunk
Files:
2 edited
1 moved

Legend:

Unmodified
Added
Removed
  • release/4/picnic/trunk/examples/GL.picnic

    r30642 r30644  
    1919;;
    2020
    21 (npccl-model GL
     21(picnic-model GL
    2222
    2323      (
     
    6666         (component (type layout) (name GranuleTcoordinates)
    6767
    68                     (b = (Bounds (yExtent 0. 0. xExtent)))
    69                     (s = (UniformRandomPointProcess (nGC ~ (randomInit (19)) ~ (randomInit (21)) ~ b)))
     68                    (s = (PointsFromFile ("GCTcoordinates.dat")))
    7069                 
    71                     (output s b)
     70                    (output s)
    7271            )
    7372
     
    124123         (component (type layout) (name GolgiCoordinates)
    125124
    126                     (b = (Bounds (yExtent 0. 0. xExtent)))
    127 
    128                     (s = (UniformRandomPointProcess (nGoC ~ (randomInit (23)) ~ (randomInit (29)) ~ b)))
     125                    (s = (PointsFromFile ("GoCcoordinates.dat")))
    129126                 
    130                     (output s b)
     127                    (output s)
    131128            )
    132129         
     
    211208            )
    212209
     210
     211       (component (type projection)
     212
     213            (input (GC from cell-forests)
     214                   (GoC from cell-forests))
     215
     216            (const r = AAtoGoCzone)
     217
     218            (set source = (section GC AscendingAxons))
     219            (set target = (union
     220                           (section GoC ApicalDendrites)
     221                           (section GoC BasolateralDendrites)
     222                           ))
     223
     224            (AAtoGoC = (SegmentProjection (r source target)))
     225
     226            (output AAtoGoC)
     227            )
     228
    213229       
    214230       ))
  • release/4/picnic/trunk/picnic-core.scm

    r30637 r30644  
    12351235            (and (picnic:quantity? x)
    12361236                 (cases picnic:quantity x
    1237                         (SET (name rhs)   (match rhs
    1238                                                  (('section v l) v)
    1239                                                  (else rhs)))
     1237                        (SET (name rhs)   (let recur ((rhs rhs))
     1238                                            (match rhs
     1239                                                   (('section v l) (list v))
     1240                                                   (('union l r) (append (recur l) (recur r)))
     1241                                                   (else rhs))))
    12401242                        (PS (name gfun initial npts)   gfun)
    12411243                        (SEGPS (name gfun initial-expr nsegs nsegpts) gfun)
  • release/4/picnic/trunk/picnic.scm

    r30637 r30644  
    253253  (and (picnic:quantity? x)
    254254       (cases picnic:quantity x
    255               (SET  (name rhs)  `(SetExpr . ,rhs))
     255              (SET  (name rhs)  `(SetExpr ,rhs))
    256256              (ASGN  (name value rhs)  rhs)
    257257              (INITIAL (name rhs)  rhs)
     
    470470  (syntax-rules
    471471      (population section union)
    472     ((SetExpr population p)
     472    ((SetExpr (population p))
    473473     (lambda (repr) p))
    474     ((SetExpr section p t)
     474    ((SetExpr (section p t))
    475475     (lambda (repr)
    476476       (case repr
     
    483483          (cells-sections->kd-tree p (quote t)))
    484484         )))
    485     ((SetExpr union x y)
    486      (lambda (repr) (append (SetExpr x) (SetExpr y))))
     485    ((SetExpr (union x y))
     486     (lambda (repr) (append ((SetExpr x) repr) ((SetExpr y) repr))))
    487487    ))
    488488(define neg -)
     
    691691
    692692  (define (resolve-forest-imports sym imports)
    693     (let ((x (alist-ref sym imports)))
    694      (and x (lookup-def (first x) cell-forests))))
     693    (let ((x (member sym imports)))
     694      (d "resolve-forest-imports: sym = ~A imports = ~A cell-forests = ~A x = ~A~%"
     695         sym imports cell-forests x)
     696      (and x (lookup-def (second sym) cell-forests))))
    695697         
    696698  (define (rewrite-projection expr label)
     
    715717         (imports (projection-descriptor-imports projection))
    716718
     719         (dd (d "projection imports = ~A~%" imports))
    717720         (dd (d "projection label = ~A~%" label))
    718721         (dd (d "projection poset = ~A~%" poset))
     
    730733       ,projection-name
    731734
    732        ,(fold-right
    733          (lambda (xs ax)
    734            (fold (match-lambda*
    735                   (((id . sym) ax)
    736                    (let ((rhs (qrhs (hash-table-ref sys sym))))
    737                      (let ((rhs1 (or (and rhs (rewrite-projection rhs label))
    738                                      (first (resolve-forest-imports sym imports)))))
    739                        `(let ((,sym ,rhs1)) ,ax)))
    740                    ))
    741                  ax xs))
    742          (cdr (last (last poset)))
    743          poset)
     735       
     736       ,((lambda (body)
     737           (if (not (null? imports))
     738               `(let ,(map (lambda (x)
     739                             (let ((sym (first x)))
     740                               (d "projection import: sym = ~A q = ~A~%"
     741                                  sym (resolve-forest-imports x imports))
     742                               `(,sym ,(first (resolve-forest-imports x imports)))
     743                               ))
     744                           imports)
     745                  ,body)
     746               body))
     747         (fold-right
     748          (lambda (xs ax)
     749            (fold (match-lambda*
     750                   (((id . sym) ax)
     751                    (let ((rhs (qrhs (hash-table-ref sys sym))))
     752                      (d "projection poset sym = ~A rhs = ~A~%" sym rhs)
     753                      (let ((rhs1 (rewrite-projection rhs label)))
     754                        (if rhs1 `(let ((,sym ,rhs1)) ,ax) ax))
     755                    ))
     756                   )
     757                  ax xs))
     758          (cdr (last (last poset)))
     759          poset))
    744760       )
    745761    ))
Note: See TracChangeset for help on using the changeset viewer.