Announcing the beta release of PalmKey version 1.0

Where better to have an interactive identification tool than in the palm of your hand, in the field? The PalmPilot is the perfect platform for such a tool. I have developed a simple interactive key application that enables the recursive elimination of taxa with successive choices of characters and their states. PalmKey follows in the line of tools such as DELTA's INTKEY, and LucID, but was coded from scratch. The initial release includes the following features: This software is postcard-ware: free to use and distribute, but a postcard sent to Cam Webb, 22 Divinity Ave., Cambridge, MA 02138, USA, would be much appreciated! In addition, if you develop a dataset for PalmKey, please let me know, and I will post a link on this page.


Using PalmKey

  1. Download the ZIP compressed files, and uncompress with your favorite archive tool.
  2. Install the following files onto your Palm: PalmKey.pdb (the main application), PalmKeyPRC.prc (the LaunchPad icon), PocketC.prc (the PocketC runtime engine - NB: Do Not Install this, if you already have a full version of PocketC on your Palm), NEwoody.pdb (a test database file).
  3. Start PalmKey from the LaunchPad, and enter the name of the database you want to use (minus the .pdb extension).
  4. Tap on a character to use, then select the state from the pop-up menu.
  5. Repeat until there is one taxon left!
  6. The `Un' button undoes the last choice, and the `Re' button restarts the routine, using the same database. `Q' quits the app.

Database Format

Developing your own datasets is easy. A data matrix can be constructed either on a desktop, using a standard spreadsheet program, saving as a CSV file (see example), and converting to a JFile database using any of the conversion tools listed on their website (I use jconv for Linux), or in JFile itself. The format is:

  1. JFile field types are all strings.
  2. Field headings in JFile database (or first line of spreadsheet, if not using JFile directly): [COL 1 =] `Name', [COL 2 =] `c1', [COL 3 =] `c2', [COL 4 =] `c3' ... (actually not used by program, so not vital).
  3. First line: [COL 1 =] `00. Chars', [COL 2 =] `01. ' Character 1 name, [COL 3 =] `02. ' Character 2 name, [COL 3 =] `03. ' Character 3 name ... (items in quotes must be entered exactly; character names must be 10 characters or less long).
  4. Second line: [COL 1 =] `00. States', [COL 2 =] `1. ' Character 1, state 1 name `,2. ' Character 1, state 2 name , `,3. ' Character 1, state 3 name, (etc.) [COL 3 =] `1. ' Character 2, state 1 name `,2. ' Character 2, state 2 name , `,3. ' Character 2, state 3 name, (etc.) ...
  5. Third line (first data line): [COL 1 =] `01. ' Taxon 1 name, [COL 2 =] `1' or `2' or `3' ... or `1/2/3' ... or `?' ... or `x' (state of character 1 for taxon 1, see below), [COL 3 =] `1' or `2' or `3' ... or `1/2/3' ... or `?' ... or `x' (state of character 2 for taxon 1), etc.
  6. Forth line: [COL 1 =] `02. ' Taxon 2 name, [COL 2 =] `1' or `2' or `3' ... or `1/2/3' ... or `?' ... or `x' (state of character 1 for taxon 2), [COL 3 =] `1' or `2' or `3' ... or `1/2/3' ... or `?' ... or `x' (state of character 2 for taxon 2), etc.
  7. And so on ...
  8. A single state is coded as a single number. Multiple states are coded as single numbers separated by a `/' character. An unknown state is coded as a `?', and a state that is not applicable to a particular taxon is coded as `x'. Note that a non-applicable character will lead that taxon to be excluded if that character is queried.

Watch this space...

I'm working on parsing scripts to convert DELTA format files, NEXUS format files and LucID format files to PalmKey format. I'll post them as soon as they are done. In the meantime, it is a simple (but laborious) matter to convert files by hand: use the internal converter programs (e.g. CONFOR in DELTA) to dump the data matrix into a table (COLS = characters, ROWS = taxa). Use search and replace to recode unknowns and N/As. Enter the character names, and state names into the first two rows, by hand.

Eventually, I will code PalmKey as a standard stand-alone application (using CodeWarrior), but the investment in time to learn how to do this appears great (PocketC is a great, fast development tool!). If anyone wants to help with this, please let me know!


Bugs reports, and suggestions for new features

Please send to me, Cam Webb, at [email protected].



Thanks to...


Download PalmKey v1.0b


A PalmKey screen shot:



NEW! Trees of Borneo

Data thanks to Jim Jarvie. This is a subset of the full DELTA dataset, with only 28 vegetative characters. The taxa are split up into 5 files, based on major characters: The speed of sorting is laughably slow, but it works. I need to optimize the code more. Download it now!



1