/usr/bin/cclib-get is in cclib 1.1-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
| 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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | #! /usr/bin/python
#
# This file is part of cclib (http://cclib.sf.net), a library for parsing
# and interpreting the results of computational chemistry packages.
#
# Copyright (C) 2006, the cclib development team
#
# The library is free software, distributed under the terms of
# the GNU Lesser General Public version 2.1 or later. You should have
# received a copy of the license along with cclib. You can also access
# the full license online at http://www.gnu.org/copyleft/lgpl.html.
import os
import sys
import glob
import getopt
import logging
from cclib.parser import ccopen
_allowedargs = ['aonames','aooverlaps','atombasis','atomcharges','atomcoords',
                'atommasses','atomnos','atomspins',
                'ccenergies', 'charge','coreelectrons',
                'etenergies','etoscs','etrotats','etsecs','etsyms',
                'enthalpy', 'entropy', 'freeenergy', 'temperature',
                'fonames','fooverlaps','fragnames','frags',
                'gbasis','geotargets','geovalues',
                'hessian','homos',
                'mocoeffs','moenergies','mosyms','mpenergies','mult',
                'natom','nbasis', 'nmo', 'nocoeffs',
                'optdone',
                'scancoords', 'scanenergies', 'scannames', 'scanparm',
                'scfenergies','scftargets','scfvalues',
                'vibdisps', 'vibfreqs','vibirs','vibramans','vibsyms']
def moreusage():
    """More detailed usage information"""
    print """Usage:  ccget <attribute> [<attribute>] <compchemlogfile> [<compchemlogfile>]
     where <attribute> is one of the attributes to be parsed by cclib
     from each of the compchemlogfiles.
For a list of attributes available in a file, type:
     ccget --list <compchemlogfile>   [or -l]"""
def usage():
    """Display usage information"""
    print """Usage:  ccget <attribute> [<attribute>] <compchemlogfile> [<compchemlogfile>]
Try     ccget --help    for more information"""
def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], "hl", ["help","list"])
    except getopt.GetoptError:
        # print help information and exit:
        usage()
        sys.exit(2)
    showattr = False
    for o, a in opts:
        if o in ("-h", "--help"):
            moreusage()
            sys.exit()
        if o in ("-l", "--list"):
            showattr = True
    if (not showattr and len(args)<2) or (showattr and len(args)!=1): # Need at least one attribute and the filename
        usage()
        sys.exit()
    # Figure out which are the attribute names and which are the filenames
    attrnames = []
    filenames = []
    for arg in args:
        if arg in _allowedargs:
            attrnames.append(arg)
        elif os.path.isfile(arg):
            filenames.append(arg)
        else:
            wildcardmatches = glob.glob(arg)
            # In Linux, the shell expands wild cards
            # Not so, in Windows, so it has to be done manually
            if wildcardmatches:
                filenames.extend(wildcardmatches)
            else:
                print "%s is neither a filename nor an attribute name." % arg
                usage()
                sys.exit(1)
    
    for filename in filenames:
        print "Attempting to parse %s" % filename
        log = ccopen(filename)
        if log==None:
            print "Cannot figure out what type of computation chemistry output file '%s' is.\nReport this to the cclib development team if you think this is an error." % filename
            usage()
            sys.exit()
              
        log.logger.setLevel(logging.ERROR)
        data = log.parse()
        if showattr:
            print "cclib can parse the following attributes from %s:" % filename
            for x in _allowedargs:
                if hasattr(data,x):
                    print "  %s" % x
        else:
            invalid = False
            for attr in attrnames:
                if hasattr(data,attr):
                    print "%s:\n%s" % (attr,getattr(data,attr))
                else:
                    invalid = True
            if invalid:
                print
                moreusage()
if __name__ == "__main__":
    main()
 |