Changeset 31072 in project


Ignore:
Timestamp:
06/27/14 08:24:52 (6 years ago)
Author:
Ivan Raikov
Message:

picnic: enhancements to plotting scripts

Location:
release/4/picnic/trunk/scripts
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • release/4/picnic/trunk/scripts/plotPointsets.rkt

    r31069 r31072  
    2828            (list data sx sy sz)
    2929            (let ((xyz (map string->number row)))
    30               (statistics-tally! sx (list-ref xyz 0))
    31               (statistics-tally! sy (list-ref xyz 1))
    32               (statistics-tally! sz (list-ref xyz 2))
    33               (recur (cons xyz data))
    34               ))
     30              (let (
     31                    (x (list-ref xyz 0))
     32                    (y (list-ref xyz 1))
     33                    (z (list-ref xyz 2))
     34                    )
     35              (if (and (> x 0) (> y 0) (> z 0))
     36                  (begin
     37                    (statistics-tally! sx x)
     38                    (statistics-tally! sy y)
     39                    (statistics-tally! sz z)
     40                    (recur (cons xyz data)))
     41                  (recur data))
     42              )))
    3543        ))
    3644))
     
    107115                          ((list label color pts sx sy sz) pointset)
    108116                          )
    109                      (points3d pts #:label label #:sym 'dot #:z-max Zextent #:color color)))
     117                     (points3d pts #:alpha 1/3 #:label label #:sym 'dot #:z-max Zextent #:color color)))
    110118                   rest-pointsets))
    111119             
    112120             (cube-plot
    113121              (lines3d (list (list 0 0 0)
    114                              (list 0 0 Zextent)
    115                              (list 0 Yextent Zextent)
    116                              (list Xextent Yextent Zextent)
     122                             (list 0 0 (+ Zextent 1))
     123                             (list 0 Yextent (+ Zextent 1))
     124                             (list Xextent Yextent (+ Zextent 1))
    117125                             (list Xextent Yextent 0)
    118                              (list Xextent Yextent Zextent)
    119                              (list Xextent 0 Zextent)
    120                              (list 0 0 Zextent)
     126                             (list Xextent Yextent (+ Zextent 1))
     127                             (list Xextent 0 (+ Zextent 1))
     128                             (list 0 0 (+ Zextent 1))
    121129                             (list 0 0 0)
    122130                             )
    123                        #:color (->pen-color 9)))
     131                       #:alpha 1/2
     132                       #:color (->pen-color 0)
     133                       #:width 1
     134                       ))
    124135             )
    125136
     
    129140                                    (linear-ticks-format))]
    130141               [plot-y-ticks (linear-ticks #:number 5 #:base 10)]
    131                [plot-x-ticks (linear-ticks #:number 5 #:base 10)]
    132 
     142               [plot-x-ticks (linear-ticks #:number 10 #:base 10)]
     143               [plot-legend-anchor 'top-right]
    133144               )
    134             (plot3d (append rest-pointset-plots (list pointset-plot cube-plot))
     145            (plot3d (append (list cube-plot pointset-plot) rest-pointset-plots )
     146                   
    135147                    #:out-kind 'pdf #:out-file "CellPositions.pdf"
    136                     #:angle 55 #:altitude 30 #:width 800 #:height 600
     148                    #:angle 20 #:altitude 20 #:width 800 #:height 600
    137149                    #:z-label "z [um]" #:y-label "y [um]" #:x-label "x [um]"
    138150                    ))
     
    144156  (plotPointsets (car argv) (cdr argv)))
    145157
    146 (main `("Golgi cell" ,(list 255 102 178) "/home/igr/src/model/GL/Molecular_Layer.Tue24Jun2014_1329/GoC.pointset.dat")
    147       `("Granule cell" ,(->pen-color 9) "/home/igr/src/model/GL/Molecular_Layer.Tue24Jun2014_1329/GC.pointset.dat")
     158(main `("Golgi cell soma" ,(list 255 102 178) "/home/igr/src/model/GL/Molecular_Layer.Tue24Jun2014_1329/GoC.pointset.dat")
     159     `("Granule cell soma" ,(->pen-color 9) "/home/igr/src/model/GL/Molecular_Layer.Tue24Jun2014_1329/GC.pointset.dat")
    148160      )
  • release/4/picnic/trunk/scripts/plotSections.rkt

    r31071 r31072  
    11#lang racket
    22
     3(require srfi/1)
    34(require srfi/69)
    45(require scheme/match)
     
    2627      (let ((row (next-row)))
    2728        (if (empty? row)
    28             (list data sx sy sz)
     29            (list (reverse data) sx sy sz)
    2930            (let ((xyz (map string->number row)))
    3031              (statistics-tally! sx (list-ref xyz 0))
     
    3738
    3839
    39 (define (read-genpoints port make-reader)
     40(define (read-genpoints port make-reader sx sy sz)
    4041  (define next-row (make-reader port))
     42  (define (make-points xyz)
     43    (let recur ((xyz xyz) (pts '()))
     44      (if (null? xyz)
     45          (reverse pts)
     46          (begin
     47            (statistics-tally! sx (list-ref xyz 0))
     48            (statistics-tally! sy (list-ref xyz 1))
     49            (statistics-tally! sz (list-ref xyz 2))
     50            (recur (drop xyz 3) (cons (take xyz 3) pts))))))
    4151  (let (
    42         (sx (make-statistics))
    43         (sy (make-statistics))
    44         (sz (make-statistics))
    4552        (t  (make-hash-table))
    4653        )
    4754    (let recur ()
    4855      (let ((row (next-row)))
    49         (if (empty? row)
    50             (list (hash-table->alist t) sx sy sz)
    51             (let ((xyz (map string->number (cdr row)))
     56       
     57        (if (empty? row) t
     58            (let ((xyz (make-points (filter identity (map string->number (cdr row)))))
    5259                  (id  (string->number (car row))))
    5360              (let ((lst (hash-table-ref/default t id '())))
    54                 (hash-table-set! t id (cons xyz lst)))
    55               (statistics-tally! sx (list-ref xyz 0))
    56               (statistics-tally! sy (list-ref xyz 1))
    57               (statistics-tally! sz (list-ref xyz 2))
     61                (hash-table-set! t id (append xyz lst)))
    5862              (recur)
    5963              ))
     
    6165))
    6266
     67(define (select-indices idxs lst)
     68  (let recur ((lst lst) (i 0) (idxs idxs) (res '()))
     69    (if (or (null? lst) (null? idxs))
     70        res
     71        (if (= i (car idxs))
     72            (recur (cdr lst) (+ i 1) (cdr idxs) (cons (car lst) res))
     73            (recur (cdr lst) (+ i 1) idxs res)
     74            ))
     75    ))
    6376
    64 (define (plotSections pointset-file section-files)
     77
     78(define (plotSections idxs pointset-file section-files)
    6579
    6680  (match-let
     
    7185       )
    7286
    73       (let ((sections
    74              (map (lambda (filename)
    75                     (call-with-input-file filename
    76                       (lambda (port) (read-genpoints port make-numeric-row-reader))))
     87      (let ((section-entries
     88             (map (lambda (entry)
     89                    (match-let (((list color filename) entry))
     90                      (call-with-input-file filename
     91                        (lambda (port) (list color (read-genpoints port make-numeric-row-reader sx sy sz))))))
    7792                  section-files)))
    7893 
     
    93108             (Yextent (* extentUnit (/ Ymax extentUnit)))
    94109             (Zextent (* extentUnit (/ Zmax extentUnit)))
    95              
     110                          
    96111             (pointset-plot
    97               (points3d pointset #:sym 'dot #:z-max Zextent #:color (->pen-color 9)))
     112              (points3d (select-indices idxs pointset) #:sym 'dot #:z-max Zmax #:color (->pen-color 9)))
    98113
    99114             (section-plots
    100               (foldl (lambda (section-points ax)
    101                        (foldl (lambda (sections ax)
    102                                 (append
    103                                  (map (lambda (sec)
    104                                         (match-let (((list id.pts sx sy sz) sec))
    105                                           (lines3d (cdr id.pts) #:color (->pen-color 10))))
    106                                     sections)
    107                                  ax))
    108                               ax
    109                               section-points))
    110                      '()
    111                      sections))
     115              (foldl
     116               (lambda (section-entry ax)
     117                 (match-let (((list color bls) section-entry))
     118                   (foldl (lambda (section ax)
     119                            (cons
     120                             (match-let (((list id pts) section))
     121                               (lines3d pts #:color color))
     122                             ax))
     123                          ax
     124                          (map (lambda (i) (list i (hash-table-ref bls i))) idxs))
     125                   ))
     126               '()
     127               section-entries))
    112128             
    113129             (cube-plot
    114               (lines3d (list (list 0 0 0)
    115                              (list 0 0 Zextent)
    116                              (list 0 Yextent Zextent)
    117                              (list Xextent Yextent Zextent)
    118                              (list Xextent Yextent 0)
    119                              (list Xextent Yextent Zextent)
    120                              (list Xextent 0 Zextent)
    121                              (list 0 0 Zextent)
    122                              (list 0 0 0)
     130              (lines3d (list (list Xmin Ymin 0)
     131                             (list Xmin Ymin Zmax)
     132                             (list Xmin Ymax Zmax)
     133                             (list Xmax Ymax Zmax)
     134                             (list Xmax Ymax 0)
     135                             (list Xmax Ymax Zmax)
     136                             (list Xmax Ymin Zmax)
     137                             (list Xmin Ymin Zmax)
     138                             (list Xmin Ymin Zmin)
    123139                             )
    124140                       #:color (->pen-color 9)))
    125141             )
    126142
    127           (plot3d (append section-plots (list pointset-plot cube-plot))
    128                   #:angle 55 #:altitude 30 #:width 800 #:height 600 #:z-label "z axis")
     143          (plot3d (append (list pointset-plot cube-plot) section-plots)
     144                  #:out-kind 'pdf #:out-file "GoCs.pdf"
     145                  #:angle 20 #:altitude 20 #:width 800 #:height 600 #:z-label "z axis")
    129146          ))
    130147      ))
     
    132149(define  (main . argv)
    133150  (plot-font-size 24)
    134   (plotSections (car argv) (cdr argv)))
     151  (plotSections (car argv) (cadr argv) (cddr argv)))
    135152
    136 (main  "/home/igr/src/scheme/chicken-eggs/picnic/tags/1.3/examples/GC.pointset.dat"
    137        "/home/igr/src/scheme/chicken-eggs/picnic/tags/1.3/examples/GC.ParallelFibers.1.section.dat"
    138        
    139        ;"/home/igr/src/scheme/chicken-eggs/picnic/tags/1.3/examples/GoC.Axons.section.dat"
     153(main  (sort (list-tabulate 100 (lambda (i) (random 1995))) <)
     154       "/home/igr/src/model/GL/Molecular_Layer.Tue24Jun2014_1329/GoC.pointset.dat"
     155       `(,(->pen-color 10) "/home/igr/src/model/GL/Molecular_Layer.Tue24Jun2014_1329/GoC.ApicalDendrites.section.dat")
     156       `(,(->pen-color 11) "/home/igr/src/model/GL/Molecular_Layer.Tue24Jun2014_1329/GoC.BasolateralDendrites.section.dat")
    140157      )
Note: See TracChangeset for help on using the changeset viewer.