seiko-converter


Nameseiko-converter JSON
Version 1.0.0 PyPI version JSON
download
home_pagehttps://github.com/ysard/seiko_qt2100_converter
SummarySeiko Converter is a software allowing to generate graphs based on the raw data produced by the Seiko Qt-2100 Timegrapher device.
upload_time2025-02-04 03:44:15
maintainerNone
docs_urlNone
authorYsard
requires_python>=3.8
licenseNone
keywords printer seiko timegrapher chronograph seiko qt-2100 centronics serial parallel
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/ysard/seiko_converter)](https://github.com/ysard/libre-printer/releases/latest/)
[![version on pypi](https://img.shields.io/pypi/v/seiko_converter.svg)](https://pypi.python.org/pypi/seiko_converter)
[![version on pypi](https://img.shields.io/pypi/pyversions/seiko_converter)](https://pypi.python.org/pypi/seiko_converter)
<!--[![tests status](./images/tests.svg)](https://github.com/ysard/seiko_qt2100_converter/actions)-->
[![python docstring coverage](./images/interrogate_badge.svg)](https://interrogate.readthedocs.io/en/latest/)
<!--[![python test coverage](./images/coverage.svg)](https://docs.pytest.org/en/latest/)-->
[![license](https://img.shields.io/pypi/l/seiko_converter.svg)](https://github.com/ysard/seiko_converter/blob/main/LICENSE)
[![Donate](./images/liberapay.svg)](https://liberapay.com/Ysard/donate)

# Seiko Qt-2100 converter

Seiko converter is a software allowing to generate graphs based on the raw data
produced by the Seiko Qt-2100 Timegrapher device.

## Background

By using an interface like the [Libre Printer](https://github.com/ysard/libre-printer) one,
which can replace a parallel or serial printer,
you can obtain data as sent by older devices whose printers have unfortunately broken down.

Sometimes old devices cannot be replaced for cost reasons or simply because there is no justification to do so.
However, they often work in pairs with printers that are no longer manufactured and are often the weak point of
the installation because they are prone to breakdowns and the abandonment of the manufacture of their consumables.

## Purpose
The printer linked to the Seiko Qt-2100 chronograph is one of those rare instruments whose
specifications have either never been published or have long been lost.

The specific aim of this project is to process the print data from this device, making it readable,
usable and printable again according to current modern standards.

### Note:
Neither the owners of this device, contacted on “enthusiasts” forums,
nor Seiko, wish to share the documentation for this device, which after more than 30 years
still seems to be an industrial secret, or intended only for a restricted circle of insiders.
As a result, many assumptions are being made about the precise operating
or simply about the units used in the graphs.
We welcome any contributions you can make to fill these gaps!

## Features

![](./images/A10S_70s.webp)![](./images/A10S_rp.webp)![](./images/A10S.webp)

*In order from left to right, Print Mode A 10S graphs in 3 eras: the 70's,
actual concurrent project, this project*

### QT-2100 modes

This program automatically supports print modes A and B on the QT-2100.
Have a look at the page in the original manual that introduces them :
[image](./images/QT-2100P-Operating-Modes-in-Manual.jpg).

The mode C is covered by the CSV output (also available on all the other modes).

### Error corrections

As shown in the image above, dots resulting from measurement error on the
device's side are corrected using the most neutral value possible
(the average of the tick or tock values) and clearly displayed on the figure (red dot).

Here is another example in B1S mode:

![](./images/B1S_1.webp)

```commandline
$ python -m seiko_converter -i test_data/seiko_qt2100_B1S_1.raw -g
```

### Horizontal or vertical layout

Horizontal layout is closer to the rendering of modern timegraphers,
but the readability of an ever-expanding downward graph can be easier.

![](./images/horizontal.webp)

```commandline
$ python -m seiko_converter -i test_data/seiko_qt2100_A10S.raw -g --horizontal
```

### Optional cutoff

Data can be added indefinitely to such a graph. Controlling value overflow for
long data series is important.
A cutoff value can be chosen automatically on the basis of the data or
specified by the user.

Here are the effects of automatic cutoff vs 10 seconds cuttoff:

![](./images/vertical_cutoff.webp)![](./images/vertical_cutoff_10.webp)

```commandline
$ python -m seiko_converter -i test_data/seiko_qt2100_A10S.raw -g --vertical -c
$ python -m seiko_converter -i test_data/seiko_qt2100_A10S.raw -g --vertical -c 10
```

### CSV Export

For further analysis.

## Usage

```commandline
$ python -m seiko_converter -h
usage: __main__.py [-h] -i INPUT_FILE [-o [OUTPUT_FILENAME]] [--csv] [-g] [--horizontal] [--vertical] [-c [CUTOFF]] [-d] [--version] [-v]

options:
  -h, --help            show this help message and exit
  -i INPUT_FILE, --input_file INPUT_FILE
                        Raw file from device. (default: None)
  -o [OUTPUT_FILENAME], --output_filename [OUTPUT_FILENAME]
                        Generated file name. (default: None)
  --csv                 Extract the parsed values into a CSV file. (default: False)
  -g, --graph           Extract the parsed values into a timegrapher style file. (default: False)
  -d, --debug           Show the matplotlib windows. (default: False)
  --version             show program's version number and exit
  -v, --verbose

Graph options:
  --horizontal          Make a horizontal graph that expand downwards; default is vertical.
  --vertical            Make a vertical graph that expand downwards (default).
  -c [CUTOFF], --cutoff [CUTOFF]
                        Only for Mode A graphs. Allow wrapped display to limit infinite graph expansion on the right
                        direction (x-axis). If set on vertical graph: rate values will be cut; if set on horizontal graph:
                        days will be cut. Set it to True for auto-cut (2 days in horizontal mode), False for disabling the
                        feature, or with a custom value adapted to the chosen mode (limit value or time limit in days).
                        (default: True)
```

## Test data description

- seiko_qt2100_A10S.raw:

  109 measures in A10S mode; strict alternance between negative and positive values (ticks and tocks)

- seiko_qt2100_B1S_1.raw:

  14 measures in B1S mode; only negative values; 4 values + 6 errors + 1 outlier + 3 value

- seiko_qt2100_B1S_2.raw:

  19 measures in B1S mode; 4 values + 1 error + 5 values + 3 errors + 1 value + 1 error + 4 values


## License; Free and Open Source

Seiko converter is released under the AGPL (Affero General Public License).

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/ysard/seiko_qt2100_converter",
    "name": "seiko-converter",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "printer, seiko, timegrapher, chronograph, seiko qt-2100, centronics, serial, parallel",
    "author": "Ysard",
    "author_email": "ysard_git@gmx.fr",
    "download_url": "https://files.pythonhosted.org/packages/b2/4d/bb9efd93ae1639516ac43e822b32a947f201ea629eecc5ac55e4a84a7c7b/seiko_converter-1.0.0.tar.gz",
    "platform": null,
    "description": "[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/ysard/seiko_converter)](https://github.com/ysard/libre-printer/releases/latest/)\n[![version on pypi](https://img.shields.io/pypi/v/seiko_converter.svg)](https://pypi.python.org/pypi/seiko_converter)\n[![version on pypi](https://img.shields.io/pypi/pyversions/seiko_converter)](https://pypi.python.org/pypi/seiko_converter)\n<!--[![tests status](./images/tests.svg)](https://github.com/ysard/seiko_qt2100_converter/actions)-->\n[![python docstring coverage](./images/interrogate_badge.svg)](https://interrogate.readthedocs.io/en/latest/)\n<!--[![python test coverage](./images/coverage.svg)](https://docs.pytest.org/en/latest/)-->\n[![license](https://img.shields.io/pypi/l/seiko_converter.svg)](https://github.com/ysard/seiko_converter/blob/main/LICENSE)\n[![Donate](./images/liberapay.svg)](https://liberapay.com/Ysard/donate)\n\n# Seiko Qt-2100 converter\n\nSeiko converter is a software allowing to generate graphs based on the raw data\nproduced by the Seiko Qt-2100 Timegrapher device.\n\n## Background\n\nBy using an interface like the [Libre Printer](https://github.com/ysard/libre-printer) one,\nwhich can replace a parallel or serial printer,\nyou can obtain data as sent by older devices whose printers have unfortunately broken down.\n\nSometimes old devices cannot be replaced for cost reasons or simply because there is no justification to do so.\nHowever, they often work in pairs with printers that are no longer manufactured and are often the weak point of\nthe installation because they are prone to breakdowns and the abandonment of the manufacture of their consumables.\n\n## Purpose\nThe printer linked to the Seiko Qt-2100 chronograph is one of those rare instruments whose\nspecifications have either never been published or have long been lost.\n\nThe specific aim of this project is to process the print data from this device, making it readable,\nusable and printable again according to current modern standards.\n\n### Note:\nNeither the owners of this device, contacted on \u201centhusiasts\u201d forums,\nnor Seiko, wish to share the documentation for this device, which after more than 30 years\nstill seems to be an industrial secret, or intended only for a restricted circle of insiders.\nAs a result, many assumptions are being made about the precise operating\nor simply about the units used in the graphs.\nWe welcome any contributions you can make to fill these gaps!\n\n## Features\n\n![](./images/A10S_70s.webp)![](./images/A10S_rp.webp)![](./images/A10S.webp)\n\n*In order from left to right, Print Mode A 10S graphs in 3 eras: the 70's,\nactual concurrent project, this project*\n\n### QT-2100 modes\n\nThis program automatically supports print modes A and B on the QT-2100.\nHave a look at the page in the original manual that introduces them :\n[image](./images/QT-2100P-Operating-Modes-in-Manual.jpg).\n\nThe mode C is covered by the CSV output (also available on all the other modes).\n\n### Error corrections\n\nAs shown in the image above, dots resulting from measurement error on the\ndevice's side are corrected using the most neutral value possible\n(the average of the tick or tock values) and clearly displayed on the figure (red dot).\n\nHere is another example in B1S mode:\n\n![](./images/B1S_1.webp)\n\n```commandline\n$ python -m seiko_converter -i test_data/seiko_qt2100_B1S_1.raw -g\n```\n\n### Horizontal or vertical layout\n\nHorizontal layout is closer to the rendering of modern timegraphers,\nbut the readability of an ever-expanding downward graph can be easier.\n\n![](./images/horizontal.webp)\n\n```commandline\n$ python -m seiko_converter -i test_data/seiko_qt2100_A10S.raw -g --horizontal\n```\n\n### Optional cutoff\n\nData can be added indefinitely to such a graph. Controlling value overflow for\nlong data series is important.\nA cutoff value can be chosen automatically on the basis of the data or\nspecified by the user.\n\nHere are the effects of automatic cutoff vs 10 seconds cuttoff:\n\n![](./images/vertical_cutoff.webp)![](./images/vertical_cutoff_10.webp)\n\n```commandline\n$ python -m seiko_converter -i test_data/seiko_qt2100_A10S.raw -g --vertical -c\n$ python -m seiko_converter -i test_data/seiko_qt2100_A10S.raw -g --vertical -c 10\n```\n\n### CSV Export\n\nFor further analysis.\n\n## Usage\n\n```commandline\n$ python -m seiko_converter -h\nusage: __main__.py [-h] -i INPUT_FILE [-o [OUTPUT_FILENAME]] [--csv] [-g] [--horizontal] [--vertical] [-c [CUTOFF]] [-d] [--version] [-v]\n\noptions:\n  -h, --help            show this help message and exit\n  -i INPUT_FILE, --input_file INPUT_FILE\n                        Raw file from device. (default: None)\n  -o [OUTPUT_FILENAME], --output_filename [OUTPUT_FILENAME]\n                        Generated file name. (default: None)\n  --csv                 Extract the parsed values into a CSV file. (default: False)\n  -g, --graph           Extract the parsed values into a timegrapher style file. (default: False)\n  -d, --debug           Show the matplotlib windows. (default: False)\n  --version             show program's version number and exit\n  -v, --verbose\n\nGraph options:\n  --horizontal          Make a horizontal graph that expand downwards; default is vertical.\n  --vertical            Make a vertical graph that expand downwards (default).\n  -c [CUTOFF], --cutoff [CUTOFF]\n                        Only for Mode A graphs. Allow wrapped display to limit infinite graph expansion on the right\n                        direction (x-axis). If set on vertical graph: rate values will be cut; if set on horizontal graph:\n                        days will be cut. Set it to True for auto-cut (2 days in horizontal mode), False for disabling the\n                        feature, or with a custom value adapted to the chosen mode (limit value or time limit in days).\n                        (default: True)\n```\n\n## Test data description\n\n- seiko_qt2100_A10S.raw:\n\n  109 measures in A10S mode; strict alternance between negative and positive values (ticks and tocks)\n\n- seiko_qt2100_B1S_1.raw:\n\n  14 measures in B1S mode; only negative values; 4 values + 6 errors + 1 outlier + 3 value\n\n- seiko_qt2100_B1S_2.raw:\n\n  19 measures in B1S mode; 4 values + 1 error + 5 values + 3 errors + 1 value + 1 error + 4 values\n\n\n## License; Free and Open Source\n\nSeiko converter is released under the AGPL (Affero General Public License).\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Seiko Converter is a software allowing to generate graphs based on the raw data produced by the Seiko Qt-2100 Timegrapher device.",
    "version": "1.0.0",
    "project_urls": {
        "Homepage": "https://github.com/ysard/seiko_qt2100_converter"
    },
    "split_keywords": [
        "printer",
        " seiko",
        " timegrapher",
        " chronograph",
        " seiko qt-2100",
        " centronics",
        " serial",
        " parallel"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5349aab936a8ddcb44ac5ded002c205d1fc552a311730e807d11048a1169a814",
                "md5": "3016ffe6701b33eadaeca31a88d3b171",
                "sha256": "6948bb92ac4419304a6dd6d84ba2a1b0e69aa6733223f7ef59d82350bb49ebab"
            },
            "downloads": -1,
            "filename": "seiko_converter-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3016ffe6701b33eadaeca31a88d3b171",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 29245,
            "upload_time": "2025-02-04T03:44:13",
            "upload_time_iso_8601": "2025-02-04T03:44:13.371267Z",
            "url": "https://files.pythonhosted.org/packages/53/49/aab936a8ddcb44ac5ded002c205d1fc552a311730e807d11048a1169a814/seiko_converter-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b24dbb9efd93ae1639516ac43e822b32a947f201ea629eecc5ac55e4a84a7c7b",
                "md5": "5d26dbf91513801e588c494c11f63204",
                "sha256": "2ade43ebdfd5876026251e171c499fb3d9505d53aedf58c0c0336962dee6f828"
            },
            "downloads": -1,
            "filename": "seiko_converter-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "5d26dbf91513801e588c494c11f63204",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 28248,
            "upload_time": "2025-02-04T03:44:15",
            "upload_time_iso_8601": "2025-02-04T03:44:15.465585Z",
            "url": "https://files.pythonhosted.org/packages/b2/4d/bb9efd93ae1639516ac43e822b32a947f201ea629eecc5ac55e4a84a7c7b/seiko_converter-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-04 03:44:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ysard",
    "github_project": "seiko_qt2100_converter",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "seiko-converter"
}
        
Elapsed time: 0.73815s