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)
11619
23810
371.190
4151.993
5313.754
6637.308
712715.255
825533.856
951171.934
101.023147.968
112.047324.585
124.095686.887
138.1911.414.417
1416.3832.914.000
1532.7676.073.437
1665.53512.416.595
17131.07126.044.474
18262.14355.914.815
19524.287116.530.073
201.048.575237.466.794
212.097.151502.174.419
224.194.3031.043.551.263
238.388.6072.127.238.685
2416.777.2154.340.520.666
2533.554.4318.930.571.411
2667.108.86318.123.205.941
27134.217.72737.572.861.640
28268.435.45578.980.460.645

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.
Update 2013-03-09: The numbers in the table are those for GedFan 0.2 now.

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 0.1 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.
Update 2013-03-08: GedFan 0.1.7.0 uses Windows high-resolution performance counters when available.

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.

updates

2013-01-11: WWW tag

Fan Value and the WWW Tag discusses the use of the WWW tag within the fan files.

2013-03-09: GedFan 0.2

GedFan version 0.2 takes advantage of Windows high-resolution performance counters when available to report more accurate timings, and shows a simple progress bar. The progress bar is always shown, but only stays on screen long enough to be noticed for large file.
The maximum number of generations has been increase from 24 to 28. GedFan 0.2 allows creation of FAN files up to FAN28.GED, a 28-generation tree containing 268.435.455 individuals. The FAN28.GED file is more than 73 GB (and 78 GiB) large.

links