Lifelines Scripts Emulation in GEDitCOM II

Introduction

Lifelines was written by Tom Wetmore in the early 1990's and is currently available under an MIT-style license. The important features of Lifelines are that it is based on the GEDCOM standard and it is scriptable. These are also two things Lifelines has in common with . Lifelines is a Unix-based command-line tool. Wouldn't it be nice to have Lifelines scripts available in a more modern user interface? This extension answers that question by providing translations of selected Lifelines scripts to versions that can run in .

This extension uses Python scripting options for GEDitCOM II to provide a platform for emulating the Lifelines scripting language. The core of the emunlation is a lifelines.py Python module (included in this extension) that allows many Lifelines commands to work the same way in converted Python scripts, Because of syntax differences between Python and Lifelines scripting, it was not possible to provide 100% emulation. Nevertheless, with a few changes in syntax and commands, it is relatively east to convert existing Lifelines scripts to Python scripts for GEDitCOM II.

Before Continuing: Because this extension relies of Python, it requires GEDitCOM II. You can get Lifelines emulation using Internal Scripting instead by installing the "Lifelines (Internal Scripting)" extension. The Internal Scripting versions run much faster than the Python versions and they work in both GEDitCOM II and GEDitCOM.

Lifelines users have created a number of useful scripts. This extension includes translations of some of those scripts to now run in GEDitCOM II. Even if you have no interest in Lifellines or in its scripting language, you can use these translated scripts as new features for GEDitCOM II.The translated scripts are described in the section section.

If you are a Python programmer, this extension includes copies of many more original Lifelines scripts potentially to be translated for GEDitCOM II. See the help on Lifelines emulation to learn how to convert more Lifelines scripts into Python scripts and to learn about the Lifelines scripting language.

Translated Lifelines Scripts

This section describes selected scripts from Lifelines that have been translated to Python scripts for GEDitCOM II. To run any already-translated script in GEDitCOM II, choose the "Lifelines (Python)" menu command from the Extensions→Lifelines submenu. You will get a list of the scripts decribed below. Pick one and click "OK" to run it. The list below has the script name used in this extension (in alphabetical order) along with the original Lifelines file name followed by and a brief desciption. Note that many of these scripts have also been translated to Internal Scripts that run faster than Python scripts. You can run those instead by installing and then choosing "Lifelines (Internal Scripting)" menu command instead from the Extensions→Lifelines submenu.

Ahnentafel ancestors report (ahnentafel.ll)
A report of ancestors using the Ahentafel numbering system. The script uses a clever and efficient method to iterate through all ancestors. has an "Ancestors (Ahnentafel)..." option in the Reports menu as wells as an "Ahnentafel Report" extension. Both options give a more elaborate report and use styled text.
Ancestor coverage report (coverage.ll)
Displays "ancestor coverage," or the percentage of ancestors that have been discovered for each generation back in time.
Ancestral lines of an individual (showlines1.ll)
Shows paternal ancestors of an individual and then for each mother in the maternal line, shows their paternal lines. Blocks of ancestral lines are separated by report lines.
Ancestors list sorted (ancestors2.ll)
A report of all ancestors of an individual including birth and death dates. The output is sorted by name.
Chart of surnames and soundex codes (soundex.ll)
A table of all unique surnames in the file along with their soundex codes.
Count number of unique ancestors (count_ans.ll)
Count all unique ancestors of selected individuals. The output lists number in each generation and total for all generations.
Count number of unique descendants (count_desc.ll)
Count all unique descendants of selected individuals. The output lists number in each generation and total for all generations.
Count paternal descendants (count_paternal_desc.ll)
Counts paternal descendants of a person by generation. Only unique individuals in each generation are counted. A person counts in all the generations he/she is in, but only counts once in the grand total. Male paternal descendants are also counted separately.
Descendants of an individual (bkdes16-1.ll)
A compact report of all descendants of an individual. Each descendant is on a single line with indents using "." and "*" to indicate generation numbers. The script is hard-coded to a maximum of 15 generations. has two extensions for fancier reports on descendants. They also have options to export the report to an MS Word or a Pages document with styled text.
Descendants of an individual with children under spouses (pdesc1.ll)
Descendant report for a selected individual. Children of each spouse are printed below that spouse. has two extensions for fancier reports on descendants. They also have options to export the report to an MS Word or a Pages document with styled text.
Family group chart (fam10c.ll)
Family group report suitable for printing on a single page.
Family group chart with more details (fam16rn1.ll)
Produces a family report of the person (husband), wife, their children, and some data about the children's marriages. It is designed for printing on a single page.
Find nonpatronymic inheritances in the database (nonpatronymics.ll)
Find all cases of nonpatronymic inheritances in the database. If the child's surname is not identical to the father's surname, print both out. If the two surnames have different soundex codes, undent the printout. Print statistics at the end.
Formatted GEDCOM for individuals and families (formatted_gedcom.ll)
GEDCOM data for all individuals and families formatted with delimiters and indents (it is not a GEDCOM file because it only has individual and family records and delimiters between records are not allowed in GEDCOM files). has built options for exporting valid and complete GEDCOM files.
Four generation chart (4gen1.ll)
A four-generation chart for a selected individual that is suitable for printing on a single page. The "Basic Charts and Reports" extention for has two versions of this report. One uses graphical method to connect the generations with lines.
Index of all persons in the database (index1.ll)
A table of all individuals in the file with birth and death dates sorted by last name.
Index of all persons including maiden and married names (index_mm.ll)
Index of everyone in a database, with women listed by both maiden name and married name. It assumes that all women take the surname of their husbands, which is not always correct.
Marriages sorted by husband's name (marriages1.ll)
List all marriages that have two spouses and marriage date (if known). The list is sorted by husband's name. Husbands with more than one wife will show them on extra lines,
Pedigree chart with all generations (pedigreel.ll)
Generates a pedigree chart showing all ancestor generations of a selected individual. If there are many generations, indents will cause the report to need many columns for display (the window will wrap line with long text).
Places in the file along with an event (places.ll)
Prints lines for places in your database along with enough information so you can find the line easily. The purpose of this report is so you can find all the places that seem wrong (misspelled, ambiguous, incomplete, left out the county name, etc.) and double-check them or correct them. Note that has a "Places and Events" report that gives more detail on events for each place, runs much faster, and has formatted display in a table.
Report with two individuals per page (2ppage.ll)
Produce a report of all individuals in the documents organized into two individuals for each page. This report is also available in the "Basic Charts and Reports" extension for .
Sample Lifelines script in quickref.pdf documentation
A translation of the example script in the quickref.pdf documentation file into an Python script for GEDitCOM II.
Six generation chart (6gen1.ll)
A six-generation chart for a selected individual that is suitable for printing on a single page and has blank lines for missing ancestors. To fit six generations, the chart only has names of ancestors. The "Basic Charts and Reports" extensino for has an improved version of this report with more lines connecting generations.
Tiny Tafel report on an individual (tinytafel2.ll)
Each line in a Tiny Tafel represents one surname being researched (with soundex code), along with the time period and geographic location where lines of individuals with that surname lived. Researchers could exchange these compact summaries rather than entire GEDCOM files to quickly identify whether two databases might share common ancestors.