diff --git a/README.md b/README.md index bfdf55fc5d5b3b1046e47e0f4c9ba0ce8394b235..dbd009c40598d2b8675487993e4a6762ed4bb9bf 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # supersvd -Python tool to perform maximal covariance analysis and calculating empirical orthogonal functions +Python tool to perform maximal covariance analysis and calculate empirical orthogonal functions Написанная на языке `Python 3` программа состоит из двух файлов: `main.py` и `supersvd.py`. В файле `supersvd.py` находится алгоритм вычисления максимально скоррелированных мод, а в `main.py` — вспомогательный код, @@ -45,4 +45,35 @@ C =\frac{1}{nT} \sum_{t=1}^{nT} (X(t) - \overline{X}) (Y(t) - \overline{Y})^{\ma * массив `corrcoeff`, содержащий $`k`$ коэффициентов корреляции между $`XC_k(t)`$ и $`YC_k(t)`$; * массив `x_variance_fraction` (`y_variance_fraction`), содержащий доли дисперсии, приходящиеся на каждый из $`k`$ левых (правых) сингулярных векторов; * массив `eigenvalue_fraction`, содержащий долю дисперсии матрицы ковариации, приходящуюся на $`k`$-ую пару сингулярных векторов; - * массив `eigenvalues` сингулярных значений матрицы ковариации $`C`$. + * массив `eigenvalues` сингулярных значений матрицы ковариации $`C`$. + + +## Использование + +Функция `supersvd` может вызываться как и из другой `Python`-функции, принимая на вход массивы данных, так и из командной строки, принимая на вход бинарные файлы (`.STD`). Последняя возможность реализована в функции `main`. + + Функция `main` принимает на вход 3 обязательных аргумента: + * `-x` имя файла, содержащего первое из полей (например, `X.STD`); + * `-y` имя файла, содержащего второе из полей (например, `Y.STD`)[^2]; + * `-t`, `--time` длину временного интервала (например, в случае среднемесячных данных исторического эксперимента с INMCM это 165 лет). + + [^2]: Если нужно посчитать ЭОФы, то в качестве первого и второго нужно задать одно и то же поле, то есть передать два раза имя одного файла. + + Также функция `main` принимает 7 необязательных (опциональных) параметров: + * `--type` тип используемых данных — `real` (4 байта) или `double` (8 байт), значение по умолчанию — `real`; + * `-k` количество вычисляемых пар максимально скоррелированных мод, значение по умолчанию — 3; + * `-xv` имя файла, в который запишется массив `x_vect`; + * `-yv` имя файла, в который запишется массив `y_vect`; + * `-xc` имя файла, в который запишется массив `x_coeff`; + * `-yc` имя файла, в который запишется массив `y_coeff`; + * `-stat` имя файла (предпочтительно в формате `.CSV`), в который для каждого $`k`$ запишутся домноженные на 100% элементы массивов: `corrcoeff`, `x_variance_fraction`, `y_variance_fraction`, `eigenvalue_fraction`. + +Функция `main` также может быть запущена с ключом `--dont-subtract-mean`: при этом из полей $`X`$, $`Y`$ _не будут вычитаться_ их средние по времени значения. + +Итак, чтобы вычислить с помощью функции `main` 4 максимально скоррелированные моды аномалий температуры и давления (типа `real`) и сохранить все возможные результаты, достаточно в командной строке выполнить: + +`python3 main.py -x ts.std -y ps.std -t 1147 -k 4 -xv tsv.std -yv psv.std` + +`-xc tsc.std -yc psc.std -stat c.csv` + +Информацию, сохраняемую в файл `c.csv`, функция `main` также выводит на экран.