2012 Data Discussion Examples: Difference between revisions

From canSAS
(change the coding of Q_indices and switch I_indices to I_axes)
Line 8: Line 8:
SASentry
SASentry
SASdata
SASdata
@Q_indices="*"
@Q_indices=0
@I_indices="Q"
@I_axes="Q"
I: float[100]
I: float[100]
Q: float[100]
Q: float[100]
Line 22: Line 22:
SASentry
SASentry
SASdata
SASdata
@Q_indices=",*"
@Q_indices=1
@I_indices="Time,*"
@I_axes="Time,Q"
I: float[nTime,100]
I: float[nTime,100]
Q: float[100]
Q: float[100]
Line 36: Line 36:
SASentry
SASentry
SASdata
SASdata
@Q_indices="Time,*"
@Q_indices=0,1
@I_indices="Time,Q"
@I_axes="Time,Q"
I: float[nTime,100]
I: float[nTime,100]
Q: float[nTime,100]
Q: float[nTime,100]
Line 54: Line 54:
SASentry
SASentry
SASdata
SASdata
@Q_indices="*,*"
@Q_indices=0,1
@I_indices="Q,Q"
@I_axes="Q,Q"
I: float[100, 512]
I: float[100, 512]
Qx: float[100, 512]
Qx: float[100, 512]
Line 67: Line 67:
SASentry
SASentry
SASdata
SASdata
@Q_indices="*,*"
@Q_indices=0,1
@I_indices="Q,Q"
@I_axes="Q,Q"
@Mask_indices="Q,Q"
@Mask_indices=0,1
I: float[100, 512]
I: float[100, 512]
Qx: float[100, 512]
Qx: float[100, 512]
Line 84: Line 84:
SASentry
SASentry
SASdata
SASdata
@Q_indices="*"
@Q_indices=0
@I_indices="Q"
@I_axes="Q"
I: float[100*512]
I: float[100*512]
Qx: float[100*512]
Qx: float[100*512]
Line 98: Line 98:
SASentry
SASentry
SASdata
SASdata
@Q_indices="Time,*"
@Q_indices=0,1
@I_indices="Time,Q"
@I_axes="Time,Q"
I: float[nTime,100*512]
I: float[nTime,100*512]
Qx: float[nTime,100*512]
Qx: float[nTime,100*512]
Line 115: Line 115:
SASentry
SASentry
SASdata
SASdata
@Q_indices="Time,*,*"
@Q_indices=0,1,2
@I_indices="Time,Q,Q"
@I_axes="Time,Q,Q"
@Mask_indices="Q,Q"
@Mask_indices=1,2
I: float[nTime,100,512]
I: float[nTime,100,512]
Qx: float[nTime,100,512]
Qx: float[nTime,100,512]
Line 132: Line 132:
SASentry
SASentry
SASdata
SASdata
@Q_indices="Time,Temperature,Pressure,*"
@Q_indices=0,1,2,3
@I_indices="Time,Temperature,Pressure,Q"
@I_axes="Time,Temperature,Pressure,Q"
I: float[nTime,nTemperature,nPressure,100*512]
I: float[nTime,nTemperature,nPressure,100*512]
Qx: float[nTime,nTemperature,nPressure,100*512]
Qx: float[nTime,nTemperature,nPressure,100*512]
Line 149: Line 149:
SASentry
SASentry
SASdata
SASdata
@Q_indices=",Time,,*,*"
@Q_indices=1,3,4
@I_indices="Temperature,Time,Pressure,Q,Q"
@I_axes="Temperature,Time,Pressure,Q,Q"
I: float[nTemperature,nTime,nPressure,100,512]
I: float[nTemperature,nTime,nPressure,100,512]
Qx: float[nTime,100,512]
Qx: float[nTime,100,512]
Line 162: Line 162:
== example of simple 2D SAS/WAS data, Isas(Q) & Iwas(Q) ==
== example of simple 2D SAS/WAS data, Isas(Q) & Iwas(Q) ==


Consider the multi-technique experiment that produces small-angle and wide-angle scattering data images.  The reduced data results in images as well.  Each image might be described separately (see [[2012_Data_Discussion_Examples#example_of_SAS_data_with_several_detectors.2C_I.28Q.29 | example of SAS data with several detectors]] for an alternative).  Here the SAS data image is 100 x 512 pixels.  The WAS data (not covered by this canSAS standard) is 256 x 256 pixels.
Consider the multi-technique experiment that produces  
small-angle and wide-angle scattering data images.   
The reduced data results in images as well.   
Each image might be described separately (see  
[[2012_Data_Discussion_Examples#example_of_SAS_data_with_several_detectors.2C_I.28Q.29  
| example of SAS data with several detectors]] for an alternative).   
Here the SAS data image is 100 x 512 pixels.   
The WAS data (not covered by this canSAS standard) is 256 x 256 pixels.


<pre>
<pre>
Line 168: Line 175:
SASentry
SASentry
SASdata
SASdata
@Q_indices="*,*"
@name="sasdata"
@I_indices="Q,Q"
@Q_indices=0,1
@I_axes="Q,Q"
I: float[100, 512]
I: float[100, 512]
Qx: float[100, 512]
Qx: float[100, 512]
Qy: float[100, 512]
Qy: float[100, 512]
WASdata
SASdata
@Q_indices="*,*"
@name="wasdata"
@I_indices="Q,Q"
@Q_indices=0,1
@I_axes="Q,Q"
I: float[256, 256]
I: float[256, 256]
Qx: float[256, 256]
Qx: float[256, 256]
Qy: float[256, 256]
Qy: float[256, 256]
</pre>
== example of 2D SANS and 2D SAXS, In(Q) & Ix(Q) ==
Consider the multi-technique experiment that produces
small-angle neutron and X-ray scattering data.
Here the SANS data image is 100 x 512 pixels and
the SAXS data is 256 x 256 pixels.
<pre>
SASroot
SASentry
SASdata
@name="sans"
@Q_indices=0
@I_axes="Q"
I: float[100*512]
Qx: float[100*512]
Qy: float[100*512]
SASdata
@name="saxs"
@Q_indices=0
@I_axes="Q"
I: float[256*256]
Qx: float[256*256]
Qy: float[256*256]
</pre>
</pre>


Line 194: Line 229:
SASentry
SASentry
SASdata
SASdata
@Q_indices="*"
@Q_indices=0
@I_indices="Q"
@I_axes="Q"
I: float[100*512  + 2000 + 256*256]
I: float[100*512  + 2000 + 256*256]
Qx: float[100*512 + 2000 + 256*256]
Qx: float[100*512 + 2000 + 256*256]
Line 217: Line 252:
SASdata
SASdata
@Q_indices="*,*"
@Q_indices="*,*"
@I_indices=" ??? "
@I_axes=" ??? "
I: float[100, 512]
I: float[100, 512]
Qx: float[100]
Qx: float[100]
Line 237: Line 272:
<pre>
<pre>
@Q_indices=",Time,,*,*"
@Q_indices=",Time,,*,*"
@I_indices="T,Time,P,Q,Q"
@I_axes="T,Time,P,Q,Q"
@Mask_indices=",,,Q,Q"
@Mask_indices=",,,Q,Q"
</pre>
</pre>
Line 246: Line 281:
Comma-separated list that describes which indices are used (from the I object) to reference Q.  Leave a position empty if that index is not used to describe Q,  Use a "*" to describe an index that uses the Q definition.  For other data storage objects, name the object for the position where it should appear.
Comma-separated list that describes which indices are used (from the I object) to reference Q.  Leave a position empty if that index is not used to describe Q,  Use a "*" to describe an index that uses the Q definition.  For other data storage objects, name the object for the position where it should appear.


=== @I_indices ===
=== @I_axes ===
Comma-separated list that describes which objects correspond to the indices of the I object.
Comma-separated list that describes which objects correspond to the indices of the I object.
For indices that involve Q, use the term "Q" and the @Q_indices attribute will provide more information.
For indices that involve Q, use the term "Q" and the @Q_indices attribute will provide more information.

Revision as of 12:23, 31 July 2012

1D

example of simple 1D SAS data, I(Q)

SASroot
	SASentry
		SASdata
			@Q_indices=0
			@I_axes="Q"
			I: float[100]
			Q: float[100]

(see the Discussion page for an XML representation with the recommended minimum content)

example of simple 1D SAS data in a time series, I(Q, t)

SASroot
	SASentry
		SASdata
			@Q_indices=1
			@I_axes="Time,Q"
			I: float[nTime,100]
			Q: float[100]
			Time: float[nTime]

example of generic 1D SAS data in a time series, I(Q(t), t)

SASroot
	SASentry
		SASdata
			@Q_indices=0,1
			@I_axes="Time,Q"
			I: float[nTime,100]
			Q: float[nTime,100]
			Time: float[nTime]



2D

example of simple 2D (image) SAS data, I(Q)

SASroot
	SASentry
		SASdata
			@Q_indices=0,1
			@I_axes="Q,Q"
			I: float[100, 512]
			Qx: float[100, 512]
			Qy: float[100, 512]

example of a simple masked 2D (image) SAS data, I(Q)

SASroot
	SASentry
		SASdata
			@Q_indices=0,1
			@I_axes="Q,Q"
			@Mask_indices=0,1
			I: float[100, 512]
			Qx: float[100, 512]
			Qy: float[100, 512]
			Mask: int[100, 512]

example of generic 2D SAS data, I(Q)

Could use this model, for example, to describe data from multiple detectors (by listing individual pixels off all detectors). Or, could describe data from one detector of any geometry. This is the most flexible.

SASroot
	SASentry
		SASdata
			@Q_indices=0
			@I_axes="Q"
			I: float[100*512]
			Qx: float[100*512]
			Qy: float[100*512]
			Qz: float[100*512]

example of generic 2D SAS data in a time series, I(Q(t),t)

SASroot
	SASentry
		SASdata
			@Q_indices=0,1
			@I_axes="Time,Q"
			I: float[nTime,100*512]
			Qx: float[nTime,100*512]
			Qy: float[nTime,100*512]
			Qz: float[nTime,100*512]
			Time: float[nTime]

example of 2D SAS data as images in a time series with a time-independent mask, I(Q(t),t)

This example explores a bit of complexity added to the previous example.

SASroot
	SASentry
		SASdata
			@Q_indices=0,1,2
			@I_axes="Time,Q,Q"
			@Mask_indices=1,2
			I: float[nTime,100,512]
			Qx: float[nTime,100,512]
			Qy: float[nTime,100,512]
			Qz: float[nTime,100,512]
			Time: float[nTime]
			Mask: int[100,512]

example of generic 2D SAS data in a time, T, & P series, I(t,T,P,Q(t,T,P))

SASroot
	SASentry
		SASdata
			@Q_indices=0,1,2,3
			@I_axes="Time,Temperature,Pressure,Q"
			I: float[nTime,nTemperature,nPressure,100*512]
			Qx: float[nTime,nTemperature,nPressure,100*512]
			Qy: float[nTime,nTemperature,nPressure,100*512]
			Qz: float[nTime,nTemperature,nPressure,100*512]
			Time: float[nTime]
			T: float[nTemperature]
			P: float[nPressure]

example of generic 2D SAS data (images) in a time, T, & P series, I(T,t,P,Q(t))

SASroot
	SASentry
		SASdata
			@Q_indices=1,3,4
			@I_axes="Temperature,Time,Pressure,Q,Q"
			I: float[nTemperature,nTime,nPressure,100,512]
			Qx: float[nTime,100,512]
			Qy: float[nTime,100,512]
			Qz: float[nTime,100,512]
			Time: float[nTime]
			Temperature: float[nTemperature]
			Pressure: float[nPressure]

example of simple 2D SAS/WAS data, Isas(Q) & Iwas(Q)

Consider the multi-technique experiment that produces small-angle and wide-angle scattering data images. The reduced data results in images as well. Each image might be described separately (see [[2012_Data_Discussion_Examples#example_of_SAS_data_with_several_detectors.2C_I.28Q.29 | example of SAS data with several detectors]] for an alternative). Here the SAS data image is 100 x 512 pixels. The WAS data (not covered by this canSAS standard) is 256 x 256 pixels.

SASroot
	SASentry
		SASdata
			@name="sasdata"
			@Q_indices=0,1
			@I_axes="Q,Q"
			I: float[100, 512]
			Qx: float[100, 512]
			Qy: float[100, 512]
		SASdata
			@name="wasdata"
			@Q_indices=0,1
			@I_axes="Q,Q"
			I: float[256, 256]
			Qx: float[256, 256]
			Qy: float[256, 256]

example of 2D SANS and 2D SAXS, In(Q) & Ix(Q)

Consider the multi-technique experiment that produces small-angle neutron and X-ray scattering data. Here the SANS data image is 100 x 512 pixels and the SAXS data is 256 x 256 pixels.

SASroot
	SASentry
		SASdata
			@name="sans"
			@Q_indices=0
			@I_axes="Q"
			I: float[100*512]
			Qx: float[100*512]
			Qy: float[100*512]
		SASdata
			@name="saxs"
			@Q_indices=0
			@I_axes="Q"
			I: float[256*256]
			Qx: float[256*256]
			Qy: float[256*256]

example of SAS data with several detectors, I(Q)

Here, the data are appended to common data objects. This hypothetical case has reduced data derived from three detectors, Ia(Q), Ib(Q), and Ic(Q):

  • Ia(Q) is derived from a 2D detector (100 x 512 pixels)
  • Ib(Q) is derived from a 1D detector (2000 pixels)
  • Ic(Q) is derived from a 2D detector (256 x 256 pixels)
SASroot
	SASentry
		SASdata
			@Q_indices=0
			@I_axes="Q"
			I: float[100*512  + 2000 + 256*256]
			Qx: float[100*512 + 2000 + 256*256]
			Qy: float[100*512 + 2000 + 256*256]
			Qz: float[100*512 + 2000 + 256*256]

invalid case

example of **over-simple** 2D (image) SAS data, I(Q)

Invalid because the method of addressing the Q values is different from all the above.


SASroot
	SASentry
		SASdata
			@Q_indices="*,*"
			@I_axes=" ??? "
			I: float[100, 512]
			Qx: float[100]
			Qy: float[512]

terms

SASroot

same use as original 1D format

SASentry

some changes from the original 1D format

SASdata

different use from original 1D format, refers to a single reduced data set that can be represented thus (such as from one detector)

SASdata has some possible, as shown in this example:

@Q_indices=",Time,,*,*"
@I_axes="T,Time,P,Q,Q"
@Mask_indices=",,,Q,Q"

Commas are used as delimiters in all cases.

@Q_indices

Comma-separated list that describes which indices are used (from the I object) to reference Q. Leave a position empty if that index is not used to describe Q, Use a "*" to describe an index that uses the Q definition. For other data storage objects, name the object for the position where it should appear.

@I_axes

Comma-separated list that describes which objects correspond to the indices of the I object. For indices that involve Q, use the term "Q" and the @Q_indices attribute will provide more information.

@Mask_indices

Comma-separated list that describes which objects correspond to the indices of the Mask object. For indices that involve Q, use the term "Q" and the @Q_indices attribute will provide more information.

Algorithm for Readers