-
Notifications
You must be signed in to change notification settings - Fork 4
What makes an instrument? What _is_ a detector in pdCIF? #231
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
What makes an instrument? What _is_ a detector in pdCIF? #231
Conversation
|
Low hanging fruit - need to add:
Questions to think about:
|
PD_INSTR & PD_INSTR_DETECTOR: what _is_ a detector in pdCIF?
As there is a direct link from
As there appears to be no consideration of 2D data in the powder dictionary, I think we are just making explicit what was previously implicit (as @rowlesmr notes above).
Very important question. Is a diffractogram the raw or processed data? Because if the former, there could be many detectors, but if the latter, then we are currently saying there is only one. There is a lot of untangling to do, because I've just realised that PD_DATA/PD_PROC/MEAS/CALC are all supposed to be aspects of one single category with identical key data names. I need to think about it.
If
I think this category should be limited to 1D detectors in the first instance. Although we could think about adding a link from |
I can see how this works where each detector can be said to contribute a diffractogram, such as in a multi-analyser setup, or combination of a mythen and area-detector. But what about the use of detector_id as a proxy of channel in an energy-dispersive detector?
and |
My thoughts as well. |
How does that track if you want to combine several detectors worth of diffractograms into a single one? A la a multi analyser? Or even what I did with my program convas, doing running averages of in situ data (which I don't think is possible to record outside of a text description and just providing proc data) This may also bleed into your response to point 3. A few potentially disconnected thoughts I think of diffractograms in terms of ordered xy files I feed into an analysis/visualisation program; two files, two diffractograms, x is single-valued and always increasing (or decreasing) . They can be processed to combine them for further analysis, producing less diffractograms. Also on tof. In the couple of examples I've seen, each bank of detectors produces a "diffractogram", and many of these are simultaneously analysed to cover a wide d-space range. Although I don't know the processing going on in the background to get that 1d dataset. |
My initial thoughts are I think that |
. Also, the definition of raw here is also up for discussion. Lab XRDs often have strip detectors, so the "raw" data you get off them is already processed to combine the few hundred detectors that exist in "the" detector. And large facilities aren't simpler. |
|
Holy edge cases, Batman! https://pubmed.ncbi.nlm.nih.gov/34429720/ A single physical 2D detector, 9 analyser crystals, 9 2D-regions-of-interest on the physical detector as "virtual detectors". All for one (rather good) one-dimensional diffractogram. |
but if we do that in an imgCIF-sense, we get linked back to |
|
OK. I've gone back to basics to try and figure this out. Axiom:
The deductions that follow:
Linking data to detectors and instrumentsPropose retaining/adding:
How this plays out for linking instrument to data: 1D data
2D data
Notes
Have I missed anything? |
Questions:
To do:
|
The diffrn_detector.id is sufficient, as you point out.
Yes, that looks right.
We are duplicating what is already in imgCIF, so we should probably put it in multiblock as it is more universal than just powder.
That sounds reasonable. |
|
Need to accept COMCIFS/MultiBlock_Dictionary#31 before this one |
|
Should _pd_meas.channel be a Real or Integer? It is designed to refer to a channel or subsection of a detector to which we can apportion an intensity. That would imply integer, but I would like it to be as general as possible. |
Other commits pushed after review
3a2298c to
3d7cc56
Compare
As a rule it is best for an identifier to never contain any other information (because eventually the information content rules it out as an identifier - hkl was used as an identifier, then we got incommensurate structures and multiple measurements. Oops!). So it should be an integer or even opaque code. A |
|
I don't think it should an opaque code, as there is an ordering with channels, this one comes before that one. I'll go with Integer. |
pd_instr.diffrn_id was put in becuase I initially had DIFFRN_RADIATION having a .diffrn_id key
|
I think this is ready to go now, given that COMCIFS/MultiBlock_Dictionary#31 is merged. What's in here?
The |
jamesrhester
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work. As noted in my review comments, there is some finessing going on regarding a change in the way of expressing raw TOF measurements, but it was always a stretch as Vol G 3.3.8.5 notes. Going forward we'll need to use imgCIF pointing to external images to handle the dataset size.
|
I would have made some edits myself but not sure how to make them appear as "suggested edits" rather than new commits to the branch. |
From @jamesrhester 's suggestions
From discussions on what a detector is. See:
#204 (comment)
#204 (comment)
#190
I though I'd pull it out into its own branch so we can have a look at what it would look like.
This is my own summary of what is going on.
The scope of this is "what do we need to define an 'instrument'?", with a specific focus on "What is a detector (in a pdCIF-sense)?"
To my mind, an instrument comprises:
.
This is my own summary of what is going on.
It was kind of precipitated by my asking in #190 if we needed to redefine/extend
DIFFRN_DETECTOR.Initially, @jamesrhester was of the opinion:
where the important change is
but recall that
_pd_meas.detector_idexists, and is a linked dataname to_pd_instr_detector.id; we can loop a (1D) diffractogram by detector as well.From, #204 (comment), we want to preserve backwards compatibility, so we restrict
PD_INSTR_DETECTOR, (or maybe only _pid.id?) to be a 1D detector, especially as the data names inPD_DATAcan only represent a 1D dataset.Apparantly all this taken as a whole means
_pd_instr_detector.id != _diffrn_detector.id, and so_pd_instr_detector.idCANNOT BE a child of_diffrn_detector.id, contrary to James' initial opinion.Questions from @jamesrhester :
_pd_proc.*, 1d diffractogram; perhaps we have a_diffrn_detector.diffractogram_idpointing to the diffractogram that has been derived from this detector?.
On the explicit restriction of
PD_INSTR_DETECTORto be 1D, @briantoby wrote in the PD chapter in Vol G:It is nearly explicit here that (pdCIF) diffractograms are only one-dimensional, which implies 1D (pdCIF) detectors.