Modern Software Experience

2011-05-14

GedFan Logo

The GEDCOM Fan Creator

GedFan

I just released GedFan, The GEDCOM Fan Creator. GedFan is a utility I created wrote to generate ancestral fans in GEDCOM.

You may have seen one such ancestral fan before. I created one about a year ago, and used it for the fan charts shown in Extended Fan chart and Fan Chart Plus, the articles that introduced two techniques for displaying more individuals on a fan-chart based exhibit. Below is one of the images from those articles, a 5-generation fan chart displaying the AhnenNumbers database.

Back then, I had manually created AhnenNumbers.paf, an eight-generation (255 individuals) ancestral fan chart, and exported it to AhnenNumbers.ged. I originally created the AhnenNumber database database for the fan chart articles, but have also used in the Branches 1.0 review.

ancestral fan charts

The AhnenNumbers.ged file and the ancestral fans that GedFan generates are perfect minimal n-generation ancestral fans; they contain nothing but the proband and n-1 generations of ancestors for the proband, so that you can display a perfect n-generation fan chart; n complete generations, without a gap in the display, without individuals in earlier generations, and free of any pedigree-collapse issues.

A regular fan chart is rarely so regular; a real-life fan chart is rarely so uniform. A real-life ancestral fan is likely to lack relatively recent information for some branches, while sporting a line back to Carolus the Great on another branch. Pedigree collapse is a common issue, leading to repetition within the fan chart. All those irregularities make a regular fan chart an informative display of ancestry; it provides a quick overview and focusses attention on particular branches or the lack thereof. The fan chart serves the data so well, that when we want to focus on the fan chart itself, the genealogy may easily become a distraction. That is why, when I wanted to introduce extended fan charts, I first created the AhnenNumbers database.

Legacy Charting: AhnenNumbers

AhnenNumbers

The AhnenNumbers database I created last year is an 8-generation ancestral tree, in which every individual has their ahnen number as their name. The proband has ahnen number 1, so the proband is called One. The second generation, the father and mother, are called Two and Three respectively. The third generation, the grandparents, are called Four, Five, Six, and Seven. Etcetera. The eight generation starts with Hundred and Twenty Eight, and ends with Two Hundred and Fifty Five.

PAF: AhnenNumbers

The AhnenNumbers database is a practical demonstration database; one that has unique names for each individual, but does not otherwise distract from the fan chart.
The Ahnen Numbering article explain ahnen numbering using Eytzinger's original ahnentafel, but the AhnenNumbers database makes it easy to explain ahnen numbers using any genealogy application capable of displaying a fan chart, pedigree, ahnentafel or ahnenlist.

The AhnenNumbers database was created manually, by entering one individual after another. When I decided to create it, I immediately considered the possibility of automating its creation, but it did not seem worth the trouble. Creating the database manually was a bit of a chore, but a lot faster than creating an utility to generate it.
Entering eight generations by hand was doable, but the number of individuals grows exponentially with the number of generations...

GedFan

generationsindividualssizes (bytes)
11524
23715
371.095
4151.897
5313.657
6637.211
712715.157
825533.757
951171.835
101.023147.870
112.047324.488
124.095686.794
138.1911.414.332
1416.3832.913.930
1532.7676.073.398
1665.53512.416.622
17131.07126.044.632
18262.14355.915.234
19524.287116.531.016
201.048.575237.488.784
212.097.151502.218.506
224.194.3031.043.639.544
238.388.6072.127.415.354
2416.777.2154.340.874.110

The GedFan utility automates the creation of perfect ancestral trees containing ahnen number-named individuals.
I just released GedFan version 0.1. That version number tells you everything you need to know about the polish and user-friendliness of this utility; it gets the job done, and that's it.
GedFan version 0.1 is a Windows console application, which means you have to run it from the Windows command prompt.

files

The files that GedFan creates are named FAN1.GED, FAN2.GED, FAN3.GED, etcetera. Each FANn.GED file contains a perfect, minimal n-generation ancestral tree.
GedFan 0.1 allows creation of FAN files up to FAN24.GED, a 24-generation tree containing 16.777.215 individuals. The last surname in that file is Sixteen Million Seven Hundred and Seventy-Seven Thousand Two Hundred and Fifteen.

GEDCOM 5.5.1

The generated file are GEDCOM version 5.5.1 files. Any current genealogy application should be able to read these files, as GEDCOM 5.5.1 has been the de facto standard for more than a decade already.

ASCII

GEDCOM allows several different character encodings, but the file avoids making demands on the supported character encodings by using ASCII, the lowest common denominator.

using GedFan

GedFan is a throwaway utility; you use it to create the FAN files. Once you've created the FAN files, you don't need it anymore. There is no installer, but you don't need to install it, you can use it right away. GedFan is a fairly simple application that does not use the registry and does not require any special privileges. If you know how to use the Windows command line, you know how to use GedFan.

generations

GedFan expects one parameter, the number of desired generations, and then generates a single file. A batch file to generate a lot of files in one go is included in the distribution. The command ALLGEDFAN 24 will execute the GedFan utility 24 times to generate FAN1.GED through FAN24.GED. The FAN24.GED files is more than 4 GB large. You need about 8 GB of free disk space to hold those 24 different FAN the files that GedFan 0.1 creates.

performance

GedFan is moderately fast. On a reasonably modern PC, generation of the FAN24.GED file containing more than 16 million individuals should take less than a minute. That is a file generation speed of more than a quarter million individuals per second. That file is more than 4GB large, but even when generating files that large, Windows Task Manager still shows GedFan to be using not much more than 1 MB of RAM.
GedFan shows tick-based timings when it is done. These tick-based times that GedFan 0.1 shows are expressed in milliseconds, but are not millisecond-accurate. The actual accuracy is about one eighteenth of a second.

tech note

GedFan is written in Standard C++. GedFan 0.1 was compiled with the free Digital Mars C++ compiler, version 8.52.

why

I did not create GedFan because I needed a larger ahnen number-named ancestral tree; the AhnenNumbers database is good enough. I created GedFan in part because I could, but mostly because the files files it creates enable a great test.
The series of increasingly larger files that GedFan generates allow establishing a genealogy application's fan value.

links