GithubHelp home page GithubHelp logo

philippg777 / adis Goto Github PK

View Code? Open in Web Editor NEW

This project forked from smaxtec/adis

0.0 1.0 0.0 93 KB

A python package for parsing and creating ADIS files.

License: GNU Lesser General Public License v3.0

Python 99.10% Ada 0.90%

adis's Introduction

ADIS

A python package for parsing and creating ADIS (Agricultural Data Interchange Syntax) files.

This parser supports Class A ADIS format.

ADIS Standardization document

Wikipedia artice (unfortunately only available in german)

Installation

pip install adis

Examples

Parse an ADIS file and turn it to JSON

# example_adis_to_json.py
from adis import Adis

adis = Adis.parse_from_file("sample.ads")
generated_json = adis.to_json()

print(generated_json)

Prettyprinted output:

[
    {
        "990001": {
            "definitions": [
                {
                    "item_number": "00000000",
                    "field_size": 20,
                    "decimal_digits": 0
                },
                {
                    "item_number": "00000001",
                    "field_size": 9,
                    "decimal_digits": 6
                },
                {
                    "item_number": "00000002",
                    "field_size": 10,
                    "decimal_digits": 0
                }
            ],
            "data": [
                {
                    "00000000": "Euler number        ",
                    "00000001": 2.718281,
                    "00000002": null
                },
                {
                    "00000000": "Pi                  ",
                    "00000001": 3.141592,
                    "00000002": null
                },
                {
                    "00000000": "Gravity on Earth    ",
                    "00000001": 9.81,
                    "00000002": "ms^(-2)   "
                }
            ],
            "status": "H"
        },
        "990002": {
            "definitions": [
                {
                    "item_number": "00000008",
                    "field_size": 10,
                    "decimal_digits": 0
                },
                {
                    "item_number": "00000009",
                    "field_size": 10,
                    "decimal_digits": 0
                }
            ],
            "data": [
                {
                    "00000008": "abc       ",
                    "00000009": "xyz       "
                },
                {
                    "00000008": "def       ",
                    "00000009": "uvw       "
                }
            ],
            "status": "N"
        }
    },
    {
        "990001": {
            "definitions": [
                {
                    "item_number": "00000006",
                    "field_size": 10,
                    "decimal_digits": 0
                },
                {
                    "item_number": "00000007",
                    "field_size": 5,
                    "decimal_digits": 2
                }
            ],
            "data": [
                {
                    "00000006": "         1",
                    "00000007": 1.23
                },
                {
                    "00000006": "         2"
                }
            ],
            "status": "H"
        }
    }
]

Turn a JSON file to ADIS

# example_json_to_adis.py
from adis import Adis

adis = Adis.from_json_file("sample.json")
generated_adis_text = adis.dumps()

print(generated_adis_text)

Output:

DH990001000000002000000000109600000002100
VH990001Euler number          2718281??????????
VH990001Pi                    3141592??????????
VH990001Gravity on Earth      9810000ms^(-2)   
DN9900020000000810000000009100
VN990002abc       xyz       
VN990002def       uvw       
EN
DH9900010000000610000000007052
VH990001         1  123
VH990001         2|||||
ZN

About the ADIS format

Each physical file can contain multiple logical ADIS files, these are represented by objects of the type AdisFile. Each of those logical ADIS files contains one or multiple blocks, these are represented by objects of the type AdisBlock. Each block consists of the definitions for the fields (list of objects of type AdisFieldDefinition) and one or multiple data rows (list of list of AdisValue).

Documentation

This documentation only contains methods that are inteded to be used by the user. Take a look at the docstrings for more information about methods.

Adis

Static methods:

  • parse(text): Creates an Adis object from a text that's in the ADIS format
  • parse_from_file(path_to_file): Creates an Adis object from an ADIS file
  • from_json(json_text): Create an Adis object from a json text
  • from_json_file(path_to_json_file): Create an Adis object from a json file

Normal methods:

  • __init__(blocks): Creates an Adis object from a list of AdisFiles
  • to_json(): Creates a json text containing the files, definitions and data
  • dumps(): Creates a text in the ADIS format
  • get_files(): Returns a list of AdisFiles

AdisFile

Normal methods:

  • __init__(blocks): Creates an AdisFile from a list of AdisBlocks
  • get_blocks(): Returns a list of AdisBlocks

AdisBlock

Normal methods:

  • __init__(entity_number, status, field_definitions, data_rows): Creates an AdisBlock
  • get_entity_number(): Returns the entity number of this AdisBlock
  • get_field_definitions(): Returns the field definitions as list of AdisFieldDefinitions
  • get_data_rows(): Returns the data rows as list. Each data row is a list of AdisValues

AdisFieldDefinition

Normal methods:

  • __init__(item_number, field_size, decimal_digits): Creates an AdisFieldDefinition
  • get_item_number(): Returns the item number
  • get_field_size(): Returns the field size
  • get_decimal_digits(): Returns the number of decimal digits

AdisValue

Normal methods:

  • __init__(item_number, value): Creates an AdisValue
  • to_dict(): Returns a dict containing the item number and value of this AdisValue

adis's People

Contributors

flowolf avatar philipp1221 avatar philippgsmaxtec avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.