You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
To start working on the code, you need to install the project dependencies and set up the pre-commit hooks. These hooks automatically check your code for quality and style before each commit.
41
+
42
+
1.**Install dependencies:**
43
+
44
+
Follow steps in [README.md](README.md)
45
+
46
+
2.**Install pre-commit hooks (Mandatory):**
47
+
48
+
```bash
49
+
pre-commit install
50
+
```
51
+
52
+
This command sets up the hooks in your local Git repository. **This is a required step for all contributors.**
53
+
54
+
Now your environment is ready. The hooks will run automatically every time you run `git commit`.
55
+
56
+
57
+
58
+
### 4. Make and Commit Changes
39
59
40
60
Work on the code in your new branch. When you're ready to save your changes, create a commit. We use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) to standardize commit messages.
41
61
@@ -48,7 +68,7 @@ Use the following types:
48
68
-`struct`: for changes related to the project structure (NOT CODE), for example, changing folder locations.
49
69
-`ci`: for various CI/CD tasks.
50
70
-`docs`: for changes in documentation.
51
-
-`chore`: for other changes that do not affect the code or tests (e.g., updating .gitignore, README.md).
71
+
-`chore`: for other changes that do not affect the code or tests (e.g., updating `.gitignore`, `README.md`).
52
72
53
73
54
74
@@ -64,7 +84,7 @@ Try to divide commits into atomic and independent parts. That is, do not add unr
64
84
65
85
66
86
67
-
### 4. Push Changes to Your Fork
87
+
### 5. Push Changes to Your Fork
68
88
69
89
After you have made one or more commits, push your branch to your remote fork on GitHub:
70
90
@@ -74,13 +94,13 @@ git push
74
94
75
95
76
96
77
-
### 5. Create a Pull Request (PR)
97
+
### 6. Create a Pull Request (PR)
78
98
79
99
Once your branch with the changes is in your fork, you can create a Pull Request to propose your changes to the main repository.
80
100
81
101
1. Go to your fork's page on GitHub (https://github.com/YOUR-USERNAME/pysatl-mpest).
82
102
2. You will see a notification prompting you to create a Pull Request for your recently pushed branch. Click the **"Compare & pull request"** button.
83
-
3. Ensure the base repository is PySATL/pysatl-mpest with the main branch, and the head repository is your fork and your working branch.
103
+
3. Ensure the base repository is `PySATL/pysatl-mpest` with the main branch, and the head repository is your fork and your working branch.
84
104
4. Give your Pull Request a meaningful title (following the [Conventional Commits](https://www.google.com/url?sa=E&q=https%3A%2F%2Fwww.conventionalcommits.org%2F) standard) and add a detailed description of the changes you've made.
85
105
86
106
#### Rules for Your PR to be Merged
@@ -98,6 +118,3 @@ For your Pull Request to be merged, it must meet the following requirements conf
98
118
Each pull request must be reviewed by one of the maintainers:
Copy file name to clipboardExpand all lines: docs/design.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -64,7 +64,7 @@
64
64
65
65
## 1.2. Цели документации
66
66
67
-
Документ предназначен для описания текущего состояния проекта `pysatl-mpest`.
67
+
Документ предназначен для описания текущего состояния проекта `pysatl-mpest`.
68
68
69
69
Целевой аудиторией являются разработчики, которые будут принимать участие в разработке/расширении библиотеки. По большей части данная документация предназначается для тех, кто будет разбираться со структурой проекта на *Летней школе*.
70
70
@@ -139,7 +139,7 @@ $$
139
139
140
140
#### Смеси распределений
141
141
142
-
Работа со смесями распределений идет через класс `MixtureDistribution`, который инициализируется с помощью списка объектов `Distribution`. Конкретные реализации распределений наследуются от `AModel`, после чего оборачиваются в класс `Distribution`.
142
+
Работа со смесями распределений идет через класс `MixtureDistribution`, который инициализируется с помощью списка объектов `Distribution`. Конкретные реализации распределений наследуются от `AModel`, после чего оборачиваются в класс `Distribution`.
143
143
144
144
Некоторые реализации EM используют оптимизацию, при которой параметры могут выйти из области определения. Таким образом необходимо нормализовать параметры для того, чтобы они были определены на всем $\mathbb{R}$. Методы объектов `AModel` использует внутренние (internal) параметры, тогда как `Distribution` использует внешние (external) параметры, которые являются общепринятыми.
145
145
@@ -160,7 +160,7 @@ $$
160
160
-`Python`: Как основной язык.
161
161
-`scipy`: На эту библиотеку делегировано сэмплирование, а так же написаны адаптеры к их оптимизаторам.
162
162
-`numpy`: Для векторизации.
163
-
-`matplotlib + seaborn`: Для визуализации данных (В основном используется в экспериментальном окружении).
163
+
-`matplotlib + seaborn`: Для визуализации данных (В основном используется в экспериментальном окружении).
164
164
165
165
166
166
@@ -238,7 +238,7 @@ $$
238
238
-`LikelihoodMStep` (для MLE-EM): пересчитывает параметры моделей, максимизируя взвешенную логарифмическую функцию правдоподобия. Может использовать `AOptimizer` или `AOptimizerJacobian` для численной оптимизации.
239
239
-`LMomentsMStep` (для ELM): пересчитывает параметры моделей на основе вычисленных L-моментов для каждого компонента смеси.
1. Класс `Distribution` хоть и является оберткой для `AModel`, но не реализует всех его методов (например `lpdf`). Таким образом, для вызова нереализованных методов необходимо вызывать `model`, что плохо.
437
+
1. Класс `Distribution` хоть и является оберткой для `AModel`, но не реализует всех его методов (например `lpdf`). Таким образом, для вызова нереализованных методов необходимо вызывать `model`, что плохо.
438
438
439
439
2. Для некоторых алгоритмов (не для всех) необходимо преобразовывать параметры так, чтобы они были на всем $\mathbb{R}$. Из-за этого появляется разделение на внутренние (*internal_params*) и внешние (*external_params*) параметры. Сейчас в коде, преобразование во внутренние параметры происходит перед началом алгоритма (для всех алгосов, даже для тех, для которых это не является необходимым), а в конце происходит переход к внешним параметрам (общепринятым).
0 commit comments