File: zyx.py

package info (click to toggle)
avogadrolibs 1.101.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 78,480 kB
  • sloc: cpp: 139,780; ansic: 2,212; python: 1,435; perl: 321; sh: 90; makefile: 46
file content (77 lines) | stat: -rw-r--r-- 2,348 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/python3

#  This source file is part of the Avogadro project.
#  This source code is released under the 3-Clause BSD License, (see "LICENSE").

import argparse
import json
import sys


def getMetaData():
    metaData = {}
    metaData['inputFormat'] = 'xyz'
    metaData['outputFormat'] = 'xyz'
    metaData['operations'] = ['read', 'write']
    metaData['identifier'] = 'ZYX Example Format'
    metaData['name'] = 'ZYX'
    metaData['description'] = "Mostly useless file format that reads xyz-style " +\
                              "files with reversed coordinates. Demonstrates " +\
                              "the implementation of a user-scripted file format."
    metaData['fileExtensions'] = ['zyx']
    metaData['mimeTypes'] = ['chemical/x-zyx']
    return metaData


def write():
    result = ""

    # Just copy the first two lines: numAtoms and comment/title
    result += sys.stdin.readline()
    result += sys.stdin.readline()

    for line in sys.stdin:
        words = line.split()
        result += '%-3s %9.5f %9.5f %9.5f' %\
            (words[0], float(words[3]), float(words[2]), float(words[1]))
        if len(words) > 4:
            result += words[4:].join(' ')
        result += '\n'

    return result


def read():
    result = ""

    # Just copy the first two lines: numAtoms and comment/title
    result += sys.stdin.readline()
    result += sys.stdin.readline()

    for line in sys.stdin:
        words = line.split()
        result += '%-3s %9.5f %9.5f %9.5f' %\
            (words[0], float(words[3]), float(words[2]), float(words[1]))
        if len(words) > 4:
            result += words[4:].join(' ')
        result += '\n'

    return result

if __name__ == "__main__":
    parser = argparse.ArgumentParser('Example file format script.')
    parser.add_argument('--metadata', action='store_true')
    parser.add_argument('--read', action='store_true')
    parser.add_argument('--write', action='store_true')
    parser.add_argument('--display-name', action='store_true')
    parser.add_argument('--lang', nargs='?', default='en')
    args = vars(parser.parse_args())

    if args['metadata']:
        print(json.dumps(getMetaData()))
    elif args['display_name']:
        print(getMetaData()['name'])
    elif args['read']:
        print(read())
    elif args['write']:
        print(write())