https://github.com/ma-laforge/mddatasets.jl
Multi-Dimensional Datasets for Parametric Analysis
https://github.com/ma-laforge/mddatasets.jl
circuits continuous-time-math cross-function delay-measurement fall-time frequency-measurment multidimensional-data multidimensional-sweeps parametric-analysis process-voltage-temperature pvt-sweeps rise-time y-vs-x
Last synced: 3 months ago
JSON representation
Multi-Dimensional Datasets for Parametric Analysis
- Host: GitHub
- URL: https://github.com/ma-laforge/mddatasets.jl
- Owner: ma-laforge
- License: mit
- Created: 2015-10-19T20:26:11.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2021-03-04T04:02:09.000Z (over 4 years ago)
- Last Synced: 2025-02-21T04:04:08.828Z (4 months ago)
- Topics: circuits, continuous-time-math, cross-function, delay-measurement, fall-time, frequency-measurment, multidimensional-data, multidimensional-sweeps, parametric-analysis, process-voltage-temperature, pvt-sweeps, rise-time, y-vs-x
- Language: Julia
- Homepage:
- Size: 147 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[MDDatasetsJL]:
[CMDimDataJL]:
[CMDimCircuitsJL]:
[CMDimData_sample]:
[CMDimCircuits_sample]:# MDDatasets.jl: Multi-Dimensional Datasets for Parametric Analysis +Continuous f(x)
[](https://github.com/ma-laforge/MDDatasets.jl/actions?query=workflow%3ACI)## :warning: Base library
`MDDatasets.jl` is a base library to make parametric analysis simple by broadcasting over its multi-dimensional data structures. For a more useful analysis solution, it is highly recommended to install one of the following "suites":
- [CMDimData.jl][CMDimDataJL]: Facilitates parametric analysis with continous f(x) interpolation & multi-dimensional plots. Built using [MDDatasets.jl][MDDatasetsJL] module.
- [CMDimCircuits.jl][CMDimCircuitsJL]: Extends [CMDimData.jl][CMDimDataJL] with circuit-specific functionnality (ex: signal processing, network analysis, ...).## Table of contents
1. [Description](#Description)
1. [Features/Highlights](#Highlights)
1. [Sample usage](#SampleUsage)
1. [demo1](doc/demo1.md)
1. [Core architecture](doc/architecture.md)
1. [Principal types](doc/architecture.md#PrincipalTypes)
1. [Object construction](doc/architecture.md#Constructors)
1. [Functions of 1 argument (`DataF1`) & interpolation](doc/architecture.md#F1Arg)
1. [Multi-dimensional datasets (`DataRS`) & broadcasting](doc/architecture.md#MDDatasets)
1. [Supported functions](doc/architecture.md#SupportedFunctions)
## Description
The `MDDatasets.jl` package provides tools to simplify manipulation of multi-dimensional datasets, and represent `{x,y}` vectors as a continuous function of 1 argument: `y=f(x)`.|
|
| :---: |
### Features/Highlights
- ***Single variable for (x,y) values:*** Stores both `(x,y)` values representing `y=f(x)` in a single, coherent structure. This signficantly improves the simplicity & readability of your calculations.
- ***Automatic Interpolation:*** Calculations will automatically be interpolated over `x` as if `y=f(x)` data represented a ***continuous*** function of x.
- ***Automatic Broadcasting:*** Operations on multi-dimensional datasets will automatically be broadcasted (vectorized) over all subsets. This significantly improves the readability of programs.
## Sample usage
Examples of how to use `MDDatasets` are provided in the [sample/](sample) subdirectory.Hilights:
- [demo1](doc/demo1.md)Other examples of its capabilities can be found under the [test directory](test/).
More advanced usage examples can be found in the sample directories of [`CMDimData.jl`][CMDimData_sample] and [`CMDimCircuits.jl`][CMDimCircuits_sample] modules.
## Usage: Constructing a recursive-sweep datasetAssuming input data can be generated using the following:
```julia
t = DataF1((0:.01:10)*1e-9) #Time vector stored as a function of 1 argument#NOTE: get_ydata returns type "DataF1" (stores data as a function of 1 argument):
get_ydata(t::DataF1, tbit, vdd, trise) = sin(2pi*t/tbit)*(trise/tbit)+vdd
```One can create a relatively complex Recursive-Sweep (DataRS) dataset using the following pattern:
```julia
datars = fill(DataRS, PSweep("tbit", [1, 3, 9] * 1e-9)) do tbit
fill(DataRS, PSweep("VDD", 0.9 * [0.9, 1, 1.1])) do vdd#Inner-most sweep: need to specify element type (DataF1):
#(Other (scalar) element types: DataInt/DataFloat/DataComplex)
fill(DataRS{DataF1}, PSweep("trise", [0.1, 0.15, 0.2] * tbit)) do trise
return get_ydata(t, tbit, vdd, trise)
end
end
end
```### [TODO](TODO.md)
1. Support for broadcasting functions over `DataHR` & `DataRS` types is fairly extensive.
- Nonetheless, the system is incomplete/imperfect, and unexpected failures will occur.### Compatibility
Extensive compatibility testing of `MDDatasets.jl` has not been performed. The module has been tested using the following environment(s):
- Windows 10 / Linux / Julia-1.5.3
## Disclaimer
The `MDDatasets.jl` module is not yet mature. Expect significant changes.