@@ -14,13 +14,13 @@ Collaboration is welcome! This is still a work-in-progress. See [the roadmap](ht
1414
1515``` julia
1616julia> Pkg. clone (" https://github.com/JuliaArrays/AxisArrays.jl" )
17- using AxisArrays, SIUnits
18- import SIUnits . ShortUnits : s, ms, µs
17+ using AxisArrays, Unitful
18+ import Unitful : s, ms, µs
1919
2020julia> fs = 40000 # Generate a 40kHz noisy signal, with spike-like stuff added for testing
2121 y = randn (60 * fs+ 1 )* 3
22- for spk = (sin (0.8 : 0.2 : 8.6 ) .* [0 : 0.01 : .1 ; .15 : .1 : .95 ; 1 : - .05 : .05 ] .* 50 ,
23- sin (0.8 : 0.4 : 8.6 ) .* [0 : 0.02 : .1 ; .15 : .1 : 1 ; 1 : - .2 : .1 ] .* 50 )
22+ for spk = (sin . (0.8 : 0.2 : 8.6 ) .* [0 : 0.01 : .1 ; .15 : .1 : .95 ; 1 : - .05 : .05 ] .* 50 ,
23+ sin . (0.8 : 0.4 : 8.6 ) .* [0 : 0.02 : .1 ; .15 : .1 : 1 ; 1 : - .2 : .1 ] .* 50 )
2424 i = rand (round (Int,.001 fs): 1 fs)
2525 while i+ length (spk)- 1 < length (y)
2626 y[i: i+ length (spk)- 1 ] += spk
@@ -54,16 +54,15 @@ indices in *any* order, just so long as we annotate them with the axis name:
5454
5555``` jl
5656julia> A[Axis {:time} (4 )]
57- 2 - dimensional AxisArray{Float64,2 ,... } with axes:
58- :time , 7.5e-5 s: 2.5e-5 s: 7.5e-5 s
59- :chan , [:c1 ,:c2 ]
60- And data, a 1 x2 SubArray{Float64,2 ,Array{Float64,2 },Tuple{UnitRange{Int64},Colon},2 }:
57+ 2 - dimensional AxisArray{Float64,1 ,... } with axes:
58+ :chan , Symbol[:c1 ,:c2 ]
59+ And data, a 2 - element Array{Float64,1 }:
6160 - 1.4144 - 2.82879
6261
6362julia> A[Axis {:chan} (:c2 ), Axis {:time} (1 : 5 )]
64631 - dimensional AxisArray{Float64,1 ,... } with axes:
6564 :time , 0.0 s: 2.5e-5 s: 0.0001 s
66- And data, a 5 - element SubArray{Float64, 1 ,Array{Float64, 2 },Tuple{UnitRange{Int64},Int64}, 2 } :
65+ A[ Axis {:chan} ( :c2 ), Axis {:time} ( 1 : 5 )] :
6766 - 6.12181
6867 0.304668
6968 15.7366
@@ -80,7 +79,7 @@ still has the correct time information for those datapoints!
8079julia> A[40 µs .. 220 µs, :c1 ]
81801 - dimensional AxisArray{Float64,1 ,... } with axes:
8281 :time , 5.0e-5 s: 2.5e-5 s: 0.0002 s
83- And data, a 7 - element SubArray{Float64, 1 , Array{Float64,2 },Tuple{UnitRange{Int64},Int64}, 2 }:
82+ And data, a 7 - element Array{Float64,1 }:
8483 7.86831
8584 - 1.4144
8685 - 2.02881
@@ -90,7 +89,7 @@ And data, a 7-element SubArray{Float64,1,Array{Float64,2},Tuple{UnitRange{Int64}
9089 - 1.97716
9190
9291julia> axes (ans, 1 )
93- AxisArrays. Axis {:time,SIUnits.SIRange{FloatRange {Float64}, Float64,0,0,1,0,0,0,0,0,0 }} (5.0e-5 s: 2.5e-5 s: 0.0002 s)
92+ AxisArrays. Axis{:time ,StepRangeLen{Quantity {Float64, Dimensions : {𝐓}, Units : {s}},Base . TwicePrecision{Quantity{ Float64, Dimensions : {𝐓}, Units : {s}}},Base . TwicePrecision{Quantity{Float64, Dimensions : {𝐓}, Units : {s}}} }}(5.0e-5 s: 2.5e-5 s: 0.0002 s)
9493```
9594
9695Sometimes, though, what we're really interested in is a window of time about a
@@ -125,7 +124,7 @@ julia> idxs = find(diff(A[:,:c1] .< -15) .> 0)
125124julia> spks = A[atindex (- 200 µs .. 800 µs, idxs), :c1 ]
1261252 - dimensional AxisArray{Float64,2 ,... } with axes:
127126 :time_sub , - 0.000175 s: 2.5e-5 s: 0.000775 s
128- :time_rep , SIUnits . SIQuantity {Float64,0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 }[0.178725 s,0.806825 s,0.88305 s,1.47485 s,1.50465 s,1.53805 s,1.541025 s,2.16365 s,2.368425 s,2.739 s … 57.797925 s,57.924075 s,58.06075 s,58.215125 s,58.6403 s,58.96215 s,58.990225 s,59.001325 s,59.48395 s,59.611525 s]
127+ :time_rep , Quantity {Float64, Dimensions : {𝐓}, Units : {s} }[0.178725 s,0.806825 s,0.88305 s,1.47485 s,1.50465 s,1.53805 s,1.541025 s,2.16365 s,2.368425 s,2.739 s … 57.797925 s,57.924075 s,58.06075 s,58.215125 s,58.6403 s,58.96215 s,58.990225 s,59.001325 s,59.48395 s,59.611525 s]
129128And data, a 39 x242 Array{Float64,2 }:
130129 - 1.53038 4.72882 5.8706 … - 0.231564 0.624714 3.44076
131130 - 2.24961 2.12414 5.69936 7.00179 2.30993 5.20432
0 commit comments