@GaryGriffin - I think you misunderstand me…
I’m not talking about any match analyzing result, only the data from each single kit.
But to answer your other question as I understand it:
So in the example you give, I would think this:
-
Joe took the Y37 test 20 June 2007, his kit number at FTDNA is “Kit-123456”
-
You register this as a personal Event in a “Register DNA” - Editor Windows in the Gramplet.
-
The Gramplet creates one Personal Event with the kit number, the company, the type of test, and any other relevant metadata of the test itself. The Personal Event get the name “Y37 - FTDNA - Kit-123456”. The Gramplet add the RAW data (CSV file or other type with the data to the Event, but the sequence data (the data pair) that you write in (or if it get imported as tabular data), get registered as attribute pair on Joe (it should have been triplets, but Gramps Attributes doesn’t support that at the moment), because the data itself is “properties” of Joe.
-
You do the same for Joe’s brother’s Y67, “kit-234567”
-
Then you run an analyze of the kits, the Gramplet creates a shared Event with the date of the day you run the analyzing, names the Event something like “Y-DNA Match Event Y67” with the date of the day it was run, the Kits (kit number or ID) selected is added as Shared Event Attributes,
You add the two kits to the Analyzing Match job, and you will of course get direct matches on those two kits (persons), so they get added to the Shared Event and given a Role Type of “Direct Kit Match Y37” since the match only can be on the “lowest” kit.
Every person that’s in the database that also “should” have this Y-DNA, but do not have a test (kit), get added to the Shared Event with a Role Type “Calculated Match”, and of course the date of the run and all the “metadata” needed.
-
Then you get a kit from Peder Johnsen, its a Y-111 (or something), you don’t have any connections between him and Joe, but you start your Gramplet, add his data, the data get saved as explained in 1-3, Then you want to run a new match analyzing, so you select the other kits you have in your database to this new analyzing event.
-
This new Event get the name “Y-DNA Match Event Y111”, the date of the run, the kits selected are added as Event Attributes to this new Analyzing Event.
You find that there are actually some connections between the three people, so the three will be added to the Shared Event: Joe with a Role type of “Direct Match Y37”, his brother with a Role type “Direct Match Y67”, and Peder will also get a Role type of “Direct Match Y67”.
All the people with calculated matches will be added with the Role Type “Calculated Match”.
All roles are added with the date of the Match Analyze “run day”.
The Gramplet it self can store all its data in the different Shared Events as Attributes, or in it’s own json serialized object in the database, whatever is the best way of doing it.
If it is stored in the Event as Attributes, it can just store all metadata as data pair with a given key name.
The key name can be based on a given ID for each of the “jobs”, so that they are unique.
But since each “Run” get it’s own Event, and the data is stored in the even, each “metadata/gramplet app data” field key name can be the same in any of the Events.
The Gramplet then show a list of all the Kits registered (the Test Events) and all the Analyzing Match Events, with the most significant metadata displayed, i.e. name, data, type.
Two different or multiple tabs, maybe?
The user can of course click on any entry in any list, and view the event and it’s data.
the list can be to the left, and if you click an entry you get the metadata information on the right of the list, or something…
If an user open the Event in the Event Viewer, all the data is manually accessible.
Any visual or textual result should also be added to the Events as media files or as Notes if the Note Gramplet can hold the type of data generated.
But say that the Gramplet can generate a visual SVG Image and/or a tabular report in CSV, PDF, LaTeX, Markdown (or html) of the result, all those reports generated should be added to the event as media, but only once for each event, until any of the Events are altered, say because a correction to the Kit data is done, the reports will stay the same, until any changes.
If a Kit data is altered, this should be marked with a warning somehow.
If the user want to delete some of the “runs” or some of the reports, he can just delete the Analyzing Event, the media files, or whatever the user want to manually delete.
PS. as I started with, it is not how you run the analyzing, how you store the data from the analyzing or how the gramplet works I talked about, only where the DNA Test Digitalized Data was stored (the Data Pair).
Each data pair key name (Attribute name) could be prefixed with the kit number, (used as an unique Gramps ID (not the handler)).
But actually, what the easiest way to name the attributes would be, that I can’t say…
I can NULL and Nothing about DNA, so all my names for events and so is only randomly taken out of thin air
All I was saying is that the digitalized data from the DNA test is personal attributes, just like hair color, height, weight, shoe size, number of toes or any other unique attribute of a person you add…
I’m not a developer, so I don’t know what’s possible or not within the framework for gramplets, I really have no opinion on how you solve the calculations, the GUI, the look and feel, or how you store the metadata and result from the analyzing of matches… Only thing I know is that it’s a lot of data…
Have you looked at the python library lineage, it do a lot of different analyzing and match and merge of datasets… maybe you could use that to use run the different processes, and create a stunning gramplet to display the result? I don’t know what’s possible or not, I only know that there are already at least one python library that already deal with genetic DNA, so maybe you don’t need to implement all the algorithms yourself?
PS 2nd: This is no critic of yours or anybody else’s gramplets, it’s just my logical thoughts about how I think things should be done and my wishes for how something works, not saying anything about what’s wrong or what’s right.
EDIT:
This is also one of those events that will benefit from Main - Sub Events, You register any DNA test KIT as an Event, that will be the main event, then all the different types of tests you can do on the same kit number can be sub-events, so if you first started with a Y37 test it will be a sub-event of the “Kit number 123456” Event, and if you later order additional test on the same Kit, that do not generate a new Kit number, you add those tests as sub-events as well, with all the metadata for each test type that you need…
And the same can be for all Shared Analyzing & Calculation Events, any alternation can generate a new Sub-Event, i.e. if you add a new kit to the job, you run a new job because you have added a lot of new people with DNA data registered to their profile or similar scenarios…
I need to stress that this is just thoughts and ideas, it’s in no form any criticism about any Gramplet or other ways of doing it.