Open rowlesmr opened 1 year ago
What is the correct way to define a data item that is used to point to another place which contains the information you're after?
The first thing to do is to not think in terms of "pointing" to a "place" that "contains" something. Instead, you are simply "identifying" something - a diffractogram, or a phase, or an instrument, etc. So your first definition (the current one) seems correct to me.
The example also seems correct to me. It is a little strange to think that _pd_qpa_external_std.diffractogram_id
has the value SRM676A
, but I guess it makes sense to say that it is also calibrating itself, as well as being used by other diffractograms.
# _pd_qpa_external_std.diffractogram_id gets the value "SRM676A"
# solely due to the fact that _pd_diffractogram.id exists in this
# block, and has the value "SRM676A"
It is a little strange to think that
_pd_qpa_external_std.diffractogram_id
has the valueSRM676A
To my mind, the SRM676A diffractogram owns the calibration value, and all other places are merely borrowing it.
Now that I think about it, as you need to collect the unknown data under identical circumstances, isn't the calibration owned by the diffrn.id
? And then you need a seperate (hypothetical) _pd_diffrn.spec_id
to identify each specimen for each diffraction experiment?
.
I don't know if I'm breaking out of my baliwick, but I'm trying to think up how to make a collection of powder CIF blocks into a single set of database tables, rather than a separate set for each block, and so I need to be able to uniquely identify things.
I think PD_DIFFRACTOGRAM
just needs a pointer to _diffrn.id
, and then we have identified the conditions under which a diffractogram was measured. Sort of puzzled we don't have that yet, unless there's an indirect link.
Anyway, with that in place, SRM676A
has a well-defined _diffrn.id
, as do all other diffractograms, and they may differ slightly. A validation routine can decide if the variance is acceptable.
Not sure about the spec_id
suggestion. The DIFFRN
category does have a pointer to _exptl_crystal.id
, which makes the particular crystal a part of the diffraction conditions, so by analogy spec_id has a place there as well. But spec_id is already pointed to by PD_DIFFRACTOGRAM
so is already taken care of, I think.
This was raised in the third dot point of @vaitkus https://github.com/COMCIFS/Powder_Dictionary/pull/161#issuecomment-1606398139
What is the correct way to define a data item that is used to point to another place which contains the information you're after?
In the example below, there is a diffractogram with
_pd_diffractogram.id
having the value ofDIFFRACTOGRAM_0020
. It was quantified by the external method using the information contained in thePD_QPA_EXTERNAL_STD
category data items (ie the K factor and standard MAC) associated with the key_pd_qpa_external_std.diffractogram_id
which has the valueSRM676A
.I've currently indicated that by having
_pd_qpa_external_std.diffractogram_id SRM676A
given inside the block containingDIFFRACTOGRAM_0020
. The definition of_pd_qpa_external_std.diffractogram_id
is below.Is this the correct way to do it, or should there be another data item used to point? Something like
where it isn't linked, but does
Encode
a diffractometer_id in order to find all the information?