SDDS ToolKit Programs and Libraries for C and Python
All Classes Files Functions Variables Macros Pages
sdds.SDDS Class Reference

A class to represent and manipulate SDDS datasets. More...

Public Member Functions

 __init__ (self, index=None)
 Initializes a new SDDS object.
 
 __del__ (self)
 Destructor to release the index when the object is deleted.
 
 load (self, input)
 Loads an SDDS file into the SDDS object.
 
 loadSparse (self, input, interval, offset)
 Loads an SDDS file into the SDDS object with sparse data reading.
 
 loadLastRows (self, input, lastrows)
 Loads an SDDS file into the SDDS object, reading only the last few rows.
 
 save (self, output)
 Saves the SDDS object's data to an SDDS file.
 
 setDescription (self, text, contents)
 Sets the description for the SDDS object.
 
 defineParameter (self, name, symbol="", units="", description="", formatString="", type=SDDS_DOUBLE, fixedValue="")
 Defines a parameter for the SDDS object.
 
 defineSimpleParameter (self, name, type)
 Defines a simple parameter with minimal information.
 
 defineArray (self, name, symbol="", units="", description="", formatString="", group_name="", type=SDDS_DOUBLE, fieldLength=0, dimensions=1)
 Defines an array for the SDDS object.
 
 defineSimpleArray (self, name, type, dimensions)
 Defines a simple array with minimal information.
 
 defineColumn (self, name, symbol="", units="", description="", formatString="", type=SDDS_DOUBLE, fieldLength=0)
 Defines a column for the SDDS object.
 
 defineSimpleColumn (self, name, type)
 Defines a simple column with minimal information.
 
 setParameterValueList (self, name, valueList)
 Sets the list of parameter values for a parameter.
 
 getParameterValueList (self, name)
 Gets the list of parameter values for a parameter.
 
 setParameterValue (self, name, value, page=1)
 Sets a single parameter value at a specific page.
 
 getParameterValue (self, name, page=1)
 Gets a single parameter value at a specific page.
 
 setArrayValueLists (self, name, valueList, dimensionList)
 Sets the nested list of array values and dimensions for a single array.
 
 getArrayValueLists (self, name)
 Gets the nested list of array values for a single array.
 
 getArrayDimensionLists (self, name)
 Gets the nested list of array dimensions for a single array.
 
 setArrayValueList (self, name, valueList, dimensionList, page=1)
 Sets a single array value and dimension at a specific page.
 
 getArrayValueList (self, name, page=1)
 Gets a single array value at a specific page.
 
 getArrayDimensionList (self, name, page=1)
 Gets a single array dimension at a specific page.
 
 setColumnValueLists (self, name, valueList)
 Sets the nested list of column values for a single column.
 
 getColumnValueLists (self, name)
 Gets the nested list of column values for a single column.
 
 setColumnValueList (self, name, valueList, page=1)
 Sets a single column value list at a specific page.
 
 getColumnValueList (self, name, page=1)
 Gets a single column value list at a specific page.
 
 setColumnValue (self, name, value, page=1, row=1)
 Sets a single column value at a specific page and row.
 
 getColumnValue (self, name, page=1, row=1)
 Gets a single column value at a specific page and row.
 
 getParameterCount (self)
 Retrieves the number of parameters.
 
 getArrayCount (self)
 Retrieves the number of arrays.
 
 getColumnCount (self)
 Retrieves the number of columns.
 
 getParameterNames (self)
 Retrieves a list of all parameter names.
 
 getArrayNames (self)
 Retrieves a list of all array names.
 
 getColumnNames (self)
 Retrieves a list of all column names.
 
 getParameterDatatype (self, name)
 Retrieves the data type of a parameter.
 
 getArrayDatatype (self, name)
 Retrieves the data type of a array.
 
 getColumnDatatype (self, name)
 Retrieves the data type of a column.
 
 getParameterUnits (self, name)
 Retrieves the units of a parameter.
 
 getArrayDatatype (self, name)
 Retrieves the units of a array.
 
 getColumnDatatype (self, name)
 Retrieves the units of a column.
 
 pageCount (self)
 Retrieves the number or loaded pages.
 

Public Attributes

 index = i
 
list description = ["", ""]
 
list parameterName = []
 
list arrayName = []
 
list columnName = []
 
list parameterDefinition = []
 
list arrayDefinition = []
 
list arrayDimensions = []
 
list columnDefinition = []
 
list parameterData = []
 
list arrayData = []
 
list columnData = []
 
int mode = self.SDDS_ASCII
 
int loaded_pages = 0
 
str parameterName = "Invalid parameter name " + name
 
str arrayName = "Invalid array name " + name
 
str columnName = "Invalid column name " + name
 

Static Public Attributes

int SDDS_VERBOSE_PrintErrors = 1
 
int SDDS_EXIT_PrintErrors = 2
 
int SDDS_CHECK_OKAY = 0
 
int SDDS_CHECK_NONEXISTENT = 1
 
int SDDS_CHECK_WRONGTYPE = 2
 
int SDDS_CHECK_WRONGUNITS = 3
 
int SDDS_LONGDOUBLE = 1
 
int SDDS_DOUBLE = 2
 
int SDDS_REAL64 = 2
 
int SDDS_FLOAT = 3
 
int SDDS_REAL32 = 3
 
int SDDS_LONG64 = 4
 
int SDDS_INT64 = 4
 
int SDDS_ULONG64 = 5
 
int SDDS_UINT64 = 5
 
int SDDS_LONG = 6
 
int SDDS_INT32 = 6
 
int SDDS_ULONG = 7
 
int SDDS_UINT32 = 7
 
int SDDS_SHORT = 8
 
int SDDS_INT16 = 8
 
int SDDS_USHORT = 9
 
int SDDS_UINT16 = 9
 
int SDDS_STRING = 10
 
int SDDS_CHARACTER = 11
 
int SDDS_NUM_TYPES = 11
 
int SDDS_BINARY = 1
 
int SDDS_ASCII = 2
 
int SDDS_FLUSH_TABLE = 1
 

Static Protected Attributes

 _used_indices = set()
 
int _max_index = 1000
 

Detailed Description

A class to represent and manipulate SDDS datasets.

This class provides methods to load, manipulate, and save SDDS data. It supports ASCII and binary formats and facilitates operations on parameters, arrays, and columns.

Attributes: index (int): The index of the SDDS dataset (integer from 0 to 1000). description (list): List containing the description text and contents of the SDDS file. parameterName (list): List of parameter names. arrayName (list): List of array names. columnName (list): List of column names. parameterDefinition (list): List of parameter definitions. arrayDefinition (list): List of array definitions. arrayDimensions (list): List of array dimensions. columnDefinition (list): List of column definitions. parameterData (list): List of parameter data values. arrayData (list): List of array data values. columnData (list): List of column data values. mode (int): The data storage mode (SDDS_ASCII or SDDS_BINARY).

Definition at line 22 of file sdds.py.

Constructor & Destructor Documentation

◆ __init__()

sdds.SDDS.__init__ ( self,
index = None )

Initializes a new SDDS object.

Args: index (int, optional): Integer index of the SDDS object. If not provided, an available index will be automatically assigned. Must be between 0 and 1000.

Raises: ValueError: If no index is provided and all indices are in use.

Definition at line 85 of file sdds.py.

85 def __init__(self, index=None):
86 """
87 Initializes a new SDDS object.
88
89 Args:
90 index (int, optional): Integer index of the SDDS object. If not provided, an available
91 index will be automatically assigned. Must be between 0 and 1000.
92
93 Raises:
94 ValueError: If no index is provided and all indices are in use.
95 """
96 if index is None:
97 # Automatically assign an unused index
98 for i in range(self._max_index + 1):
99 if i not in self._used_indices:
100 self.index = i
101 self._used_indices.add(i)
102 break
103 else:
104 raise ValueError("All SDDS indices are in use. Cannot create a new SDDS object.")
105 elif 0 <= index <= self._max_index:
106 if index in self._used_indices:
107 raise ValueError(f"Index {index} is already in use.")
108 self.index = index
109 self._used_indices.add(index)
110 else:
111 raise ValueError(f"Index {index} must be between 0 and {self._max_index}.")
112
113 # Initialize data storage variables
114 self.description = ["", ""]
115 self.parameterName = []
116 self.arrayName = []
117 self.columnName = []
118 self.parameterDefinition = []
119 self.arrayDefinition = []
120 self.arrayDimensions = []
121 self.columnDefinition = []
122 self.parameterData = []
123 self.arrayData = []
124 self.columnData = []
125 self.mode = self.SDDS_ASCII
126 self.loaded_pages = 0
127

◆ __del__()

sdds.SDDS.__del__ ( self)

Destructor to release the index when the object is deleted.

Definition at line 128 of file sdds.py.

128 def __del__(self):
129 """
130 Destructor to release the index when the object is deleted.
131 """
132 if hasattr(self, 'index') and self.index in self._used_indices:
133 self._used_indices.remove(self.index)
134

Member Function Documentation

◆ defineArray()

sdds.SDDS.defineArray ( self,
name,
symbol = "",
units = "",
description = "",
formatString = "",
group_name = "",
type = SDDS_DOUBLE,
fieldLength = 0,
dimensions = 1 )

Defines an array for the SDDS object.

Args: name (str): Array name. symbol (str, optional): Array symbol. units (str, optional): Array units. description (str, optional): Array description. formatString (str, optional): Format string for the array. group_name (str, optional): Group name for the array. type (int, optional): Data type of the array. Defaults to SDDS_DOUBLE, Valid options include:

  • SDDS_SHORT: 16-bit signed integer.
  • SDDS_USHORT: 16-bit unsigned integer.
  • SDDS_LONG: 32-bit signed integer.
  • SDDS_ULONG: 32-bit unsigned integer.
  • SDDS_LONG64: 64-bit signed integer.
  • SDDS_ULONG64: 64-bit unsigned integer.
  • SDDS_FLOAT: Single-precision floating-point number.
  • SDDS_DOUBLE: Double-precision floating-point number.
  • SDDS_LONGDOUBLE: Long double-precision floating-point number.
  • SDDS_STRING: String (textual data).
  • SDDS_CHARACTER: Single character. fieldLength (int, optional): Field length for the array. dimensions (int, optional): Number of dimensions of the array. Defaults to 1

This method adds an array definition to the SDDS object.

Definition at line 581 of file sdds.py.

581 def defineArray(self, name, symbol="", units="", description="", formatString="", group_name="", type=SDDS_DOUBLE, fieldLength=0, dimensions=1):
582 """
583 Defines an array for the SDDS object.
584
585 Args:
586 name (str): Array name.
587 symbol (str, optional): Array symbol.
588 units (str, optional): Array units.
589 description (str, optional): Array description.
590 formatString (str, optional): Format string for the array.
591 group_name (str, optional): Group name for the array.
592 type (int, optional): Data type of the array. Defaults to SDDS_DOUBLE, Valid options include:
593 - SDDS_SHORT: 16-bit signed integer.
594 - SDDS_USHORT: 16-bit unsigned integer.
595 - SDDS_LONG: 32-bit signed integer.
596 - SDDS_ULONG: 32-bit unsigned integer.
597 - SDDS_LONG64: 64-bit signed integer.
598 - SDDS_ULONG64: 64-bit unsigned integer.
599 - SDDS_FLOAT: Single-precision floating-point number.
600 - SDDS_DOUBLE: Double-precision floating-point number.
601 - SDDS_LONGDOUBLE: Long double-precision floating-point number.
602 - SDDS_STRING: String (textual data).
603 - SDDS_CHARACTER: Single character.
604 fieldLength (int, optional): Field length for the array.
605 dimensions (int, optional): Number of dimensions of the array. Defaults to 1
606
607 This method adds an array definition to the SDDS object.
608 """
609 self.arrayName.append(name)
610 self.arrayDefinition.append(
611 [symbol, units, description, formatString, group_name, type, fieldLength, dimensions]
612 )
613 self.arrayData.append([])
614 self.arrayDimensions.append([])
615

◆ defineColumn()

sdds.SDDS.defineColumn ( self,
name,
symbol = "",
units = "",
description = "",
formatString = "",
type = SDDS_DOUBLE,
fieldLength = 0 )

Defines a column for the SDDS object.

Args: name (str): Column name. symbol (str, optional): Column symbol. units (str, optional): Column units. description (str, optional): Column description. formatString (str, optional): Format string for the column. type (int, optional): Data type of the column. Defaults to SDDS_DOUBLE. Valid options include:

  • SDDS_SHORT: 16-bit signed integer.
  • SDDS_USHORT: 16-bit unsigned integer.
  • SDDS_LONG: 32-bit signed integer.
  • SDDS_ULONG: 32-bit unsigned integer.
  • SDDS_LONG64: 64-bit signed integer.
  • SDDS_ULONG64: 64-bit unsigned integer.
  • SDDS_FLOAT: Single-precision floating-point number.
  • SDDS_DOUBLE: Double-precision floating-point number.
  • SDDS_LONGDOUBLE: Long double-precision floating-point number.
  • SDDS_STRING: String (textual data).
  • SDDS_CHARACTER: Single character. fieldLength (int, optional): Field length for the column.

This method adds a column definition to the SDDS object.

Definition at line 643 of file sdds.py.

643 def defineColumn(self, name, symbol="", units="", description="", formatString="", type=SDDS_DOUBLE, fieldLength=0):
644 """
645 Defines a column for the SDDS object.
646
647 Args:
648 name (str): Column name.
649 symbol (str, optional): Column symbol.
650 units (str, optional): Column units.
651 description (str, optional): Column description.
652 formatString (str, optional): Format string for the column.
653 type (int, optional): Data type of the column. Defaults to SDDS_DOUBLE. Valid options include:
654 - SDDS_SHORT: 16-bit signed integer.
655 - SDDS_USHORT: 16-bit unsigned integer.
656 - SDDS_LONG: 32-bit signed integer.
657 - SDDS_ULONG: 32-bit unsigned integer.
658 - SDDS_LONG64: 64-bit signed integer.
659 - SDDS_ULONG64: 64-bit unsigned integer.
660 - SDDS_FLOAT: Single-precision floating-point number.
661 - SDDS_DOUBLE: Double-precision floating-point number.
662 - SDDS_LONGDOUBLE: Long double-precision floating-point number.
663 - SDDS_STRING: String (textual data).
664 - SDDS_CHARACTER: Single character.
665 fieldLength (int, optional): Field length for the column.
666
667 This method adds a column definition to the SDDS object.
668 """
669 self.columnName.append(name)
670 self.columnDefinition.append(
671 [symbol, units, description, formatString, type, fieldLength]
672 )
673 self.columnData.append([])
674

◆ defineParameter()

sdds.SDDS.defineParameter ( self,
name,
symbol = "",
units = "",
description = "",
formatString = "",
type = SDDS_DOUBLE,
fixedValue = "" )

Defines a parameter for the SDDS object.

Args: name (str): Parameter name. symbol (str, optional): Parameter symbol. units (str, optional): Parameter units. description (str, optional): Parameter description. formatString (str, optional): Format string for the parameter. type (int, optional): Data type of the parameter. Defaults to SDDS_DOUBLE. Valid options include:

  • SDDS_SHORT: 16-bit signed integer.
  • SDDS_USHORT: 16-bit unsigned integer.
  • SDDS_LONG: 32-bit signed integer.
  • SDDS_ULONG: 32-bit unsigned integer.
  • SDDS_LONG64: 64-bit signed integer.
  • SDDS_ULONG64: 64-bit unsigned integer.
  • SDDS_FLOAT: Single-precision floating-point number.
  • SDDS_DOUBLE: Double-precision floating-point number.
  • SDDS_LONGDOUBLE: Long double-precision floating-point number.
  • SDDS_STRING: String (textual data).
  • SDDS_CHARACTER: Single character. fixedValue (str, optional): Fixed value of the parameter.

This method adds a parameter definition to the SDDS object.

Definition at line 524 of file sdds.py.

524 def defineParameter(self, name, symbol="", units="", description="", formatString="", type=SDDS_DOUBLE, fixedValue=""):
525 """
526 Defines a parameter for the SDDS object.
527
528 Args:
529 name (str): Parameter name.
530 symbol (str, optional): Parameter symbol.
531 units (str, optional): Parameter units.
532 description (str, optional): Parameter description.
533 formatString (str, optional): Format string for the parameter.
534 type (int, optional): Data type of the parameter. Defaults to SDDS_DOUBLE. Valid options include:
535 - SDDS_SHORT: 16-bit signed integer.
536 - SDDS_USHORT: 16-bit unsigned integer.
537 - SDDS_LONG: 32-bit signed integer.
538 - SDDS_ULONG: 32-bit unsigned integer.
539 - SDDS_LONG64: 64-bit signed integer.
540 - SDDS_ULONG64: 64-bit unsigned integer.
541 - SDDS_FLOAT: Single-precision floating-point number.
542 - SDDS_DOUBLE: Double-precision floating-point number.
543 - SDDS_LONGDOUBLE: Long double-precision floating-point number.
544 - SDDS_STRING: String (textual data).
545 - SDDS_CHARACTER: Single character.
546 fixedValue (str, optional): Fixed value of the parameter.
547
548 This method adds a parameter definition to the SDDS object.
549 """
550 self.parameterName.append(name)
551 self.parameterDefinition.append(
552 [symbol, units, description, formatString, type, fixedValue]
553 )
554 self.parameterData.append([])
555

◆ defineSimpleArray()

sdds.SDDS.defineSimpleArray ( self,
name,
type,
dimensions )

Defines a simple array with minimal information.

Args: name (str): Array name. type (int): Data type of the array. Valid options include:

  • SDDS_SHORT: 16-bit signed integer.
  • SDDS_USHORT: 16-bit unsigned integer.
  • SDDS_LONG: 32-bit signed integer.
  • SDDS_ULONG: 32-bit unsigned integer.
  • SDDS_LONG64: 64-bit signed integer.
  • SDDS_ULONG64: 64-bit unsigned integer.
  • SDDS_FLOAT: Single-precision floating-point number.
  • SDDS_DOUBLE: Double-precision floating-point number.
  • SDDS_LONGDOUBLE: Long double-precision floating-point number.
  • SDDS_STRING: String (textual data).
  • SDDS_CHARACTER: Single character. dimensions (int): Number of dimensions of the array.

This method adds an array definition with default attributes.

Definition at line 616 of file sdds.py.

616 def defineSimpleArray(self, name, type, dimensions):
617 """
618 Defines a simple array with minimal information.
619
620 Args:
621 name (str): Array name.
622 type (int): Data type of the array. Valid options include:
623 - SDDS_SHORT: 16-bit signed integer.
624 - SDDS_USHORT: 16-bit unsigned integer.
625 - SDDS_LONG: 32-bit signed integer.
626 - SDDS_ULONG: 32-bit unsigned integer.
627 - SDDS_LONG64: 64-bit signed integer.
628 - SDDS_ULONG64: 64-bit unsigned integer.
629 - SDDS_FLOAT: Single-precision floating-point number.
630 - SDDS_DOUBLE: Double-precision floating-point number.
631 - SDDS_LONGDOUBLE: Long double-precision floating-point number.
632 - SDDS_STRING: String (textual data).
633 - SDDS_CHARACTER: Single character.
634 dimensions (int): Number of dimensions of the array.
635
636 This method adds an array definition with default attributes.
637 """
638 self.arrayName.append(name)
639 self.arrayDefinition.append(["", "", "", "", "", type, 0, dimensions])
640 self.arrayData.append([])
641 self.arrayDimensions.append([])
642

◆ defineSimpleColumn()

sdds.SDDS.defineSimpleColumn ( self,
name,
type )

Defines a simple column with minimal information.

Args: name (str): Column name. type (int): Data type of the column. Valid options include:

  • SDDS_SHORT: 16-bit signed integer.
  • SDDS_USHORT: 16-bit unsigned integer.
  • SDDS_LONG: 32-bit signed integer.
  • SDDS_ULONG: 32-bit unsigned integer.
  • SDDS_LONG64: 64-bit signed integer.
  • SDDS_ULONG64: 64-bit unsigned integer.
  • SDDS_FLOAT: Single-precision floating-point number.
  • SDDS_DOUBLE: Double-precision floating-point number.
  • SDDS_LONGDOUBLE: Long double-precision floating-point number.
  • SDDS_STRING: String (textual data).
  • SDDS_CHARACTER: Single character.

This method adds a column definition with default attributes.

Definition at line 675 of file sdds.py.

675 def defineSimpleColumn(self, name, type):
676 """
677 Defines a simple column with minimal information.
678
679 Args:
680 name (str): Column name.
681 type (int): Data type of the column. Valid options include:
682 - SDDS_SHORT: 16-bit signed integer.
683 - SDDS_USHORT: 16-bit unsigned integer.
684 - SDDS_LONG: 32-bit signed integer.
685 - SDDS_ULONG: 32-bit unsigned integer.
686 - SDDS_LONG64: 64-bit signed integer.
687 - SDDS_ULONG64: 64-bit unsigned integer.
688 - SDDS_FLOAT: Single-precision floating-point number.
689 - SDDS_DOUBLE: Double-precision floating-point number.
690 - SDDS_LONGDOUBLE: Long double-precision floating-point number.
691 - SDDS_STRING: String (textual data).
692 - SDDS_CHARACTER: Single character.
693
694 This method adds a column definition with default attributes.
695 """
696 self.columnName.append(name)
697 self.columnDefinition.append(["", "", "", "", type, 0])
698 self.columnData.append([])
699

◆ defineSimpleParameter()

sdds.SDDS.defineSimpleParameter ( self,
name,
type )

Defines a simple parameter with minimal information.

Args: name (str): Parameter name. type (int): Data type of the parameter. Valid options include:

  • SDDS_SHORT: 16-bit signed integer.
  • SDDS_USHORT: 16-bit unsigned integer.
  • SDDS_LONG: 32-bit signed integer.
  • SDDS_ULONG: 32-bit unsigned integer.
  • SDDS_LONG64: 64-bit signed integer.
  • SDDS_ULONG64: 64-bit unsigned integer.
  • SDDS_FLOAT: Single-precision floating-point number.
  • SDDS_DOUBLE: Double-precision floating-point number.
  • SDDS_LONGDOUBLE: Long double-precision floating-point number.
  • SDDS_STRING: String (textual data).
  • SDDS_CHARACTER: Single character.

This method adds a parameter definition with default attributes.

Definition at line 556 of file sdds.py.

556 def defineSimpleParameter(self, name, type):
557 """
558 Defines a simple parameter with minimal information.
559
560 Args:
561 name (str): Parameter name.
562 type (int): Data type of the parameter. Valid options include:
563 - SDDS_SHORT: 16-bit signed integer.
564 - SDDS_USHORT: 16-bit unsigned integer.
565 - SDDS_LONG: 32-bit signed integer.
566 - SDDS_ULONG: 32-bit unsigned integer.
567 - SDDS_LONG64: 64-bit signed integer.
568 - SDDS_ULONG64: 64-bit unsigned integer.
569 - SDDS_FLOAT: Single-precision floating-point number.
570 - SDDS_DOUBLE: Double-precision floating-point number.
571 - SDDS_LONGDOUBLE: Long double-precision floating-point number.
572 - SDDS_STRING: String (textual data).
573 - SDDS_CHARACTER: Single character.
574
575 This method adds a parameter definition with default attributes.
576 """
577 self.parameterName.append(name)
578 self.parameterDefinition.append(["", "", "", "", type, ""])
579 self.parameterData.append([])
580

◆ getArrayCount()

sdds.SDDS.getArrayCount ( self)

Retrieves the number of arrays.

Returns: int: The number of arrays.

Definition at line 1140 of file sdds.py.

1140 def getArrayCount(self):
1141 """
1142 Retrieves the number of arrays.
1143
1144 Returns:
1145 int: The number of arrays.
1146 """
1147 return(len(self.arrayName))
1148

◆ getArrayDatatype() [1/2]

sdds.SDDS.getArrayDatatype ( self,
name )

Retrieves the data type of a array.

Args: name (str): Array name.

Returns: int: Number representing the data type of the array.

Definition at line 1201 of file sdds.py.

1201 def getArrayDatatype(self, name):
1202 """
1203 Retrieves the data type of a array.
1204
1205 Args:
1206 name (str): Array name.
1207
1208 Returns:
1209 int: Number representing the data type of the array.
1210 """
1211 if name in self.arrayName:
1212 return(self.arrayDefinition[self.arrayName.index(name)][5])
1213 else:
1214 msg = "Invalid array name " + name
1215 raise Exception(msg)
1216

◆ getArrayDatatype() [2/2]

sdds.SDDS.getArrayDatatype ( self,
name )

Retrieves the units of a array.

Args: name (str): Array name.

Returns: str: Units of the array.

Definition at line 1249 of file sdds.py.

1249 def getArrayDatatype(self, name):
1250 """
1251 Retrieves the units of a array.
1252
1253 Args:
1254 name (str): Array name.
1255
1256 Returns:
1257 str: Units of the array.
1258 """
1259 if name in self.arrayName:
1260 return(self.arrayDefinition[self.arrayName.index(name)][1])
1261 else:
1262 msg = "Invalid array name " + name
1263 raise Exception(msg)
1264

◆ getArrayDimensionList()

sdds.SDDS.getArrayDimensionList ( self,
name,
page = 1 )

Gets a single array dimension at a specific page.

Args: name (str): Array name. page (int, optional): Page number (1-based index, defaults to 1).

Returns: list: Array dimension.

Raises: Exception: If the array name or page is invalid.

Definition at line 923 of file sdds.py.

923 def getArrayDimensionList(self, name, page=1):
924 """
925 Gets a single array dimension at a specific page.
926
927 Args:
928 name (str): Array name.
929 page (int, optional): Page number (1-based index, defaults to 1).
930
931 Returns:
932 list: Array dimension.
933
934 Raises:
935 Exception: If the array name or page is invalid.
936 """
937 page = page - 1
938 numberOfArrays = len(self.arrayName)
939 if name in self.arrayName:
940 i = self.arrayName.index(name)
941 if len(self.arrayData[i]) == page:
942 return(self.arrayDimensions[i][page:])
943 elif len(self.arrayData[i]) < page or page < 0:
944 msg = "Invalid page " + str(page + 1)
945 raise Exception(msg)
946 else:
947 return(self.arrayDimensions[i][page])
948 else:
949 msg = "Invalid array name " + name
950 raise Exception(msg)
951

◆ getArrayDimensionLists()

sdds.SDDS.getArrayDimensionLists ( self,
name )

Gets the nested list of array dimensions for a single array.

This can be used to get dimensions for multiple pages at once.

Args: name (str): Array name.

Returns: list: Nested list of array dimensions.

Raises: Exception: If the array name is invalid.

Definition at line 842 of file sdds.py.

842 def getArrayDimensionLists(self, name):
843 """
844 Gets the nested list of array dimensions for a single array. This can be used to get dimensions for multiple pages at once.
845
846 Args:
847 name (str): Array name.
848
849 Returns:
850 list: Nested list of array dimensions.
851
852 Raises:
853 Exception: If the array name is invalid.
854 """
855 numberOfArrays = len(self.arrayName)
856 if name in self.arrayName:
857 return(self.arrayDimensions[self.arrayName.index(name)])
858 else:
859 msg = "Invalid array name " + name
860 raise Exception(msg)
861

◆ getArrayNames()

sdds.SDDS.getArrayNames ( self)

Retrieves a list of all array names.

Returns: list: A list of array names as strings, or an empty list.

Definition at line 1167 of file sdds.py.

1167 def getArrayNames(self):
1168 """
1169 Retrieves a list of all array names.
1170
1171 Returns:
1172 list: A list of array names as strings, or an empty list.
1173 """
1174 return(self.arrayName)
1175

◆ getArrayValueList()

sdds.SDDS.getArrayValueList ( self,
name,
page = 1 )

Gets a single array value at a specific page.

Args: name (str): Array name. page (int, optional): Page number (1-based index, defaults to 1).

Returns: list: Array values.

Raises: Exception: If the array name or page is invalid.

Definition at line 894 of file sdds.py.

894 def getArrayValueList(self, name, page=1):
895 """
896 Gets a single array value at a specific page.
897
898 Args:
899 name (str): Array name.
900 page (int, optional): Page number (1-based index, defaults to 1).
901
902 Returns:
903 list: Array values.
904
905 Raises:
906 Exception: If the array name or page is invalid.
907 """
908 page = page - 1
909 numberOfArrays = len(self.arrayName)
910 if name in self.arrayName:
911 i = self.arrayName.index(name)
912 if len(self.arrayData[i]) == page:
913 return(self.arrayData[i][page:])
914 elif len(self.arrayData[i]) < page or page < 0:
915 msg = "Invalid page " + str(page + 1)
916 raise Exception(msg)
917 else:
918 return(self.arrayData[i][page])
919 else:
920 msg = "Invalid array name " + name
921 raise Exception(msg)
922

◆ getArrayValueLists()

sdds.SDDS.getArrayValueLists ( self,
name )

Gets the nested list of array values for a single array.

This can be used to get values for multiple pages at once.

Args: name (str): Array name.

Returns: list: Nested list of array values.

Raises: Exception: If the array name is invalid.

Definition at line 822 of file sdds.py.

822 def getArrayValueLists(self, name):
823 """
824 Gets the nested list of array values for a single array. This can be used to get values for multiple pages at once.
825
826 Args:
827 name (str): Array name.
828
829 Returns:
830 list: Nested list of array values.
831
832 Raises:
833 Exception: If the array name is invalid.
834 """
835 numberOfArrays = len(self.arrayName)
836 if name in self.arrayName:
837 return(self.arrayData[self.arrayName.index(name)])
838 else:
839 msg = "Invalid array name " + name
840 raise Exception(msg)
841

◆ getColumnCount()

sdds.SDDS.getColumnCount ( self)

Retrieves the number of columns.

Returns: int: The number of columns.

Definition at line 1149 of file sdds.py.

1149 def getColumnCount(self):
1150 """
1151 Retrieves the number of columns.
1152
1153 Returns:
1154 int: The number of columns.
1155 """
1156 return(len(self.columnName))
1157

◆ getColumnDatatype() [1/2]

sdds.SDDS.getColumnDatatype ( self,
name )

Retrieves the data type of a column.

Args: name (str): Column name.

Returns: int: Number representing the data type of the column.

Definition at line 1217 of file sdds.py.

1217 def getColumnDatatype(self, name):
1218 """
1219 Retrieves the data type of a column.
1220
1221 Args:
1222 name (str): Column name.
1223
1224 Returns:
1225 int: Number representing the data type of the column.
1226 """
1227 if name in self.columnName:
1228 return(self.columnDefinition[self.columnName.index(name)][4])
1229 else:
1230 msg = "Invalid column name " + name
1231 raise Exception(msg)
1232

◆ getColumnDatatype() [2/2]

sdds.SDDS.getColumnDatatype ( self,
name )

Retrieves the units of a column.

Args: name (str): Column name.

Returns: str: Units of the column.

Definition at line 1265 of file sdds.py.

1265 def getColumnDatatype(self, name):
1266 """
1267 Retrieves the units of a column.
1268
1269 Args:
1270 name (str): Column name.
1271
1272 Returns:
1273 str: Units of the column.
1274 """
1275 if name in self.columnName:
1276 return(self.columnDefinition[self.columnName.index(name)][1])
1277 else:
1278 msg = "Invalid column name " + name
1279 raise Exception(msg)
1280

◆ getColumnNames()

sdds.SDDS.getColumnNames ( self)

Retrieves a list of all column names.

Returns: list: A list of column names as strings, or an empty list.

Definition at line 1176 of file sdds.py.

1176 def getColumnNames(self):
1177 """
1178 Retrieves a list of all column names.
1179
1180 Returns:
1181 list: A list of column names as strings, or an empty list.
1182 """
1183 return(self.columnName)
1184

◆ getColumnValue()

sdds.SDDS.getColumnValue ( self,
name,
page = 1,
row = 1 )

Gets a single column value at a specific page and row.

Args: name (str): Column name. page (int, optional): Page number (1-based index, defaults to 1). row (int, optional): Row number (1-based index, defaults to 1).

Returns: value: Column value.

Raises: Exception: If the column name, page, or row is invalid.

Definition at line 1090 of file sdds.py.

1090 def getColumnValue(self, name, page=1, row=1):
1091 """
1092 Gets a single column value at a specific page and row.
1093
1094 Args:
1095 name (str): Column name.
1096 page (int, optional): Page number (1-based index, defaults to 1).
1097 row (int, optional): Row number (1-based index, defaults to 1).
1098
1099 Returns:
1100 value: Column value.
1101
1102 Raises:
1103 Exception: If the column name, page, or row is invalid.
1104 """
1105 page = page - 1
1106 row = row - 1
1107 numberOfColumns = len(self.columnName)
1108 if name in self.columnName:
1109 i = self.columnName.index(name)
1110 if len(self.columnData[i]) == page:
1111 if row == 0:
1112 return(self.columnData[i][page:])
1113 else:
1114 msg = "Invalid row " + str(row + 1)
1115 raise Exception(msg)
1116 elif len(self.columnData[i]) < page or page < 0:
1117 msg = "Invalid page " + str(page + 1)
1118 raise Exception(msg)
1119 else:
1120 if len(self.columnData[i][page]) == row:
1121 return(self.columnData[i][page][row:])
1122 elif len(self.columnData[i][page]) < row or row < 0:
1123 msg = "Invalid row " + str(row + 1)
1124 raise Exception(msg)
1125 else:
1126 return(self.columnData[i][page][row])
1127 else:
1128 msg = "Invalid column name " + name
1129 raise Exception(msg)
1130

◆ getColumnValueList()

sdds.SDDS.getColumnValueList ( self,
name,
page = 1 )

Gets a single column value list at a specific page.

Args: name (str): Column name. page (int, optional): Page number (1-based index, defaults to 1).

Returns: list: Column values.

Raises: Exception: If the column name or page is invalid.

Definition at line 1020 of file sdds.py.

1020 def getColumnValueList(self, name, page=1):
1021 """
1022 Gets a single column value list at a specific page.
1023
1024 Args:
1025 name (str): Column name.
1026 page (int, optional): Page number (1-based index, defaults to 1).
1027
1028 Returns:
1029 list: Column values.
1030
1031 Raises:
1032 Exception: If the column name or page is invalid.
1033 """
1034 page = page - 1
1035 numberOfColumns = len(self.columnName)
1036 if name in self.columnName:
1037 i = self.columnName.index(name)
1038 if len(self.columnData[i]) == page:
1039 return(self.columnData[i][page:])
1040 elif len(self.columnData[i]) < page or page < 0:
1041 msg = "Invalid page " + str(page + 1)
1042 raise Exception(msg)
1043 else:
1044 return(self.columnData[i][page])
1045 else:
1046 msg = "Invalid column name " + name
1047 raise Exception(msg)
1048

◆ getColumnValueLists()

sdds.SDDS.getColumnValueLists ( self,
name )

Gets the nested list of column values for a single column.

This can be used to get values for multiple pages at once.

Args: name (str): Column name.

Returns: list: Nested list of column values.

Raises: Exception: If the column name is invalid.

Definition at line 972 of file sdds.py.

972 def getColumnValueLists(self, name):
973 """
974 Gets the nested list of column values for a single column. This can be used to get values for multiple pages at once.
975
976 Args:
977 name (str): Column name.
978
979 Returns:
980 list: Nested list of column values.
981
982 Raises:
983 Exception: If the column name is invalid.
984 """
985 numberOfColumns = len(self.columnName)
986 if name in self.columnName:
987 return(self.columnData[self.columnName.index(name)])
988 else:
989 msg = "Invalid column name " + name
990 raise Exception(msg)
991

◆ getParameterCount()

sdds.SDDS.getParameterCount ( self)

Retrieves the number of parameters.

Returns: int: The number of parameters.

Definition at line 1131 of file sdds.py.

1131 def getParameterCount(self):
1132 """
1133 Retrieves the number of parameters.
1134
1135 Returns:
1136 int: The number of parameters.
1137 """
1138 return(len(self.parameterName))
1139

◆ getParameterDatatype()

sdds.SDDS.getParameterDatatype ( self,
name )

Retrieves the data type of a parameter.

Args: name (str): Parameter name.

Returns: int: Number representing the data type of the parameter.

Definition at line 1185 of file sdds.py.

1185 def getParameterDatatype(self, name):
1186 """
1187 Retrieves the data type of a parameter.
1188
1189 Args:
1190 name (str): Parameter name.
1191
1192 Returns:
1193 int: Number representing the data type of the parameter.
1194 """
1195 if name in self.parameterName:
1196 return(self.parameterDefinition[self.parameterName.index(name)][4])
1197 else:
1198 msg = "Invalid parameter name " + name
1199 raise Exception(msg)
1200

◆ getParameterNames()

sdds.SDDS.getParameterNames ( self)

Retrieves a list of all parameter names.

Returns: list: A list of parameter names as strings, or an empty list.

Definition at line 1158 of file sdds.py.

1158 def getParameterNames(self):
1159 """
1160 Retrieves a list of all parameter names.
1161
1162 Returns:
1163 list: A list of parameter names as strings, or an empty list.
1164 """
1165 return(self.parameterName)
1166

◆ getParameterUnits()

sdds.SDDS.getParameterUnits ( self,
name )

Retrieves the units of a parameter.

Args: name (str): Parameter name.

Returns: str: Units of the parameter.

Definition at line 1233 of file sdds.py.

1233 def getParameterUnits(self, name):
1234 """
1235 Retrieves the units of a parameter.
1236
1237 Args:
1238 name (str): Parameter name.
1239
1240 Returns:
1241 str: Units of the parameter.
1242 """
1243 if name in self.parameterName:
1244 return(self.parameterDefinition[self.parameterName.index(name)][1])
1245 else:
1246 msg = "Invalid parameter name " + name
1247 raise Exception(msg)
1248

◆ getParameterValue()

sdds.SDDS.getParameterValue ( self,
name,
page = 1 )

Gets a single parameter value at a specific page.

Args: name (str): Parameter name. page (int, optional): Page number (1-based index, defaults to 1).

Returns: value: Parameter value.

Raises: Exception: If the parameter name or page is invalid.

Definition at line 770 of file sdds.py.

770 def getParameterValue(self, name, page=1):
771 """
772 Gets a single parameter value at a specific page.
773
774 Args:
775 name (str): Parameter name.
776 page (int, optional): Page number (1-based index, defaults to 1).
777
778 Returns:
779 value: Parameter value.
780
781 Raises:
782 Exception: If the parameter name or page is invalid.
783 """
784 page = page - 1
785 numberOfParameters = len(self.parameterName)
786 if name in self.parameterName:
787 i = self.parameterName.index(name)
788 if len(self.parameterData[i]) == page:
789 return(self.parameterData[i][page:])
790 elif len(self.parameterData[i]) < page or page < 0:
791 msg = "Invalid page " + str(page + 1)
792 raise Exception(msg)
793 else:
794 return(self.parameterData[i][page])
795 else:
796 msg = "Invalid parameter name " + name
797 raise Exception(msg)
798

◆ getParameterValueList()

sdds.SDDS.getParameterValueList ( self,
name )

Gets the list of parameter values for a parameter.

This can be used to get values for multiple pages at once.

Args: name (str): Parameter name.

Returns: list: List of values for the parameter.

Raises: Exception: If the parameter name is invalid.

Definition at line 720 of file sdds.py.

720 def getParameterValueList(self, name):
721 """
722 Gets the list of parameter values for a parameter. This can be used to get values for multiple pages at once.
723
724 Args:
725 name (str): Parameter name.
726
727 Returns:
728 list: List of values for the parameter.
729
730 Raises:
731 Exception: If the parameter name is invalid.
732
733 """
734 numberOfParameters = len(self.parameterName)
735 if name in self.parameterName:
736 return(self.parameterData[self.parameterName.index(name)])
737 else:
738 msg = "Invalid parameter name " + name
739 raise Exception(msg)
740

◆ load()

sdds.SDDS.load ( self,
input )

Loads an SDDS file into the SDDS object.

Args: input (str): The input SDDS filename to load.

Raises: Exception: If unable to read the SDDS data.

This method reads the SDDS file specified by input, and populates the object's data structures with the parameters, arrays, columns, and their respective data.

Definition at line 135 of file sdds.py.

135 def load(self, input):
136 """
137 Loads an SDDS file into the SDDS object.
138
139 Args:
140 input (str): The input SDDS filename to load.
141
142 Raises:
143 Exception: If unable to read the SDDS data.
144
145 This method reads the SDDS file specified by `input`, and populates the object's data structures
146 with the parameters, arrays, columns, and their respective data.
147 """
148 try:
149 # Open SDDS file
150 if sddsdata.InitializeInput(self.index, input) != 1:
151 time.sleep(1)
152 if sddsdata.InitializeInput(self.index, input) != 1:
153 raise ValueError("Failed to initialize SDDS input.")
154
155 # Get data storage mode (SDDS_ASCII or SDDS_BINARY)
156 self.mode = sddsdata.GetMode(self.index)
157
158 # Get description text and contents
159 self.description = sddsdata.GetDescription(self.index)
160
161 # Get parameter names
162 self.parameterName = sddsdata.GetParameterNames(self.index)
163 numberOfParameters = len(self.parameterName)
164
165 # Get array names
166 self.arrayName = sddsdata.GetArrayNames(self.index)
167 numberOfArrays = len(self.arrayName)
168
169 # Get column names
170 self.columnName = sddsdata.GetColumnNames(self.index)
171 numberOfColumns = len(self.columnName)
172
173 # Get parameter definitions
174 self.parameterDefinition = [sddsdata.GetParameterDefinition(self.index, name) for name in self.parameterName]
175
176 # Get array definitions
177 self.arrayDefinition = [sddsdata.GetArrayDefinition(self.index, name) for name in self.arrayName]
178
179 # Get column definitions
180 self.columnDefinition = [sddsdata.GetColumnDefinition(self.index, name) for name in self.columnName]
181
182 # Initialize parameter, array, and column data
183 self.parameterData = [[] for _ in range(numberOfParameters)]
184 self.arrayData = [[] for _ in range(numberOfArrays)]
185 self.columnData = [[] for _ in range(numberOfColumns)]
186 self.arrayDimensions = [[] for _ in range(numberOfArrays)]
187
188 # Read in SDDS data
189 page = sddsdata.ReadPage(self.index)
190 if page != 1:
191 raise Exception("Unable to read SDDS data for the first page")
192 while page > 0:
193 self.loaded_pages += 1
194 for i in range(numberOfParameters):
195 self.parameterData[i].append(sddsdata.GetParameter(self.index, i))
196 for i in range(numberOfArrays):
197 self.arrayData[i].append(sddsdata.GetArray(self.index, i))
198 self.arrayDimensions[i].append(sddsdata.GetArrayDimensions(self.index, i))
199 rows = sddsdata.RowCount(self.index)
200 if rows > 0:
201 for i in range(numberOfColumns):
202 self.columnData[i].append(sddsdata.GetColumn(self.index, i))
203 else:
204 for i in range(numberOfColumns):
205 self.columnData[i].append([])
206 page = sddsdata.ReadPage(self.index)
207
208 # Close SDDS file
209 if sddsdata.Terminate(self.index) != 1:
210 raise ValueError("Failed to terminate SDDS input.")
211
212 except:
213 sddsdata.PrintErrors(self.SDDS_VERBOSE_PrintErrors)
214 raise
215

◆ loadLastRows()

sdds.SDDS.loadLastRows ( self,
input,
lastrows )

Loads an SDDS file into the SDDS object, reading only the last few rows.

Args: input (str): The input SDDS filename to load. lastrows (int): Number of last rows to read.

Raises: Exception: If unable to read the SDDS data.

This method reads only the last lastrows rows from each page of the SDDS file.

Definition at line 297 of file sdds.py.

297 def loadLastRows(self, input, lastrows):
298 """
299 Loads an SDDS file into the SDDS object, reading only the last few rows.
300
301 Args:
302 input (str): The input SDDS filename to load.
303 lastrows (int): Number of last rows to read.
304
305 Raises:
306 Exception: If unable to read the SDDS data.
307
308 This method reads only the last `lastrows` rows from each page of the SDDS file.
309 """
310 try:
311 # Open SDDS file
312 if sddsdata.InitializeInput(self.index, input) != 1:
313 time.sleep(1)
314 if sddsdata.InitializeInput(self.index, input) != 1:
315 raise ValueError("Failed to initialize SDDS input.")
316
317 # Get data storage mode (SDDS_ASCII or SDDS_BINARY)
318 self.mode = sddsdata.GetMode(self.index)
319
320 # Get description text and contents
321 self.description = sddsdata.GetDescription(self.index)
322
323 # Get parameter names
324 self.parameterName = sddsdata.GetParameterNames(self.index)
325 numberOfParameters = len(self.parameterName)
326
327 # Get array names
328 self.arrayName = sddsdata.GetArrayNames(self.index)
329 numberOfArrays = len(self.arrayName)
330
331 # Get column names
332 self.columnName = sddsdata.GetColumnNames(self.index)
333 numberOfColumns = len(self.columnName)
334
335 # Get parameter definitions
336 self.parameterDefinition = [sddsdata.GetParameterDefinition(self.index, name) for name in self.parameterName]
337
338 # Get array definitions
339 self.arrayDefinition = [sddsdata.GetArrayDefinition(self.index, name) for name in self.arrayName]
340
341 # Get column definitions
342 self.columnDefinition = [sddsdata.GetColumnDefinition(self.index, name) for name in self.columnName]
343
344 # Initialize parameter, array, and column data
345 self.parameterData = [[] for _ in range(numberOfParameters)]
346 self.arrayData = [[] for _ in range(numberOfArrays)]
347 self.columnData = [[] for _ in range(numberOfColumns)]
348 self.arrayDimensions = [[] for _ in range(numberOfArrays)]
349
350 # Read in SDDS data (last rows)
351 page = sddsdata.ReadPageLastRows(self.index, lastrows)
352 if page != 1:
353 raise Exception("Unable to read SDDS data for the first page")
354 while page > 0:
355 for i in range(numberOfParameters):
356 self.parameterData[i].append(sddsdata.GetParameter(self.index, i))
357 for i in range(numberOfArrays):
358 self.arrayData[i].append(sddsdata.GetArray(self.index, i))
359 self.arrayDimensions[i].append(sddsdata.GetArrayDimensions(self.index, i))
360 rows = sddsdata.RowCount(self.index)
361 if rows > 0:
362 for i in range(numberOfColumns):
363 self.columnData[i].append(sddsdata.GetColumn(self.index, i))
364 else:
365 for i in range(numberOfColumns):
366 self.columnData[i].append([])
367 page = sddsdata.ReadPageLastRows(self.index, lastrows)
368
369 # Close SDDS file
370 if sddsdata.Terminate(self.index) != 1:
371 raise ValueError("Failed to terminate SDDS input.")
372
373 except:
374 sddsdata.PrintErrors(self.SDDS_VERBOSE_PrintErrors)
375 raise
376

◆ loadSparse()

sdds.SDDS.loadSparse ( self,
input,
interval,
offset )

Loads an SDDS file into the SDDS object with sparse data reading.

Args: input (str): The input SDDS filename to load. interval (int): Interval between pages to read. offset (int): Offset to start reading from.

Raises: Exception: If unable to read the SDDS data.

This method reads every interval pages from the SDDS file, starting from the page at offset.

Definition at line 216 of file sdds.py.

216 def loadSparse(self, input, interval, offset):
217 """
218 Loads an SDDS file into the SDDS object with sparse data reading.
219
220 Args:
221 input (str): The input SDDS filename to load.
222 interval (int): Interval between pages to read.
223 offset (int): Offset to start reading from.
224
225 Raises:
226 Exception: If unable to read the SDDS data.
227
228 This method reads every `interval` pages from the SDDS file, starting from the page at `offset`.
229 """
230 try:
231 # Open SDDS file
232 if sddsdata.InitializeInput(self.index, input) != 1:
233 time.sleep(1)
234 if sddsdata.InitializeInput(self.index, input) != 1:
235 raise ValueError("Failed to initialize SDDS input.")
236
237 # Get data storage mode (SDDS_ASCII or SDDS_BINARY)
238 self.mode = sddsdata.GetMode(self.index)
239
240 # Get description text and contents
241 self.description = sddsdata.GetDescription(self.index)
242
243 # Get parameter names
244 self.parameterName = sddsdata.GetParameterNames(self.index)
245 numberOfParameters = len(self.parameterName)
246
247 # Get array names
248 self.arrayName = sddsdata.GetArrayNames(self.index)
249 numberOfArrays = len(self.arrayName)
250
251 # Get column names
252 self.columnName = sddsdata.GetColumnNames(self.index)
253 numberOfColumns = len(self.columnName)
254
255 # Get parameter definitions
256 self.parameterDefinition = [sddsdata.GetParameterDefinition(self.index, name) for name in self.parameterName]
257
258 # Get array definitions
259 self.arrayDefinition = [sddsdata.GetArrayDefinition(self.index, name) for name in self.arrayName]
260
261 # Get column definitions
262 self.columnDefinition = [sddsdata.GetColumnDefinition(self.index, name) for name in self.columnName]
263
264 # Initialize parameter, array, and column data
265 self.parameterData = [[] for _ in range(numberOfParameters)]
266 self.arrayData = [[] for _ in range(numberOfArrays)]
267 self.columnData = [[] for _ in range(numberOfColumns)]
268 self.arrayDimensions = [[] for _ in range(numberOfArrays)]
269
270 # Read in SDDS data sparsely
271 page = sddsdata.ReadPageSparse(self.index, interval, offset)
272 if page != 1:
273 raise Exception("Unable to read SDDS data for the first page")
274 while page > 0:
275 for i in range(numberOfParameters):
276 self.parameterData[i].append(sddsdata.GetParameter(self.index, i))
277 for i in range(numberOfArrays):
278 self.arrayData[i].append(sddsdata.GetArray(self.index, i))
279 self.arrayDimensions[i].append(sddsdata.GetArrayDimensions(self.index, i))
280 rows = sddsdata.RowCount(self.index)
281 if rows > 0:
282 for i in range(numberOfColumns):
283 self.columnData[i].append(sddsdata.GetColumn(self.index, i))
284 else:
285 for i in range(numberOfColumns):
286 self.columnData[i].append([])
287 page = sddsdata.ReadPageSparse(self.index, interval, offset)
288
289 # Close SDDS file
290 if sddsdata.Terminate(self.index) != 1:
291 raise ValueError("Failed to terminate SDDS input.")
292
293 except:
294 sddsdata.PrintErrors(self.SDDS_VERBOSE_PrintErrors)
295 raise
296

◆ pageCount()

sdds.SDDS.pageCount ( self)

Retrieves the number or loaded pages.

Returns: int: Number or loaded pages

Definition at line 1281 of file sdds.py.

1281 def pageCount(self):
1282 """
1283 Retrieves the number or loaded pages
1284
1285 Returns:
1286 int: Number or loaded pages
1287 """
1288 return(self.loaded_pages)
1289
1290
1291
1292# Expose constants to the module-level namespace

◆ save()

sdds.SDDS.save ( self,
output )

Saves the SDDS object's data to an SDDS file.

Args: output (str): The output SDDS filename to save the data.

Raises: Exception: If unable to write the SDDS data.

This method writes the data stored in the SDDS object to the specified file, including the parameters, arrays, columns, and their data.

Definition at line 377 of file sdds.py.

377 def save(self, output):
378 """
379 Saves the SDDS object's data to an SDDS file.
380
381 Args:
382 output (str): The output SDDS filename to save the data.
383
384 Raises:
385 Exception: If unable to write the SDDS data.
386
387 This method writes the data stored in the SDDS object to the specified file, including the
388 parameters, arrays, columns, and their data.
389 """
390 try:
391 # Check for invalid SDDS data
392 numberOfParameters = len(self.parameterName)
393 numberOfArrays = len(self.arrayName)
394 numberOfColumns = len(self.columnName)
395 pages = 0
396
397 if numberOfParameters != len(self.parameterData):
398 raise Exception("Unmatched parameterName and parameterData")
399 if numberOfArrays != len(self.arrayData):
400 raise Exception("Unmatched arrayName and arrayData")
401 if numberOfColumns != len(self.columnData):
402 raise Exception("Unmatched columnName and columnData")
403 if numberOfParameters != len(self.parameterDefinition):
404 raise Exception("Unmatched parameterName and parameterDefinition")
405 if numberOfArrays != len(self.arrayDefinition):
406 raise Exception("Unmatched arrayName and arrayDefinition")
407 if numberOfColumns != len(self.columnDefinition):
408 raise Exception("Unmatched columnName and columnDefinition")
409
410 if numberOfParameters > 0:
411 pages = len(self.parameterData[0])
412 elif numberOfColumns > 0:
413 pages = len(self.columnData[0])
414 elif numberOfArrays > 0:
415 pages = len(self.arrayData[0])
416
417 for i in range(numberOfParameters):
418 if pages != len(self.parameterData[i]):
419 raise Exception("Unequal number of pages in parameter data")
420 for i in range(numberOfArrays):
421 if pages != len(self.arrayData[i]):
422 raise Exception("Unequal number of pages in array data")
423 if pages != len(self.arrayDimensions[i]):
424 raise Exception("Unequal number of pages in array dimension data")
425 for i in range(numberOfColumns):
426 if pages != len(self.columnData[i]):
427 raise Exception("Unequal number of pages in column data")
428 for page in range(pages):
429 rows = 0
430 if numberOfColumns > 0:
431 rows = len(self.columnData[0][page])
432 for i in range(numberOfColumns):
433 if rows != len(self.columnData[i][page]):
434 raise Exception("Unequal number of rows in column data")
435
436 # Open SDDS output file
437 if sddsdata.InitializeOutput(self.index, self.mode, 1, self.description[0], self.description[1], output) != 1:
438 raise ValueError("Failed to initialize SDDS output.")
439
440 # Define parameters, arrays, and columns
441 for i in range(numberOfParameters):
442 if sddsdata.DefineParameter(
443 self.index,
444 self.parameterName[i],
445 self.parameterDefinition[i][0],
446 self.parameterDefinition[i][1],
447 self.parameterDefinition[i][2],
448 self.parameterDefinition[i][3],
449 self.parameterDefinition[i][4],
450 self.parameterDefinition[i][5],
451 ) == -1:
452 raise ValueError("Failed to define parameter.")
453
454 for i in range(numberOfArrays):
455 if sddsdata.DefineArray(
456 self.index,
457 self.arrayName[i],
458 self.arrayDefinition[i][0],
459 self.arrayDefinition[i][1],
460 self.arrayDefinition[i][2],
461 self.arrayDefinition[i][3],
462 self.arrayDefinition[i][4],
463 self.arrayDefinition[i][5],
464 self.arrayDefinition[i][6],
465 self.arrayDefinition[i][7],
466 ) == -1:
467 raise ValueError("Failed to define array.")
468
469 for i in range(numberOfColumns):
470 if sddsdata.DefineColumn(
471 self.index,
472 self.columnName[i],
473 self.columnDefinition[i][0],
474 self.columnDefinition[i][1],
475 self.columnDefinition[i][2],
476 self.columnDefinition[i][3],
477 self.columnDefinition[i][4],
478 self.columnDefinition[i][5],
479 ) == -1:
480 raise ValueError("Failed to define column.")
481
482 # Write SDDS header
483 if sddsdata.WriteLayout(self.index) != 1:
484 raise ValueError("Failed to write SDDS layout.")
485
486 # Write SDDS data
487 for page in range(pages):
488 rows = 0
489 if numberOfColumns > 0:
490 rows = len(self.columnData[0][page])
491 if sddsdata.StartPage(self.index, rows) != 1:
492 raise ValueError("Failed to start SDDS page.")
493 for i in range(numberOfParameters):
494 if sddsdata.SetParameter(self.index, i, self.parameterData[i][page]) != 1:
495 raise ValueError("Failed to set parameter value.")
496 for i in range(numberOfArrays):
497 if sddsdata.SetArray(
498 self.index, i, self.arrayData[i][page], self.arrayDimensions[i][page]
499 ) != 1:
500 raise ValueError("Failed to set array value.")
501 for i in range(numberOfColumns):
502 if sddsdata.SetColumn(self.index, i, self.columnData[i][page]) != 1:
503 raise ValueError("Failed to set column value.")
504 if sddsdata.WritePage(self.index) != 1:
505 raise ValueError("Failed to write SDDS page.")
506
507 # Close SDDS output file
508 if sddsdata.Terminate(self.index) != 1:
509 raise ValueError("Failed to terminate SDDS output.")
510 except:
511 sddsdata.PrintErrors(self.SDDS_VERBOSE_PrintErrors)
512 raise
513

◆ setArrayValueList()

sdds.SDDS.setArrayValueList ( self,
name,
valueList,
dimensionList,
page = 1 )

Sets a single array value and dimension at a specific page.

Args: name (str): Array name. valueList (list): Array values. dimensionList (list): Array dimensions. page (int, optional): Page number (1-based index, defaults to 1).

Raises: Exception: If the array name or page is invalid.

This method sets the array values and dimensions at the specified page.

Definition at line 862 of file sdds.py.

862 def setArrayValueList(self, name, valueList, dimensionList, page=1):
863 """
864 Sets a single array value and dimension at a specific page.
865
866 Args:
867 name (str): Array name.
868 valueList (list): Array values.
869 dimensionList (list): Array dimensions.
870 page (int, optional): Page number (1-based index, defaults to 1).
871
872 Raises:
873 Exception: If the array name or page is invalid.
874
875 This method sets the array values and dimensions at the specified page.
876 """
877 page = page - 1
878 numberOfArrays = len(self.arrayName)
879 if name in self.arrayName:
880 i = self.arrayName.index(name)
881 if len(self.arrayData[i]) == page:
882 self.arrayData[i][page:] = [valueList]
883 self.arrayDimensions[i][page:] = [dimensionList]
884 elif len(self.arrayData[i]) < page or page < 0:
885 msg = "Invalid page " + str(page + 1)
886 raise Exception(msg)
887 else:
888 self.arrayData[i][page] = valueList
889 self.arrayDimensions[i][page] = dimensionList
890 else:
891 msg = "Invalid array name " + name
892 raise Exception(msg)
893

◆ setArrayValueLists()

sdds.SDDS.setArrayValueLists ( self,
name,
valueList,
dimensionList )

Sets the nested list of array values and dimensions for a single array.

This can be used to set values for multiple pages at once.

Args: name (str): Array name. valueList (list): Nested list of array values. dimensionList (list): Nested list of array dimensions.

Raises: Exception: If the array name is invalid.

This method assigns values and dimensions to an array across pages.

Definition at line 799 of file sdds.py.

799 def setArrayValueLists(self, name, valueList, dimensionList):
800 """
801 Sets the nested list of array values and dimensions for a single array. This can be used to set values for multiple pages at once.
802
803 Args:
804 name (str): Array name.
805 valueList (list): Nested list of array values.
806 dimensionList (list): Nested list of array dimensions.
807
808 Raises:
809 Exception: If the array name is invalid.
810
811 This method assigns values and dimensions to an array across pages.
812 """
813 numberOfArrays = len(self.arrayName)
814 if name in self.arrayName:
815 i = self.arrayName.index(name)
816 self.arrayDimensions[i] = dimensionList
817 self.arrayData[i] = valueList
818 else:
819 msg = "Invalid array name " + name
820 raise Exception(msg)
821

◆ setColumnValue()

sdds.SDDS.setColumnValue ( self,
name,
value,
page = 1,
row = 1 )

Sets a single column value at a specific page and row.

Args: name (str): Column name. value: Column value. page (int, optional): Page number (1-based index, defaults to 1). row (int, optional): Row number (1-based index, defaults to 1).

Raises: Exception: If the column name, page, or row is invalid.

This method sets the column value at the specified page and row.

Definition at line 1049 of file sdds.py.

1049 def setColumnValue(self, name, value, page=1, row=1):
1050 """
1051 Sets a single column value at a specific page and row.
1052
1053 Args:
1054 name (str): Column name.
1055 value: Column value.
1056 page (int, optional): Page number (1-based index, defaults to 1).
1057 row (int, optional): Row number (1-based index, defaults to 1).
1058
1059 Raises:
1060 Exception: If the column name, page, or row is invalid.
1061
1062 This method sets the column value at the specified page and row.
1063 """
1064 page = page - 1
1065 row = row - 1
1066 numberOfColumns = len(self.columnName)
1067 if name in self.columnName:
1068 i = self.columnName.index(name)
1069 if len(self.columnData[i]) == page:
1070 if row == 0:
1071 self.columnData[i][page:] = [[value]]
1072 else:
1073 msg = "Invalid row " + str(row + 1)
1074 raise Exception(msg)
1075 elif len(self.columnData[i]) < page or page < 0:
1076 msg = "Invalid page " + str(page + 1)
1077 raise Exception(msg)
1078 else:
1079 if len(self.columnData[i][page]) == row:
1080 self.columnData[i][page][row:] = [value]
1081 elif len(self.columnData[i][page]) < row or row < 0:
1082 msg = "Invalid row " + str(row + 1)
1083 raise Exception(msg)
1084 else:
1085 self.columnData[i][page][row] = value
1086 else:
1087 msg = "Invalid column name " + name
1088 raise Exception(msg)
1089

◆ setColumnValueList()

sdds.SDDS.setColumnValueList ( self,
name,
valueList,
page = 1 )

Sets a single column value list at a specific page.

Args: name (str): Column name. valueList (list): Column values. page (int, optional): Page number (1-based index, defaults to 1).

Raises: Exception: If the column name or page is invalid.

This method sets the column values at the specified page.

Definition at line 992 of file sdds.py.

992 def setColumnValueList(self, name, valueList, page=1):
993 """
994 Sets a single column value list at a specific page.
995
996 Args:
997 name (str): Column name.
998 valueList (list): Column values.
999 page (int, optional): Page number (1-based index, defaults to 1).
1000
1001 Raises:
1002 Exception: If the column name or page is invalid.
1003
1004 This method sets the column values at the specified page.
1005 """
1006 page = page - 1
1007 if name in self.columnName:
1008 i = self.columnName.index(name)
1009 if len(self.columnData[i]) == page:
1010 self.columnData[i][page:] = [valueList]
1011 elif len(self.columnData[i]) < page or page < 0:
1012 msg = "Invalid page " + str(page + 1)
1013 raise Exception(msg)
1014 else:
1015 self.columnData[i][page] = valueList
1016 else:
1017 msg = "Invalid column name " + name
1018 raise Exception(msg)
1019

◆ setColumnValueLists()

sdds.SDDS.setColumnValueLists ( self,
name,
valueList )

Sets the nested list of column values for a single column.

This can be used to set values for multiple pages at once.

Args: name (str): Column name. valueList (list): Nested list of column values.

Raises: Exception: If the column name is invalid.

This method assigns a list of values to a column across pages.

Definition at line 952 of file sdds.py.

952 def setColumnValueLists(self, name, valueList):
953 """
954 Sets the nested list of column values for a single column. This can be used to set values for multiple pages at once.
955
956 Args:
957 name (str): Column name.
958 valueList (list): Nested list of column values.
959
960 Raises:
961 Exception: If the column name is invalid.
962
963 This method assigns a list of values to a column across pages.
964 """
965 numberOfColumns = len(self.columnName)
966 if name in self.columnName:
967 self.columnData[self.columnName.index(name)] = valueList
968 else:
969 msg = "Invalid column name " + name
970 raise Exception(msg)
971

◆ setDescription()

sdds.SDDS.setDescription ( self,
text,
contents )

Sets the description for the SDDS object.

Args: text (str): Description text. contents (str): Description contents.

Definition at line 514 of file sdds.py.

514 def setDescription(self, text, contents):
515 """
516 Sets the description for the SDDS object.
517
518 Args:
519 text (str): Description text.
520 contents (str): Description contents.
521 """
522 self.description = [text, contents]
523

◆ setParameterValue()

sdds.SDDS.setParameterValue ( self,
name,
value,
page = 1 )

Sets a single parameter value at a specific page.

Args: name (str): Parameter name. value: Parameter value. page (int, optional): Page number (1-based index, defaults to 1).

Raises: Exception: If the parameter name or page is invalid.

This method sets the parameter value at the specified page.

Definition at line 741 of file sdds.py.

741 def setParameterValue(self, name, value, page=1):
742 """
743 Sets a single parameter value at a specific page.
744
745 Args:
746 name (str): Parameter name.
747 value: Parameter value.
748 page (int, optional): Page number (1-based index, defaults to 1).
749
750 Raises:
751 Exception: If the parameter name or page is invalid.
752
753 This method sets the parameter value at the specified page.
754 """
755 page = page - 1
756 numberOfParameters = len(self.parameterName)
757 if name in self.parameterName:
758 i = self.parameterName.index(name)
759 if len(self.parameterData[i]) == page:
760 self.parameterData[i][page:] = [value]
761 elif len(self.parameterData[i]) < page or page < 0:
762 msg = "Invalid page " + str(page + 1)
763 raise Exception(msg)
764 else:
765 self.parameterData[i][page] = value
766 else:
767 msg = "Invalid parameter name " + name
768 raise Exception(msg)
769

◆ setParameterValueList()

sdds.SDDS.setParameterValueList ( self,
name,
valueList )

Sets the list of parameter values for a parameter.

This can be used to set values for multiple pages at once.

Args: name (str): Parameter name. valueList (list): List of values for the parameter.

Raises: Exception: If the parameter name is invalid.

This method assigns a list of values to a parameter across pages.

Definition at line 700 of file sdds.py.

700 def setParameterValueList(self, name, valueList):
701 """
702 Sets the list of parameter values for a parameter. This can be used to set values for multiple pages at once.
703
704 Args:
705 name (str): Parameter name.
706 valueList (list): List of values for the parameter.
707
708 Raises:
709 Exception: If the parameter name is invalid.
710
711 This method assigns a list of values to a parameter across pages.
712 """
713 numberOfParameters = len(self.parameterName)
714 if name in self.parameterName:
715 self.parameterData[self.parameterName.index(name)] = valueList
716 else:
717 msg = "Invalid parameter name " + name
718 raise Exception(msg)
719

Member Data Documentation

◆ _max_index

int sdds.SDDS._max_index = 1000
staticprotected

Definition at line 83 of file sdds.py.

◆ _used_indices

sdds.SDDS._used_indices = set()
staticprotected

Definition at line 82 of file sdds.py.

◆ arrayData

list sdds.SDDS.arrayData = []

Definition at line 123 of file sdds.py.

◆ arrayDefinition

list sdds.SDDS.arrayDefinition = []

Definition at line 119 of file sdds.py.

◆ arrayDimensions

list sdds.SDDS.arrayDimensions = []

Definition at line 120 of file sdds.py.

◆ arrayName [1/2]

str sdds.SDDS.arrayName = []

Definition at line 116 of file sdds.py.

◆ arrayName [2/2]

str sdds.SDDS.arrayName = "Invalid array name " + name

Definition at line 836 of file sdds.py.

◆ columnData

list sdds.SDDS.columnData = []

Definition at line 124 of file sdds.py.

◆ columnDefinition

list sdds.SDDS.columnDefinition = []

Definition at line 121 of file sdds.py.

◆ columnName [1/2]

str sdds.SDDS.columnName = []

Definition at line 117 of file sdds.py.

◆ columnName [2/2]

str sdds.SDDS.columnName = "Invalid column name " + name

Definition at line 986 of file sdds.py.

◆ description

list sdds.SDDS.description = ["", ""]

Definition at line 114 of file sdds.py.

◆ index

sdds.SDDS.index = i

Definition at line 100 of file sdds.py.

◆ loaded_pages

sdds.SDDS.loaded_pages = 0

Definition at line 126 of file sdds.py.

◆ mode

sdds.SDDS.mode = self.SDDS_ASCII

Definition at line 125 of file sdds.py.

◆ parameterData

list sdds.SDDS.parameterData = []

Definition at line 122 of file sdds.py.

◆ parameterDefinition

list sdds.SDDS.parameterDefinition = []

Definition at line 118 of file sdds.py.

◆ parameterName [1/2]

str sdds.SDDS.parameterName = []

Definition at line 115 of file sdds.py.

◆ parameterName [2/2]

str sdds.SDDS.parameterName = "Invalid parameter name " + name

Definition at line 735 of file sdds.py.

◆ SDDS_ASCII

int sdds.SDDS.SDDS_ASCII = 2
static

Definition at line 79 of file sdds.py.

◆ SDDS_BINARY

int sdds.SDDS.SDDS_BINARY = 1
static

Definition at line 78 of file sdds.py.

◆ SDDS_CHARACTER

int sdds.SDDS.SDDS_CHARACTER = 11
static

Definition at line 74 of file sdds.py.

◆ SDDS_CHECK_NONEXISTENT

int sdds.SDDS.SDDS_CHECK_NONEXISTENT = 1
static

Definition at line 51 of file sdds.py.

◆ SDDS_CHECK_OKAY

int sdds.SDDS.SDDS_CHECK_OKAY = 0
static

Definition at line 50 of file sdds.py.

◆ SDDS_CHECK_WRONGTYPE

int sdds.SDDS.SDDS_CHECK_WRONGTYPE = 2
static

Definition at line 52 of file sdds.py.

◆ SDDS_CHECK_WRONGUNITS

int sdds.SDDS.SDDS_CHECK_WRONGUNITS = 3
static

Definition at line 53 of file sdds.py.

◆ SDDS_DOUBLE

int sdds.SDDS.SDDS_DOUBLE = 2
static

Definition at line 57 of file sdds.py.

◆ SDDS_EXIT_PrintErrors

int sdds.SDDS.SDDS_EXIT_PrintErrors = 2
static

Definition at line 47 of file sdds.py.

◆ SDDS_FLOAT

int sdds.SDDS.SDDS_FLOAT = 3
static

Definition at line 59 of file sdds.py.

◆ SDDS_FLUSH_TABLE

int sdds.SDDS.SDDS_FLUSH_TABLE = 1
static

Definition at line 80 of file sdds.py.

◆ SDDS_INT16

int sdds.SDDS.SDDS_INT16 = 8
static

Definition at line 70 of file sdds.py.

◆ SDDS_INT32

int sdds.SDDS.SDDS_INT32 = 6
static

Definition at line 66 of file sdds.py.

◆ SDDS_INT64

int sdds.SDDS.SDDS_INT64 = 4
static

Definition at line 62 of file sdds.py.

◆ SDDS_LONG

int sdds.SDDS.SDDS_LONG = 6
static

Definition at line 65 of file sdds.py.

◆ SDDS_LONG64

int sdds.SDDS.SDDS_LONG64 = 4
static

Definition at line 61 of file sdds.py.

◆ SDDS_LONGDOUBLE

int sdds.SDDS.SDDS_LONGDOUBLE = 1
static

Definition at line 56 of file sdds.py.

◆ SDDS_NUM_TYPES

int sdds.SDDS.SDDS_NUM_TYPES = 11
static

Definition at line 75 of file sdds.py.

◆ SDDS_REAL32

int sdds.SDDS.SDDS_REAL32 = 3
static

Definition at line 60 of file sdds.py.

◆ SDDS_REAL64

int sdds.SDDS.SDDS_REAL64 = 2
static

Definition at line 58 of file sdds.py.

◆ SDDS_SHORT

int sdds.SDDS.SDDS_SHORT = 8
static

Definition at line 69 of file sdds.py.

◆ SDDS_STRING

int sdds.SDDS.SDDS_STRING = 10
static

Definition at line 73 of file sdds.py.

◆ SDDS_UINT16

int sdds.SDDS.SDDS_UINT16 = 9
static

Definition at line 72 of file sdds.py.

◆ SDDS_UINT32

int sdds.SDDS.SDDS_UINT32 = 7
static

Definition at line 68 of file sdds.py.

◆ SDDS_UINT64

int sdds.SDDS.SDDS_UINT64 = 5
static

Definition at line 64 of file sdds.py.

◆ SDDS_ULONG

int sdds.SDDS.SDDS_ULONG = 7
static

Definition at line 67 of file sdds.py.

◆ SDDS_ULONG64

int sdds.SDDS.SDDS_ULONG64 = 5
static

Definition at line 63 of file sdds.py.

◆ SDDS_USHORT

int sdds.SDDS.SDDS_USHORT = 9
static

Definition at line 71 of file sdds.py.

◆ SDDS_VERBOSE_PrintErrors

sdds.SDDS.SDDS_VERBOSE_PrintErrors = 1
static

Definition at line 46 of file sdds.py.


The documentation for this class was generated from the following file: