# Data Structrue of COSMOSS
Here I document the data structure within COSMOSS. Before getting into the map, I want to explain the box diagram (Class diagram) used to depict the data structure map.
<!--  -->
```mermaid
classDiagram
class Example_Class{
Property A
Property B
Property C
Property ...
ChildA()
ChildB()
ChildC()
Child...()
}
```
For example, the above "Example_Class" is defined with certain properties listed in the middle box. The children indicated in the bottom box inherent the same properties of such class. A specific example in COSMOSS is the "Data_2DIR" and "Data_2DSFG":
<!--  -->
```mermaid
classDiagram
class Data_2D{
SpectraGrid
Response
CVL
SpecType
Data_2DIR()
Data_2DSFG()
}
```
Since both of them share the same properties, (i.e. SpectraGrid, Response, CVL, and SpecType) They can be defined using the "Data_2D" class.
A property within a class can also be a class. In this case, the sub-class will be further defined in another box that connected by an arrow.
## The map of data structure in COSMOSS
**version 2.3.0**
<!--  -->
```mermaid
classDiagram
Data_COSMOSS <|-- Data_Models
Data_COSMOSS <|-- Data_2D
Data_COSMOSS <|-- Data_1D
Data_Models <|-- Structure
Data_2D <|-- FeynmanPath
Data_2D <|-- Response
Data_2D <|-- CVL
Data_1D <|-- H
Response <|-- H
Response <|-- FeynmanPath
Data_1D <|-- TransitionMoment
Response <|-- TransitionMoment
class Data_COSMOSS{
Structure
Data_FTIR
Data_SFG
Data_2DIR
Data_2DSFG
hCOSMOSS
hModel
}
class Data_Models{
Parent
Structure
CombOrder
GUI_Inputs
app
Data_TCO()
Data_PDB_AmideI()
Data_2DGrid()
Data_BSheet()
Data_Comb2()
}
class Structure{
+XYZ
+AtomName
+LocCenter
+LocMu
+LocAlpha
+GUI_Inputs
+hPlotFunc
+FilesName
+Children
+Extra
+LocFreq
+LocAnharm
+Beta
#Nmodes
#NAtoms
#NStucture
#LocAlphaM
#CoM
#OneExH
#TwoExH
-Scaled_LocMu
-Scaled_LocAlpha
}
class Data_1D{
FilesName
SpecType
Response1D
freq_OneD
Mu
H
Res_Int
Alpha
MolFrame
R_Avg
LabFrame
Jones
JLabFrame
E
EJLabFrame
Data_FTIR()
Data_SFG()
}
class Data_2D{
SpectraGrid
Response
CVL
SpecType
Data_2DIR()
Data_2DSFG()
}
class FeynmanPath{
R1
R2
R3
NR1
NR2
NR3
SpectraGrid()
IntGrid()
Beta()
}
class Response{
H
Mu
Alpha
PCutOff
EJLR
SpecType
Gamma
IntGrid
SparseMax
}
class CVL{
R
NR
sum
R_No_Conv
NR_No_Conv
sum_No_Conv
selected
selected_No_Conv
Lineshape
FreqRange
FilesName
}
class H{
Sort_Ex_F1
Sort_Ex_V1
Sort_Ex_F2
Sort_Ex_V2
TEDIndexBegin
TEDIndexEnd
}
class TransitionMoment{
M_Lo_01
M_Ex_01
M_Lo_12
M_Ex_12
M_Ex_01_N
M_Ex_12_N
M_Ex_01_D
M_Ex_01_V
M_Ex_12_D
M_Ex_12_V
Mu()
Alpha()
}
```
### Detail explanation of each class and their properties can be found here:
- [StructureData Class](/_pCi32hpSFm-r1Or4bxVnA)
- Others class explanation will coming up soon...
## Todos:
- Organize Data_1D class
- Add method to FeynmanPath class to select 'Rephasing', 'non-Rephasing', and 'All path'
- Write details about each class
- Turn them in to real class
###### tags: `COSMOSS` `code`