Describe why we have multiple implementations (small data community demands simple, readable text while large data community demands efficient binary storage). Describe that canSAS must let the community decide. (Largely based on the decisions of data suppliers and analysis software creators.) Describe here some general information about the implementation(s). Describe what is common amongst the implementations and what is not.
Contents:
open the file and read the SASroot (or root-level) group.
verify the version attribute: must be “1.0” (a string)
note the name attribute, if present
note the title, if present
note the SASsample group contents, if present
Read a data object
Given an intensity data object (called I), the algorithm to identify the associated Q values with any given intensity datum is described here:
note the list of indices for Q as given by the Q_indices attribute
... this gets tedious without a couple examples...
analyze how we do it below and finish writing this part
Caution
This write-up is unfinished at this point. Follow below for a few examples.
Consider the SAS data example including a time-series (same model as 2-D ):
1 2 3 4 5 6 7 8 9 10 11 SASroot SASentry SASdata @name="sasdata01" @I_axes="Time,Q" @Q_indices=0,1 Qx : float[4,35] Qy : float[4,35] Qz : float[4,35] I : float[4,35] Time : float[4]
- The I_axes attribute describes a Time data object, in addition to some Q data. The Time index is in the first position.
- It also says that there is only one index to use (the second index on intensity) when looking up a \(Q\) value.
- Since there is no Q data object, there must be three data objects Qx, Qy, Qz that provide the scattering vector.
- The Q_indices attribute indicates that the lookup of Q depends on both the Time (0) and Q (1) indices and that Q is time-dependent.
- One index (position 0) is used to lookup the Time value.
- index i is for Time and index j is for Q.
Given the indices i,j, return all the data for this datum:
Qx[i,j], Qy[i,j], Qz[i,j], Time[i], I[i,j]