Skip to content

Commit

Permalink
docs: add badges and more content (#32)
Browse files Browse the repository at this point in the history
  • Loading branch information
Clarmy authored Jan 28, 2023
1 parent 4efcc0d commit b7a5c91
Show file tree
Hide file tree
Showing 8 changed files with 609 additions and 62 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -130,4 +130,5 @@ dmypy.json

.DS_Store
.vscode
*.ipynb
*.ipynb
_build
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@

[![Pytest](https://github.com/caiyunapp/cyeva/actions/workflows/pytest.yml/badge.svg)](https://github.com/caiyunapp/cyeva/actions/workflows/pytest.yml)
[![Pypi publish](https://github.com/caiyunapp/cyeva/actions/workflows/pypi-publish.yml/badge.svg)](https://github.com/caiyunapp/cyeva/actions/workflows/pypi-publish.yml)
[![Anaconda.org](https://anaconda.org/conda-forge/cyeva/badges/version.svg)](https://anaconda.org/conda-forge/cyeva)
[![Downloads](https://anaconda.org/conda-forge/cyeva/badges/downloads.svg)](https://anaconda.org/conda-forge/cyeva)
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/cyeva/badges/platforms.svg)](https://anaconda.org/conda-forge/cyeva)
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/cyeva/badges/latest_release_date.svg)](https://anaconda.org/conda-forge/cyeva)
[![Pypi](https://badge.fury.io/py/cyeva.svg)](https://badge.fury.io/py/cyeva)
[![Documentation Status](https://readthedocs.org/projects/cyeva/badge/?version=latest)](https://cyeva.readthedocs.io/zh_CN/latest/?badge=latest)
[![Line statistic](https://tokei.rs/b1/github/caiyunapp/cyeva?category=lines)](https://github.com/caiyunapp/cyeva)
[![Download statistic](https://pepy.tech/badge/cyeva)](https://pepy.tech/project/cyeva)
[![codecov](https://codecov.io/gh/caiyunapp/cyeva/branch/main/graph/badge.svg?token=344FXDKAYD)](https://codecov.io/gh/caiyunapp/cyeva)
[![style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/cyeva/badges/license.svg)](https://anaconda.org/conda-forge/cyeva)

cyeva 是一个由彩云科技天气团队开发的用于对气象要素确定性预报准确率进行快速评测的 Python 开源工具库。

Expand Down
4 changes: 2 additions & 2 deletions cyeva/core/statistic.py
Original file line number Diff line number Diff line change
Expand Up @@ -381,9 +381,9 @@ def calc_linregress(
Returns:
tuple: Aguments of linear regression as follow:
slope, intercept, r_value, p_value, std_err
slope, intercept, r_value, p_value
"""
linreg_result = stats.linregress(forecast, observation)
linreg_result = stats.linregress(forecast, observation)[:4]

return tuple(round(p, 4) for p in linreg_result)

Expand Down
1 change: 1 addition & 0 deletions cyeva/core/wind.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,7 @@ def filter_wind_scales(


class WindComparison(Comparison):
# FIXME: 需要加最小扇形逻辑
def __init__(
self,
obs_spd: Union[np.ndarray, list] = None,
Expand Down
260 changes: 259 additions & 1 deletion docs/source/content/api-ref.rst
Original file line number Diff line number Diff line change
@@ -1,2 +1,260 @@
###########
API参考
==========
###########

cyeva.base
============
base 模块主要存放基础对象相关的类和函数。

.. py:class:: Comparison(observation, forecast)
:module: cyeva.base

对比对象, 即预设预报和观测的两个等长数组, 该对象初始化以后可以进行其支持的相关指标计算。

:param np.ndarray or list observation:
观测数组。

:param np.ndarray or list forecast:
预报数组。

.. py:method:: calc_rmse(observation=None,forecast=None,*args,**kwargs)
计算 :ref:`rmse`

:param np.ndarray or list observation:
观测数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:param np.ndarray or list forecast:
预报数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:return:
RMSE 均方根误差值

:rtype: float

.. py:method:: calc_mae(observation=None,forecast=None,*args,**kwargs)
计算 :ref:`mae`

:param np.ndarray or list observation:
观测数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:param np.ndarray or list forecast:
预报数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:return:
MAE 平均绝对误差

:rtype: float

.. py:method:: calc_chi_square(observation=None,forecast=None,*args,**kwargs)
计算 :ref:`chi_square`

:param np.ndarray or list observation:
观测数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:param np.ndarray or list forecast:
预报数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:return:
χ2 卡方

:rtype: float

.. py:method:: calc_rss(observation=None,forecast=None,*args,**kwargs)
计算 :ref:`rss`

:param np.ndarray or list observation:
观测数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:param np.ndarray or list forecast:
预报数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:return:
RSS 剩余平方和

:rtype: float

.. py:method:: calc_linregress_args(observation=None,forecast=None,*args,**kwargs)
计算 :ref:`correlation coefficient`

:param np.ndarray or list observation:
观测数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:param np.ndarray or list forecast:
预报数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:return:
(斜率, 截距, 相关系数, P值, 标准差)

:rtype: tuple

.. py:method:: calc_bias(observation=None,forecast=None,threshold=0,*args,**kwargs)
计算 :ref:`bias`

:param np.ndarray or list observation:
观测数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:param np.ndarray or list forecast:
预报数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:param Number threshold:
二值化阈值, 高于该值的成员被标记为 True, 否则标记为 False。默认为 0。

:return:
BIAS 评分

:rtype: float

.. py:method:: calc_binary_accuracy_ratio(observation=None,forecast=None,threshold=0,*args,**kwargs)
计算 :ref:`binary_accuracy`

:param np.ndarray or list observation:
观测数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:param np.ndarray or list forecast:
预报数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:param Number threshold:
二值化阈值, 高于该值的成员被标记为 True, 否则标记为 False。默认为 0。

:return:
二值化准确率

:rtype: float

.. py:method:: calc_diff_accuracy_ratio(observation=None,forecast=None,limit=1,*args,**kwargs)
计算 :ref:`err_accuracy`

:param np.ndarray or list observation:
观测数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:param np.ndarray or list forecast:
预报数组, 当为 None 时, 从实例化的对象中获取。默认为 None。

:param Number limit:
预报与观测之间的差值限制, 二者的差值的绝对值低于该值则被认为是预报正确, 否则认为预报错误。默认为 1。

:return:
误差准确率

:rtype: float


cyeva.binarize
=================
binarize 模块主要存放二值化相关的函数。

.. py:function:: threshold_binarize(observation, forecast, threshold = 0,compare= ">=")
:module: cyeva.binarize

基于阈值对观测和预报数组进行二值化

:param np.ndarray or list observation:
观测数组

:param np.ndarray or list forecast:
预报数组

:param Number threshold:
二值化阈值, 高于该值的成员被标记为 True, 否则标记为 False。默认为 0。

:param str compare:
过滤方式, 结合阈值满足此种方式的成员将被标记为 True, 否则为 False。默认为 ``">="``

:return:
二值化后由 True 和 False 组成的观测和预报数组
:rtype:
tuple

cyeva.statistic
=================
statistic 模块主要存放统计相关的函数。

.. py:function:: calc_binary_quadrant_values(observation, forecast)
:module: cyeva.statistic

计算二值化象限值, 象限值包括:命中数(hits), 漏报数(misses), 空报数(false_alarms), 正确否定数(correct_rejects)

:param np.ndarray or list observation:
由 True 和 False 组成的二值化观测数组

:param np.ndarray or list forecast:
由 True 和 False 组成的二值化预报数组

:return:
二值化象限值, 内容为: (hits, misses, false_alarms, correct_rejects, total)
:rtype:
tuple


.. py:function:: calc_binary_accuracy_ratio(observation, forecast)
:module: cyeva.statistic

计算 :ref:`binary_accuracy`

:param np.ndarray or list observation:
由 True 和 False 组成的二值化观测数组

:param np.ndarray or list forecast:
由 True 和 False 组成的二值化预报数组

:return:
二值化准确率,单位 %
:rtype:
float


.. py:function:: calc_hit_ratio(observation, forecast)
:module: cyeva.statistic

计算 :ref:`hit_ratio`

:param np.ndarray or list observation:
由 True 和 False 组成的二值化观测数组

:param np.ndarray or list forecast:
由 True 和 False 组成的二值化预报数组

:return:
命中率,单位 %
:rtype:
float

.. py:function:: calc_miss_ratio(observation, forecast)
:module: cyeva.statistic

计算 :ref:`miss_ratio`

:param np.ndarray or list observation:
由 True 和 False 组成的二值化观测数组

:param np.ndarray or list forecast:
由 True 和 False 组成的二值化预报数组

:return:
漏报率,单位 %
:rtype:
float

.. py:function:: calc_false_alarm_ratio(observation, forecast)
:module: cyeva.statistic

计算 :ref:`false_alarm_ratio`

:param np.ndarray or list observation:
由 True 和 False 组成的二值化观测数组

:param np.ndarray or list forecast:
由 True 和 False 组成的二值化预报数组

:return:
空报率,单位 %
:rtype:
float
Loading

0 comments on commit b7a5c91

Please sign in to comment.