Splitter

Introduction

The Splitter module extends Parser and creates a new GEDCOM including only a specific person, their descendants, their descendant’s spouses and their descendant’s spouses’ parents. Many software packages can export descendants and spouses, but do not include in-laws. Splitter completes the following steps when creating a new GEDCOM:

  • Identify specific person that will be the root ancestor

  • Identify the following people related to the root ancestor:

    • Spouse(s) and their parents

    • Descendants

    • Spouses of descendants and their parents

    • Parents of descendants (should there be no marriage) and their parents

  • Remove anyone from the tree who was not identified in the previous step

  • Identify and remove any sources that are no longer referenced by remaining people

  • Identify and remove any repositories that are no longer referenced by remaining sources

  • Identify and remove any objects that are no longer referenced by remaining sources or people

Splitter modifies the tree in the computer’s memory. This tree must be saved to create a new GEDCOM file. If the removed information is needed, the tree must be parsed again.

There are three ways to use the Splitter module:

  • Use the Splitter app

  • Run the module from the command line

  • Incorporate it in into new Python program

Running Splitter

Python

The following code parses a GEDCOM, locates a person and creates a new GEDCOM based on that person’s descendants.

from gedcom.utilities.splitter.splitter import Splitter
from gedcom.element import individual

from gedcom.element.individual import IndividualElement

import gedcom.tags

# Path to your ".ged" file
file_path = ''

# Name of your ".ged" file
file_name = ''

# Name of your new ".ged" file
output_file_name = ''

# Initialize the parser
parser = Splitter()
parser.parse_file(file_path + file_name)

# Use criteria to find person.  Only one field is required.  The search returns the first match.
criteria = "given_name=[first name]:surname=[last name]:birth=[birth year]:death=[death year]"
ancestor = parser.find_person(criteria)

if ancestor == "":
    print('Person not found')
else:
        parser.split_gedcom(ancestor)
        parser.write_file(output_file_name)

Command Line

python splitter.py -i <gedcom-input-file> [-h | -b <year-of-birth> | -d <year-of-death> | -g <given-name> | -l <last-name> | -o <gedcom-output-file> | -n]

Options and arguments (and corresponding environment variables):

-b : root person's year of birth
-d : root person's year of death
-g : part of all of the root person's given name
-h : print this help message and exit
-i : file name of the source GEDCOM file
-l : part of all of the root person's last name
-n : exclude father-in-law and mother-in-law of descendants
-o : file name of output GEDCOM file; if not included, adds "_split" to the input file name
-s : does not enforce strict parsing of GEDCOM file

With the App

python app.py

File in the required fields and press Submit.

images/splitter.png