Датасет представляет собой набор файлов организованный следующим образом:
dataset
- базовая папка (будет создана автоматически как и всё ниже)measurement_variant_1
- Вариант настройки измерителя (определённая частота, напряжение и т.д.)X
- папка относящаяся к конкретному классу (либо файлы без этой подпапки [в разработке]) (описание классов в предыдущем разделе)N.cir
- файл схемы с определенными параметрамиX_params_N.png
- ВАХ схемы, с указанием параметров измерения и класса схемыX_params_N.uzf
- EPCore формат хранящий настройки измерения и кривую ВАХ- в это же папке другие параметры той же цепи, с другой N
-
Из под виртуального окружения в корне проекта в консоли запустить модуль:
python -m generate_dataset --image
-
При отсутствии флага --image изображения ВАХ генерироваться не будут
Удалите прошлый датасет руками, если он вам не понравился.
Чтобы настроить параметры генерации и сгенерировать снова существует два файла:
measurement_settings.json
- Варианты настроек измерителя, для которых нужно сгенерировать датасет.- probe_signal_frequency - частота пробного сигнала
- max_voltage - амплитуда напряжения
- precharge_delay - время, которое будет пропущено перед получением данных (для зарядки конденсаторов)
- sampling_rate - количество точек на цикл
- internal_resistance - внутреннее сопротивление измерителя
parameters_variations.json
- Описание перебора параметров компонентов- Пример: для резистора R существует один параметр измеряемый в cir_unit, который нужно перебрать в экспоненциальном интервале от 1 до 100000000 создав 10 точек.
- Пример2: для диода D существует 4 параметра (всего их больше), которые следует перебрать, и все они вручную заданные константы. Из-за особенностей многопараметрических элементов, диод записан несколько иначе, чем резистор. В диоде
cir_unit=null
, но есть не нулевойcir_key
. Если требуется добавить в этот файл новый элемент у которого требуется изменять параметры, то смотрите в.cir
-файл, если у элемента есть собственная DMOD (DeviceModel)cir_key
- это параметры этой DeviceModel.
Берутся все классы схем и все настройки измерений.
Для каждого класса ParametersChanger
определяет какие элементы существуют в этой схеме и в каких интервалах их нужно перебрать. Генерируются все возможные комбинации параметров элементов (например если два резистора по 10 вариантов сопротивлений, то это 100 сочетаний) и записываются в changer.circuits
После чего с помощью changer.dump_circuits_on_disk()
все комбинации параметров сохраняются на диск в виде новых .cir
-файлов в папку датасета.
Далее SimulatorIVC
генерирует для конкретной схемы с определенными параметрами и настройками вольт-амперную характеристику. (Схема circuit берётся из оперативки: changer.circuits
)
ВАХ записывается на диск методом simulator.save_ivc(...)
в формате uzf
(зипованный json)
Если выставлен флаг --image
, то так же сохраняется ВАХ в формате png
Алгоритм переходит к следующему классу.
Когда все классы готовы, алгоритм переходит к следующим настройкам измерения.
В файле measurement_settings.json
в noise_settings
есть несколько полей для генерации шума:
- without_noise - Если true, то в датасете будут, в том числе, ВАХи без шума.
- with_noise_copies - количество копий одной схемы с одними параметрами компонентов и с одними настройками измерения, но с разным шумом (Выставить 0, если шум не требуется)
- SNR - (Signal-to-noise ratio) отношение сигнал/шум