The author considers the Python language the best general-purpose programming currently available. This section describes a Python-language module suited for putting a firm taxonomic foundation under bird records work.
Python module txny.py provides access to an XML taxonomy
file as described above under Section 8, “Schema for the XML product file”. It
insulates you from the XML files, providing attributes and
methods that allow you to look up bird codes and other
common operations in bird records management.
To use this module, import it like this:
from txny import *
Here are the exported classes available in the txny.py module.
Normally the first thing you'll do is instantiate a
Txny object, which represents
the entire system—taxonomy and bird codes:
Txny ( dataFile=None )
Reads the XML data file and returns a Txny object representing that file.
If no argument is supplied, this constructor looks
for a file named aou.xml in
the current directory.
If there is no readable, valid XML file, the
constructor raises an IOError
exception.
Attributes of a Txny object include:
.root
The root taxon of the taxonomic arrangement, as a
Taxon object. See
Section 9.4, “The Taxon class: One node in the
classification tree”.
.hier
Contains a Hier object
representing the set of taxonomic ranks used. See
Section 9.2, “Class Hier: The set of
taxonomic ranks”.
Methods on a Txny object include:
.lookupTxKey(txKey)
Looks for the taxon corresponding to taxonomic key number
txKey and returns it as a
Taxon object. Raises a
KeyError exception if the
arrangement has no such key.
.lookupSci(sci)
Looks for the taxon whose scientific name matches
sci, and returns it as a
Taxon object. This is a
case-sensitive comparison. If there is no taxon in
this arrangement with the given scientific name,
raises KeyError.
.lookupAbbr(abbr)
Looks for the taxon that is equivalent to bird code
abbr, and returns it as a
Taxon object.
.lookupCollision(abbr)
If abbr is one of the bird
codes disallowed because it is a collision, this
method returns a list of the valid substitute
codes. For example, this call
txny.lookupCollision("BAROWL")
would return the list ["BRDOWL",
"BRNOWL"].
Raises KeyError if
abbr is not a collision
code.
.genTxKeys()
Generates the taxonomic keys in the arrangement in ascending (phylogenetic) order, as strings. In case you are not familiar with Python generators, a relatively new language feature, see Python 2.2 quick reference under the section “Recent features.”
.genAbbrs()
Generates the valid bird codes in self, in ascending order, uppercased.
.abbrToEng(abbr)
Returns the English name from which the given
abbreviation abbr was
derived. Raises KeyError if abbr is not valid.
.abbrToTeX(abbr)
Returns the English name from which the given
abbreviation abbr was
derived, marked up for TeX. If there is no
specific TeX markup, it returns the English name as
regular text. Raises KeyError if abbr is not valid.
Here's a brief example. Assume you have a taxonomy file
named aou.xml in your directory,
and you want to print out the scientific name and English
name corresponding to the code 'GOCKIN'. This code would do the trick:
from txny import * txny = Txny ( 'aou.xml' ) taxon = txny.lookupAbbr ( 'gockin' ) print "%s [%s]" % (taxon.eng, taxon.sci)
This will print the line:
Golden-crowned Kinglet [Regulus calendula]