Skip to main content

A library used to compare signal-to-noise ratio

Project description

CNRDIFF

A library used to compare signal-to-noise ratio.

Include CNR file format conversion, difference calculation and plotting.

There is a GUI version available for Windows users. See Release.

Lead Programmer:

Contributors:

History

Date Version Info
2024-11-20 1.0 Released
2024-11-29 1.1 Released
2024-12-05 1.2 Released
2025-04-17 1.3 Released

Installation

Using pip

pip install cnrdiff

Using conda

conda env create -f environment.yml
conda activate cnrdiff

Examples

The following examples use BNC QC LOG files. Note that RINEX V3 OBS files are also supported.

Convert to CNR file

cnrs = cnrdiff.log2cnr(['0002295h.log'])
print(cnrs['0002295h.log.cnr'])

Output:

                         0     1    2      3    4     5    6     7     8     9     10    11
0       2024-10-21T08:00:00     1  G03   0.00  S1C  40.0  S2C  45.0   S2W  40.0   S5I  46.0
1       2024-10-21T08:00:00     1  G16   0.00  S1C  44.0  S2W  34.0  None   NaN  None   NaN
2       2024-10-21T08:00:00     1  G26  72.19  S1C  48.0  S2C  48.0   S2W  49.0   S5I  49.0
3       2024-10-21T08:00:00     1  G28  54.10  S1C  44.0  S2C  49.0   S2W  36.0   S5I  49.0
4       2024-10-21T08:00:00     1  G29  29.28  S1C  38.0  S2C  33.0   S2W  23.0  None   NaN
...                     ...   ...  ...    ...  ...   ...  ...   ...   ...   ...   ...   ...
154214  2024-10-21T09:00:00  3601  C39  69.81  S2I  49.0  S6I  47.0  None   NaN  None   NaN
154215  2024-10-21T09:00:00  3601  C40  50.54  S2I  47.0  S6I  47.0  None   NaN  None   NaN
154216  2024-10-21T09:00:00  3601  C45  40.91  S2I  47.0  S6I  49.0  None   NaN  None   NaN
154217  2024-10-21T09:00:00  3601  C59  47.34  S2I  47.0  S6I  48.0  None   NaN  None   NaN
154218  2024-10-21T09:00:00  3601  C60  31.67  S2I  43.0  S6I  45.0  None   NaN  None   NaN

[154219 rows x 12 columns]

Calculate difference with default parameters (mean of all epochs)

logflist = ['0002295h.log', '0005295h.log', '0041295h.log']
cnrs = cnrdiff.log2cnr(logflist)
dcnrs = cnrdiff.cnr2dcnr(cnrs)
print(dcnrs['0005295h.log.cnr.dcnr'])

Output:

          S1C       S1X       S2C       S2I       S2P       S6I       S7I       S2W       S5I       S5X       S7X
PRN
C01       NaN       NaN       NaN -0.940572       NaN  0.085532 -0.843655       NaN       NaN       NaN       NaN
C02       NaN       NaN       NaN -1.191891       NaN  0.429325 -0.875868       NaN       NaN       NaN       NaN
C03       NaN       NaN       NaN -0.871425       NaN  0.767287 -0.167453       NaN       NaN       NaN       NaN
C04       NaN       NaN       NaN -1.157456       NaN -0.718967 -0.314079       NaN       NaN       NaN       NaN
C06       NaN       NaN       NaN -0.649542       NaN  0.709525 -0.185782       NaN       NaN       NaN       NaN
C07       NaN       NaN       NaN -0.628992       NaN -0.109414 -0.797001       NaN       NaN       NaN       NaN
C08       NaN       NaN       NaN -7.029925       NaN -7.659138 -8.090604       NaN       NaN       NaN       NaN
C09       NaN       NaN       NaN -0.430158       NaN  0.553180 -0.311580       NaN       NaN       NaN       NaN
C10       NaN       NaN       NaN -0.613441       NaN -0.668148 -1.409331       NaN       NaN       NaN       NaN
C13       NaN       NaN       NaN -0.420030       NaN -0.170935 -1.856699       NaN       NaN       NaN       NaN
C16       NaN       NaN       NaN -0.250764       NaN  0.668981 -0.287420       NaN       NaN       NaN       NaN
C19       NaN       NaN       NaN -0.715357       NaN -0.722855       NaN       NaN       NaN       NaN       NaN
C21       NaN       NaN       NaN -0.637597       NaN -0.221556       NaN       NaN       NaN       NaN       NaN
C22       NaN       NaN       NaN -1.140517       NaN  0.246876       NaN       NaN       NaN       NaN       NaN
C27       NaN       NaN       NaN -0.660690       NaN  0.482968       NaN       NaN       NaN       NaN       NaN
C29       NaN       NaN       NaN -1.968718       NaN -0.774428       NaN       NaN       NaN       NaN       NaN
C30       NaN       NaN       NaN -1.069425       NaN -0.106082       NaN       NaN       NaN       NaN       NaN
C36       NaN       NaN       NaN -0.360178       NaN  0.860317       NaN       NaN       NaN       NaN       NaN
C38       NaN       NaN       NaN -1.204633       NaN -0.822394       NaN       NaN       NaN       NaN       NaN
C39       NaN       NaN       NaN -0.246876       NaN  0.602888       NaN       NaN       NaN       NaN       NaN
C40       NaN       NaN       NaN -0.486254       NaN -0.064704       NaN       NaN       NaN       NaN       NaN
C45       NaN       NaN       NaN -1.191613       NaN -0.384615       NaN       NaN       NaN       NaN       NaN
C59       NaN       NaN       NaN -0.490419       NaN  0.075257       NaN       NaN       NaN       NaN       NaN
C60       NaN       NaN       NaN -0.384060       NaN -1.341294       NaN       NaN       NaN       NaN       NaN
E02       NaN  0.028881       NaN       NaN       NaN       NaN       NaN       NaN       NaN  0.704249  0.470425
E03       NaN -1.054074       NaN       NaN       NaN       NaN       NaN       NaN       NaN  0.616438 -0.138428
E07       NaN -0.602333       NaN       NaN       NaN       NaN       NaN       NaN       NaN  0.645376  0.058595
E08       NaN -0.708137       NaN       NaN       NaN       NaN       NaN       NaN       NaN  0.638156 -0.257706
E27       NaN -0.317690       NaN       NaN       NaN       NaN       NaN       NaN       NaN -0.507359 -1.391002
E29       NaN -0.891760       NaN       NaN       NaN       NaN       NaN       NaN       NaN -0.697708 -1.014139
E30       NaN -0.801444       NaN       NaN       NaN       NaN       NaN       NaN       NaN  0.892252  0.099417
G03 -1.185782       NaN -1.468857       NaN       NaN       NaN       NaN -1.909297 -0.956679       NaN       NaN
G04 -1.012480       NaN -1.029914       NaN       NaN       NaN       NaN -1.265208 -0.205828       NaN       NaN
G16 -1.130242       NaN       NaN       NaN       NaN       NaN       NaN -1.521244       NaN       NaN       NaN
G26 -0.423493       NaN  0.109136       NaN       NaN       NaN       NaN -0.277978  0.285754       NaN       NaN
G27 -0.928958       NaN -1.408960       NaN       NaN       NaN       NaN -2.466618 -0.895877       NaN       NaN
G28 -0.141905       NaN  0.383505       NaN       NaN       NaN       NaN  0.147459  0.844210       NaN       NaN
G29 -1.328652       NaN -0.748343       NaN       NaN       NaN       NaN -1.765429       NaN       NaN       NaN
G31 -0.170786       NaN  0.321577       NaN       NaN       NaN       NaN  0.034713       NaN       NaN       NaN
G32 -1.343793       NaN -0.820605       NaN       NaN       NaN       NaN -2.168564 -0.294085       NaN       NaN
R04 -0.536518       NaN       NaN       NaN -1.141905       NaN       NaN       NaN       NaN       NaN       NaN
R05 -0.286865       NaN       NaN       NaN  0.102194       NaN       NaN       NaN       NaN       NaN       NaN
R06       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN
R14 -1.866949       NaN       NaN       NaN -1.413515       NaN       NaN       NaN       NaN       NaN       NaN
R15 -0.825326       NaN       NaN       NaN  0.395446       NaN       NaN       NaN       NaN       NaN       NaN
R16 -2.187170       NaN       NaN       NaN -0.758400       NaN       NaN       NaN       NaN       NaN       NaN
R17 -0.660695       NaN       NaN       NaN -0.220414       NaN       NaN       NaN       NaN       NaN       NaN
R18 -2.040590       NaN       NaN       NaN  0.568744       NaN       NaN       NaN       NaN       NaN       NaN
R24 -1.121621       NaN       NaN       NaN -0.724670       NaN       NaN       NaN       NaN       NaN       NaN

Calculate difference with custom parameters

logflist = ['11121980.24O', '11131980.24O']
dcnrflist = ['11121980.csv', '11131980.csv']
start = datetime.datetime(2024, 7, 16, 9, 0, 0)
end = datetime.datetime(2024, 7, 16, 10, 0, 0)
interval = 5
ele_cut = 20.0
cnrdiff.log2cnr(logflist, save=False, start=start, end=end, interval=interval, ele_cut=ele_cut)
cnrdiff.cnr2dcnr(cnrflist, save=dcnrflist, plot=True, how='MAX', by='SYS')

Convert DCNR to XLSX file

>>> dcnrflist1 = ['0002295h.log.cnr.dcnr', '0005295h.log.cnr.dcnr', '0041295h.log.cnr.dcnr']
>>> dcnrflist2 = ['11121980.csv', '11131980.csv']
>>> cnrdiff.dcnr2xlsx([dcnrflist1, dcnrflist2], 'summary.xlsx')

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cnrdiff-1.3.0.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cnrdiff-1.3.0-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file cnrdiff-1.3.0.tar.gz.

File metadata

  • Download URL: cnrdiff-1.3.0.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cnrdiff-1.3.0.tar.gz
Algorithm Hash digest
SHA256 fc9eb8e0b03077aa7caf983f1176209e6092491de077eabe3203773939ce9075
MD5 79f64e0a8bc44fd4db3e780314d780f2
BLAKE2b-256 d10a8f68935af84d6032a44631de8efc88bafdbe6acf3054b329b3aa1ce9a575

See more details on using hashes here.

Provenance

The following attestation bundles were made for cnrdiff-1.3.0.tar.gz:

Publisher: publish-to-pypi.yml on kongolou/cnrdiff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cnrdiff-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: cnrdiff-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cnrdiff-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4987df1f51befd4b95ad8a072b4fce29391b64119020d26f5e1f815b28ca174b
MD5 0cdee4923432a47129ef2cced47bf389
BLAKE2b-256 6e07ada3696bffebb98b912ad3b2fa382b6200093d75a53e1f5ca331f6f83cbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for cnrdiff-1.3.0-py3-none-any.whl:

Publisher: publish-to-pypi.yml on kongolou/cnrdiff

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page