Code Class Diagrams

Inheritance Diagrams

Basic Classes

The following scheme shows the class inheritance diagram of the most imporatant classes in RepTate. Most of them are children of the CmdBase class. In the diagram:

  • Empty ellipses represent core classes. Their source code can be found in the core folder and are they provide the basic functionality.

  • Grey filled rounded boxes represent the RepTate central GUI classes. Each GUI class is derived from a PyQt object (either QWidget or QMainWindow).

  • Green filled boxes represent PySide6 classes. Many PySide6 classes are used within the RepTate code. In the diagram, only two of the most important are shown.

  • Green arrows represent inheritance. The arrow goes from the parent class to the child class.

  • Red arrows represent composition. The arrow goes from the container class to the contained class.

digraph foo { "QApplicationWindow" [href="../developers/CodeCoreGUI.html#qapplicationwindow", target="_top", shape="box", style="rounded,filled"] "QApplicationManager" [href="../developers/CodeCoreGUI.html#qapplicationmanager", target="_top", shape="box", style="rounded,filled"] "QDataSet" [href="../developers/CodeCoreGUI.html#qdataset", target="_top", shape="box", style="rounded,filled"] "QTheory" [href="../developers/CodeCoreGUI.html#qtheory", target="_top", shape="box", style="rounded,filled"] "QTool" [href="../developers/CodeCoreGUI.html#qtool", target="_top", shape="box", style="rounded,filled"] "QWidget" [shape=box,fillcolor=palegreen,href="https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QWidget.html", target="_top", style="filled"] "QMainWindow" [shape=box,fillcolor=palegreen,href="https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QMainWindow.html", target="_top", style="filled"] "QWidget" -> "QApplicationWindow" [color=green]; "QWidget" -> "QDataSet" [color=green]; "QWidget" -> "QTheory" [color=green]; "QWidget" -> "QTool" [color=green]; "QMainWindow" -> "QApplicationManager" [color=green]; "QApplicationManager" -> "QApplicationWindow" [color=red]; "QApplicationWindow" -> "QDataSet" [color=red]; "QApplicationWindow" -> "QTool" [color=red]; "QDataSet" -> "QTheory" [color=red]; "View" [href="../developers/CodeCoreCL.html#view", target="_top"] "FileType" [href="../developers/CodeCoreCL.html#filetype", target="_top"] "QApplicationWindow" -> "View" [color=red]; "QApplicationWindow" -> "FileType" [color=red]; "File" [href="../developers/CodeCoreCL.html#file", target="_top"] "QDataSet" -> "File" [color=red]; "DataTable" [href="../developers/CodeCoreCL.html#datatable", target="_top"] "File" -> "DataTable" [color=red]; "Parameter" [href="../developers/CodeCoreCL.html#parameter", target="_top"] "QTheory" -> "Parameter" [color=red]; "QTool" -> "Parameter" [color=red]; "QTheory" -> "DataTable" [color=red]; }

Container Diagrams

The structure RepTate, which can be clearly seen when running a session, is also reflected in the code. Essentially:

  • A RepTate session may contain one or more open applications of the same or different type (i.e. LVE, NLVE, LAOS, etc).

  • Each application can have one or more open datasets (i.e. Set1, Set2, etc). Datasets are intended to group experimental data that are related in some way. For example:

    • SAOS measurements of samples of the same material, measured at same temperature, but having different molecular weight.

    • Start-up of shear flow measurements of samples of the same material and same molecular weight, measured at the same temperature, but with different shear rates.

  • Each Dataset may contain one or several Data files, which are typically loaded from disk.

  • Inside each dataset, there may be one or more open theories of the same or different kind (i.e. Maxwell, Rouse, etc). Each theory is only applied to the files in the same Dataset that contains the theory.

  • Finally, each Application may have open tools of the same or different type (i.e. Find Peaks, Materials Database, etc). The tools are applied to all the files in all the Datasets contained in the same Application as the Tool.

The following diagram shows a typical example of use of RepTate, representing the above structure in a schematic way. In the diagram:

  • The green box represents a RepTate session.

  • In the session, there are three open applications (TTS1, LVE2 and NLVE3), represented by red rounded boxes.

  • Each application contains one or more datasets, represented by yellow folders. Some applications also have a tool, represented by a cyan arrow.

  • Each dataset contains data files, represented in grey. In addition, some datasets have opened one or more theories, which are shown as purple boxes.

digraph foo { rankdir=LR "RepTate" [shape="box",style="filled",fillcolor=mediumseagreen] "TTS1" [shape="box",style="rounded,filled",fillcolor=indianred1] "LVE2" [shape="box",style="rounded,filled",fillcolor=indianred1] "NLVE3" [shape="box",style="rounded,filled",fillcolor=indianred1] "Set1" [shape="folder",style="filled",fillcolor=khaki] "Set2" [shape="folder",style="filled",fillcolor=khaki] "Set3" [shape="folder",style="filled",fillcolor=khaki] "Set4" [shape="folder",style="filled",fillcolor=khaki] "WLF Shift" [shape="signature",style="filled",fillcolor=magenta1] "Maxwell Modes" [shape="signature",style="filled",fillcolor=magenta1] "Likhtman-McLeish" [shape="signature",style="filled",fillcolor=magenta1] "PI88K 25C.osc" [shape="note",style="filled"] "PI88K 10C.osc" [shape="note",style="filled"] "PI94_T25.tts" [shape="note",style="filled"] "PI225_T25.tts" [shape="note",style="filled"] "dow150.shear" [shape="note",style="filled"] "dow170.shear" [shape="note",style="filled"] "hdpe320.shear" [shape="note",style="filled"] "hdpe270.shear" [shape="note",style="filled"] "Materials Database" [shape="cds",style="filled", fillcolor=cyan] "Find Peaks" [shape="cds",style="filled", fillcolor=cyan] "RepTate" -> "TTS1"; "RepTate" -> "LVE2"; "RepTate" -> "NLVE3"; "TTS1" -> "Set1"; "Set1" -> "PI88K 25C.osc"; "Set1" -> "PI88K 10C.osc"; "Set1" -> "WLF Shift"; "LVE2" -> "Set2"; "Set2" -> "PI94_T25.tts"; "Set2" -> "PI225_T25.tts"; "Set2" -> "Maxwell Modes"; "Set2" -> "Likhtman-McLeish"; "LVE2" -> "Materials Database"; "NLVE3" -> "Set3"; "Set3" -> "dow150.shear"; "Set3" -> "dow170.shear"; "NLVE3" -> "Set4"; "Set4" -> "hdpe320.shear"; "Set4" -> "hdpe270.shear"; "NLVE3" -> "Find Peaks" }