generated from EPC-MSU/python-package-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
67 additions
and
66 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
# 3. Создание датасета | ||
|
||
### 3.1 Intro | ||
|
||
Датасет представляет собой набор файлов организованный следующим образом: | ||
|
||
* `dataset` - базовая папка (уже существует в проекте) | ||
* `measurement_variant_1` - Вариант настройки измерителя (определённая частота, напряжение и т.д.) | ||
* `X` - папка относящаяся к конкретному классу (Описание классов в пункте 2) | ||
* `N.cir` - файл схемы с определенными параметрами | ||
* `N.png` - ВАХ схемы, с указанием параметров измерения и класса схемы | ||
* `N.uzf` - EPCore формат хранящий настройки измерения и кривую ВАХ | ||
* `N2.cir` - другие параметры элементов в схеме того же класса с теми же настройками измерителя | ||
|
||
|
||
### 3.2 Создание датасета | ||
|
||
* Активировать виртуальное окружение (с установленными `requirements.dev`) | ||
* Из корня проекта в консоли запустить модуль: | ||
|
||
```commandline | ||
python -m generate_dataset --image | ||
``` | ||
|
||
* При отсутствии флага --image изображения ВАХ генерироваться не будут | ||
|
||
### 3.3 Настройки генерации | ||
|
||
Удалите прошлый датасет руками, если он вам не понравился. | ||
|
||
Чтобы настроить параметры генерации и сгенерировать снова существует два файла: | ||
|
||
* `measurement_settings.json` - Варианты настроек измерителя, для которых нужно сгенерировать датасет. (**In development**: пока что не все настройки как-то влияют на генерацию, нужно доделать) | ||
* `parameters_variations.json` - Описание перебора параметров компонентов | ||
* Пример: для резистора R существует один параметр измеряемый в cir_unit, который нужно перебрать в экспоненциальном интервале от 1 до 100000000 создав 10 точек. | ||
* Пример2: для диода D существует 4 параметра (всего их больше), которые следует перебрать, и все они вручную заданные константы. Из-за особенностей многопараметрических элементов, диод записан несколько иначе, чем резистор. В диоде `cir_unit=null`, но есть не нулевой `cir_key`. Если требуется добавить в этот файл новый элемент у которого требуется изменять параметры, то смотрите в `.cir`-файл, если у элемента есть собственная DMOD (DeviceModel) `cir_key` - это параметры этой DeviceModel. | ||
|
||
### 3.4 Как генерируется датасет | ||
|
||
Берутся все классы схем и все настройки измерений. | ||
|
||
Для каждого класса `ParametersChanger` определяет какие элементы существуют в этой схеме и в каких интервалах их нужно перебрать. Генерируются все возможные комбинации параметров элементов (например если два резистора по 10 точек, то это 100 сочетаний) и записываются в `changer.circuits` | ||
|
||
После чего с помощью `changer.dump_circuits_on_disk()` все комбинации параметров сохраняются на диск в виде новых `.cir`-файлов в папку датасета. | ||
|
||
Далее `SimulatorIVC` генерирует для конкретной схемы с определенными параметрами и настройками вольт-амперную характеристику. (Схема circuit берётся из оперативки: `changer.circuits`) | ||
|
||
ВАХ записывается на диск методом `simulator.save_ivc(...)` в формате `uzf` (зипованный json) | ||
|
||
Если выставлен флаг `--image`, то так же сохраняется ВАХ в формате png | ||
|
||
Алгоритм переходит к следующему классу. | ||
|
||
Когда все классы готовы, алгоритм переходит к следующим настройкам измерения. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,20 @@ | ||
import logging | ||
import argparse | ||
|
||
from generate_dataset.validate_circuit_classes import validate_circuit_classes | ||
from generate_dataset.dataset_generator import generate_dataset | ||
|
||
logging.basicConfig(format="%(asctime)s %(message)s", datefmt="[%Y-%m-%d %H:%M:%S]", level=logging.INFO) | ||
|
||
if __name__ == "__main__": | ||
parser = argparse.ArgumentParser(description="Generate dataset from `circuit classes` to `dataset` folder") | ||
parser = argparse.ArgumentParser(description="Generate dataset from `circuit_classes` to `dataset` folder") | ||
parser.add_argument('-i', "--image", action="store_true", help="Add IVC-png-image to each dataset file") | ||
args = parser.parse_args() | ||
|
||
validate_circuit_classes() | ||
if args.image is None: | ||
pass | ||
if args.image: | ||
logging.info('Generating dataset with images...') | ||
generate_dataset(save_png=True) | ||
else: | ||
pass | ||
logging.info('Generating dataset...') | ||
generate_dataset(save_png=False) |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters