Reading labspec files

The read_labspec function should work with all ascii text files exported from labspec: single-column files, time-series, 1D, 2D, 3D maps, with an without axes. Here's an example of reading each of these file types.

lf <- list.files(pattern = "txt")
# filter out the ones without axes (they're a bit useless)
lf <- lf[!grepl("noaxes", lf)]
lf
## [1] "01_piggy_axes.txt"      "02_timeseries_axes.txt"
## [3] "03_2Dmap_axes.txt"      "04_1Dmap_axes.txt"     
## [5] "05_3Dmap_axes.txt"

We can now apply the read_labspec function to all the files,

ld <- lapply(lf, read_labspec)
names(ld) <- lf  # give names to the list elements
# visualise the first 4 lines of each matrix
lapply(ld, head, 4)
## $`01_piggy_axes.txt`
##      wavenumber    y1
## [1,]       1691 14446
## [2,]       1692 16314
## [3,]       1694 18409
## [4,]       1695 20988
## 
## $`02_timeseries_axes.txt`
##    wavenumber   y1   y2   y3   y4   y5   y6   y7   y8   y9  y10  y11  y12
## V2       1691 2686 2737 2840 2656 2767 2634 2697 2599 2636 2751 2698 2793
## V3       1692 2987 3011 3154 3009 3042 3166 3076 3009 3073 3022 3090 3008
## V4       1694 3438 3659 3560 3697 3449 3454 3612 3534 3578 3379 3520 3458
## V5       1695 4021 4096 4180 3987 4153 4067 3985 4040 4024 3870 3980 3981
##     y13  y14  y15  y16  y17
## V2 2630 2767 2718 2769 2727
## V3 3043 3307 3014 3073 3116
## V4 3571 3555 3423 3543 3491
## V5 4006 4117 3940 3988 4079
## 
## $`03_2Dmap_axes.txt`
##    wavenumber   y1   y2   y3   y4   y5   y6   y7   y8   y9  y10  y11  y12
## V3       1691 2671 2577 2714 2589 2665 2636 2715 2698 2665 2562 2660 2659
## V4       1692 2917 3062 2989 2946 2999 2912 2932 3011 2926 2962 2922 2961
## V5       1694 3594 3427 3297 3240 3495 3537 3489 3417 3362 3435 3434 3557
## V6       1695 3815 3970 3841 3970 3920 4062 3957 3954 3846 3951 3979 3879
##     y13  y14  y15  y16  y17  y18  y19  y20  y21  y22  y23  y24  y25  y26
## V3 2697 2649 2600 2706 2655 2678 2751 2570 2622 2680 2558 2571 2643 2603
## V4 2978 3014 2922 3019 2827 2923 3080 3000 2961 3041 2923 2883 2962 3096
## V5 3429 3421 3471 3345 3418 3424 3522 3491 3511 3397 3369 3390 3432 3508
## V6 3848 3816 3851 3911 3849 3840 3934 3893 3847 3892 3860 3921 3899 3908
##     y27  y28  y29  y30  y31  y32  y33  y34  y35  y36
## V3 2627 2733 2608 2572 2687 2609 2593 2759 2432 2669
## V4 3007 2894 2934 3008 2951 2940 2915 2959 2868 2933
## V5 3355 3552 3511 3408 3460 3496 3492 3446 3371 3404
## V6 3870 3994 3992 3899 3858 3870 3848 3879 3746 3885
## 
## $`04_1Dmap_axes.txt`
##    wavenumber   y1   y2   y3   y4   y5   y6
## V2       1691 2621 2594 2637 2608 2672 2651
## V3       1692 2933 2862 2924 2991 2862 2824
## V4       1694 3421 3403 3306 3271 3356 3305
## V5       1695 3792 3777 3780 3898 3881 3817
## 
## $`05_3Dmap_axes.txt`
##    wavenumber   y1   y2   y3   y4   y5   y6   y7   y8   y9  y10  y11  y12
## V4       1691 2697 2489 2590 2553 2547 2554 2522 2594 2681 2558 2707 2694
## V5       1692 2904 2937 2922 2888 2999 2846 2894 2921 2979 2834 2976 2795
## V6       1694 3279 3314 3282 3395 3391 3282 3294 3338 3273 3363 3394 3317
## V7       1695 3827 3884 3798 3879 3866 3864 3873 3783 3894 3936 3910 3759
##     y13  y14  y15  y16  y17  y18  y19  y20  y21  y22  y23  y24  y25  y26
## V4 2652 2674 2637 2627 2674 2556 2620 2703 2658 2591 2594 2571 2710 2651
## V5 2987 3011 2906 2913 2922 3076 2973 2993 2886 2930 2989 2885 2911 2815
## V6 3565 3437 3415 3355 3432 3460 3496 3580 3406 3417 3316 3265 3400 3496
## V7 3740 3981 3889 3825 3882 3981 4031 3860 3933 3823 3865 3884 3793 3830
##     y27
## V4 2709
## V5 2949
## V6 3356
## V7 3789

The tags attribute stores the optional metadata corresponding to time series or maps.

str(ld)
## List of 5
##  $ 01_piggy_axes.txt     : num [1:1024, 1:2] 1691 1692 1694 1695 1696 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : NULL
##   .. ..$ : chr [1:2] "wavenumber" "y1"
##  $ 02_timeseries_axes.txt: num [1:1024, 1:18] 1691 1692 1694 1695 1696 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:1024] "V2" "V3" "V4" "V5" ...
##   .. ..$ : chr [1:18] "wavenumber" "y1" "y2" "y3" ...
##   ..- attr(*, "tags")= num [1:17] 0 0.843 1.57 2.37 3.114 ...
##  $ 03_2Dmap_axes.txt     : num [1:1024, 1:37] 1691 1692 1694 1695 1696 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:1024] "V3" "V4" "V5" "V6" ...
##   .. ..$ : chr [1:37] "wavenumber" "y1" "y2" "y3" ...
##   ..- attr(*, "tags")='data.frame':  36 obs. of  2 variables:
##   .. ..$ V1: num [1:36] -113 -113 -113 -113 -113 ...
##   .. ..$ V2: num [1:36] -144 -134 -124 -114 -104 ...
##  $ 04_1Dmap_axes.txt     : num [1:1024, 1:7] 1691 1692 1694 1695 1696 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:1024] "V2" "V3" "V4" "V5" ...
##   .. ..$ : chr [1:7] "wavenumber" "y1" "y2" "y3" ...
##   ..- attr(*, "tags")= num [1:6] -144 -134 -124 -114 -104 ...
##  $ 05_3Dmap_axes.txt     : num [1:1024, 1:28] 1691 1692 1694 1695 1696 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:1024] "V4" "V5" "V6" "V7" ...
##   .. ..$ : chr [1:28] "wavenumber" "y1" "y2" "y3" ...
##   ..- attr(*, "tags")='data.frame':  27 obs. of  3 variables:
##   .. ..$ V1: num [1:27] -10 -10 -10 -10 -10 -10 -10 -10 -10 0 ...
##   .. ..$ V2: num [1:27] -10 -10 -10 0 0 0 10 10 10 -10 ...
##   .. ..$ V3: num [1:27] -1.00e+01 -1.78e-15 1.00e+01 -1.00e+01 -1.78e-15 ...

To extract the tags from all files, we can also use lapply,

lapply(ld, attr, "tags")
## $`01_piggy_axes.txt`
## NULL
## 
## $`02_timeseries_axes.txt`
##  [1]  0.000  0.843  1.570  2.370  3.114  3.776  4.366  5.182  5.886  6.589
## [11]  7.295  7.998  8.601  9.408 10.112 10.815 11.520
## 
## $`03_2Dmap_axes.txt`
##          V1      V2
## y1  -113.38 -144.09
## y2  -113.38 -134.08
## y3  -113.38 -124.07
## y4  -113.38 -114.06
## y5  -113.38 -104.06
## y6  -113.38  -94.05
## y7  -101.43 -144.09
## y8  -101.43 -134.08
## y9  -101.43 -124.07
## y10 -101.43 -114.06
## y11 -101.43 -104.06
## y12 -101.43  -94.05
## y13  -89.48 -144.09
## y14  -89.48 -134.08
## y15  -89.48 -124.07
## y16  -89.48 -114.06
## y17  -89.48 -104.06
## y18  -89.48  -94.05
## y19  -77.52 -144.09
## y20  -77.52 -134.08
## y21  -77.52 -124.07
## y22  -77.52 -114.06
## y23  -77.52 -104.06
## y24  -77.52  -94.05
## y25  -65.57 -144.09
## y26  -65.57 -134.08
## y27  -65.57 -124.07
## y28  -65.57 -114.06
## y29  -65.57 -104.06
## y30  -65.57  -94.05
## y31  -53.62 -144.09
## y32  -53.62 -134.08
## y33  -53.62 -124.07
## y34  -53.62 -114.06
## y35  -53.62 -104.06
## y36  -53.62  -94.05
## 
## $`04_1Dmap_axes.txt`
## [1] -144.09 -134.08 -124.07 -114.06 -104.06  -94.05
## 
## $`05_3Dmap_axes.txt`
##      V1  V2         V3
## y1  -10 -10 -1.000e+01
## y2  -10 -10 -1.776e-15
## y3  -10 -10  1.000e+01
## y4  -10   0 -1.000e+01
## y5  -10   0 -1.776e-15
## y6  -10   0  1.000e+01
## y7  -10  10 -1.000e+01
## y8  -10  10 -1.776e-15
## y9  -10  10  1.000e+01
## y10   0 -10 -1.000e+01
## y11   0 -10 -1.776e-15
## y12   0 -10  1.000e+01
## y13   0   0 -1.000e+01
## y14   0   0 -1.776e-15
## y15   0   0  1.000e+01
## y16   0  10 -1.000e+01
## y17   0  10 -1.776e-15
## y18   0  10  1.000e+01
## y19  10 -10 -1.000e+01
## y20  10 -10 -1.776e-15
## y21  10 -10  1.000e+01
## y22  10   0 -1.000e+01
## y23  10   0 -1.776e-15
## y24  10   0  1.000e+01
## y25  10  10 -1.000e+01
## y26  10  10 -1.776e-15
## y27  10  10  1.000e+01