Diagnostics: refinement#
These codes come from a fit: the stages, the guards, the corrections and the report. Each section gives the code’s name, what it means and why it fires, its level, and the source files that raise it. The diagnostic codes page lists every code in one table.
ABSORPTION_MU_R_OUT_OF_RANGE#
Capillary absorption is beyond the fitted range.
The estimated absorption of the capillary lies beyond the range of the published fit used to correct it. The correction is then an extrapolation, so its size is unreliable. Absorption trades against the displacement parameters, so they carry the error. A more dilute specimen, a narrower capillary or a shorter wavelength brings the value back into range.
Level: warning. Raised in rietx/refine.py.
ABSORPTION_PLATE_THICKNESS#
Transmission plate far from its best thickness.
A transmission plate gives the most counts at one thickness, set by its absorption. This plate is well away from it, so the pattern holds fewer counts than the specimen could give. The fit is still valid. A plate closer to the best thickness gives better statistics on the next measurement.
Level: info. Raised in rietx/refine.py.
ABSORPTION_THICKNESS_MATTERS#
Specimen thickness shifts the displacement parameters.
For a flat specimen the absorption correction depends on the thickness you declared. Part of it cannot be absorbed by the scale and the displacement parameters. An error in the thickness or the packing density therefore lands in the fit and in those parameters. The thickness is not refined, so measure it.
Level: info. Raised in rietx/refine.py.
ADP_NOT_POSITIVE_DEFINITE#
An anisotropic displacement tensor is not an ellipsoid.
A refined anisotropic displacement tensor has a negative eigenvalue, so it does not describe an ellipsoid. The Debye-Waller factor then grows without limit at high angle. The data usually do not support that many displacement parameters on the site. Return the site to an isotropic value, or check its occupancy and species, before you quote the tensor.
Level: warning. Raised in rietx/refine.py, rietx/strategy/staged.py.
AIR_SCATTER_UNDECLARED#
Background lacks an air-scatter term.
The spline background declares no term for air scatter. Air scatter adds intensity that rises towards low angle. A refit with the term would remove a measurable share of the misfit with the Bragg model held. Without it, the background can bias the peak intensities at low angle. Declare the term and refit. If the rise is not air scatter, raise the lower limit of the pattern.
Level: warning. Raised in rietx/refine.py.
BACKGROUND_ABSORPTION#
The background can imitate a refined parameter.
The background is flexible enough to reproduce most of the effect of a structural parameter, such as a scale or a displacement parameter. The fit can then trade intensity between them, and Rwp still improves. The scales, displacement parameters and phase fractions come out biased. Stiffen the background, or hold an estimated curve fixed.
Level: warning. Raised in rietx/refine.py, rietx/strategy/staged.py.
BACKGROUND_ORDER_AT_CAP#
Background order stopped at its limit.
The scan for the Chebyshev order reached its largest allowed order. The residual in the peak-free channels was still serially correlated, so the data did not choose the order. Raising the limit does not help, because a peak-shape misfit leaks into those channels at every order. Check whether the background absorbs peak intensity, or switch to the penalised spline background.
Level: info. Raised in rietx/background/select.py.
BISO_NEGATIVE#
A displacement parameter is negative.
A refined isotropic displacement parameter is below zero. No real vibration does that, because the Debye-Waller factor would grow with angle instead of falling. The parameter is absorbing something else. Likely causes are uncorrected absorption or roughness, a wrong species or occupancy, or a background that bends at high angle. Correct that cause, or hold the parameter at a physical value.
Level: warning. Raised in rietx/refine.py, rietx/strategy/staged.py.
BISO_UNUSUALLY_LARGE#
A displacement parameter is implausibly large.
A refined isotropic displacement parameter exceeds the amplitude at which a solid with this cell would melt. That usually points at the model. A wrong species or occupancy, a missing absorption correction or a background that has taken high-angle intensity can all inflate it. A mobile site, such as a cavity cation, can be genuinely this large. Check the model before you read the value as motion.
Level: warning. Raised in rietx/refine.py, rietx/strategy/staged.py.
BOUND_HIT#
A parameter finished on a limit.
The refined value finished on its minimum or maximum, and the data were pushing it further. The number is the limit you set, so it is not a measurement. Look for a correlated parameter or a tie that drives it there before you widen the limit.
Level: warning. Raised in rietx/refine.py.
BRINDLEY_OUTSIDE_REGIME#
Particle absorption correction out of range.
A phase absorbs too strongly for the Brindley correction. The correction is derived for fine to medium powders. Outside that range the corrected fractions can sit further from the truth than the uncorrected ones, while looking more authoritative. Grind the sample finer or use a shorter wavelength. Otherwise quote the uncorrected fractions and name microabsorption as a systematic error of unknown size.
Level: warning. Raised in rietx/optimize/qpa.py.
CELL_DEGENERATE_PROBE#
The search tried a cell with no volume.
During the cell search the optimiser tried trial cells with zero or negative volume. Each trial was rejected and answered with a large residual, so none entered the reported values. It happens when the data barely determine a cell stage. The reported values are unaffected. Many such trials suggest that the data barely constrain the cell.
Level: info. Raised in rietx/refine.py.
CELL_RUNAWAY#
A cell parameter ran away during the fit.
A free cell parameter left its safety window around the starting cell while the solver worked. It is usually degenerate with another free cell or parameter. The phase’s cell was put back to its value at the start of the stage and held while the stage solved again, so the value is not a measurement. When this happens in the final stage, that cell and the parameters tied to it carry no esd. Fix one phase’s cell, hold the other phase, or free the cell in a stage of its own.
Level: warning. Raised in rietx/refine.py.
CONSTRAINT_ACTIVE#
A constraint held the optimum on its edge.
In the final stage the optimiser held some steps against a built-in inequality constraint. Examples are the positivity of the strain broadening and the positive Gaussian instrument width. The optimum therefore sits on or near the edge of the allowed region. The values are admissible but not measured. Start from a different seed and quote the values only if they survive.
Level: info. Raised in rietx/refine.py.
COVARIANCE_DIRECTION_DISCARDED#
A combination of parameters is not measured.
The data do not constrain one combination of several parameters. The solver discards that direction, so each esd in the group comes out too small, by at least a factor of the square root of two. Do not quote these esds as measured. Free fewer of the parameters in one stage, hold the ones you know independently, or widen the fitted range. Esds of other parameters are unaffected.
Level: warning. Raised in rietx/refine.py, rietx/strategy/staged.py.
DATA_SUPPORT_LOW#
Too few observations for the parameters.
The number of independent reflections is low compared with the number of structural parameters refined. A refinement with too many parameters does not fail. It reports large esds, while the count of profile points hides the shortage. Hold the least determined parameters, add restraints, or extend the 2θ range to add reflections. More points across the same peaks do not help.
Level: set at run time. Raised in rietx/refine.py.
DECLARED_RANGE_NOT_RESTORED#
Old parameter left without a range.
An older release stored this parameter with no limits, because it was set by hand. The current release gives such a parameter a default range. A stored value lies outside that range, so the parameter was left as stored and still refines without limits. No value changed. If the value is right, set a range that holds it before the next fit. If it is wrong, do not quote it as a measurement.
Level: warning. Raised in rietx/schemas/migrate.py.
DECLARED_RANGE_RESTORED#
Old parameter given its default range.
An older release stored this parameter with no limits, because it was set by hand. The reopened model gives it the range and unit that the current release declares for it. No stored value moved. A refinement from the reopened model can differ from the original run if the new range binds. Set a range on the parameter to keep a different one.
Level: set at run time. Raised in rietx/schemas/migrate.py.
DISPERSION_NEGLECTED#
Anomalous scattering is switched off.
The model has anomalous scattering turned off, yet at this wavelength it changes the scattering power of at least one element noticeably. The correction is a fixed constant and not a refined parameter. Leaving it out mis-scales every reflection of that element, and unequal effects between phases bias the weight fractions. Turn it back on. If the wavelength sits at an absorption edge, supply measured values.
Level: set at run time. Raised in rietx/refine.py.
EXTRA_PEAK_NO_INTENSITY#
A declared peak refined to zero intensity.
The area of a declared peak finished at zero. A peak reaches the pattern only through its area, so at zero area nothing fixes its centre. The centre and its esd are then not measurements. Either the feature is not in the specimen or the bounds on the centre do not cover it. Drop the peak or move its centre bounds.
Level: warning. Raised in rietx/refine.py.
EXTRA_PEAK_ON_REFLECTION#
A declared peak sits on a modelled reflection.
A declared peak lies close enough to a reflection the model already predicts that the two describe one peak between them. How the intensity divides between the phase and the peak is a degeneracy and not a measurement. That is expected when a holder line overlaps a sample peak. If the peak stands in for a misfitting reflection, fix the phase scale, profile or preferred orientation instead.
Level: warning. Raised in rietx/refine.py.
FLAT_DIRECTION#
Two parameters the data cannot separate.
Two parameters are correlated so completely that the data measure only one combination of them. This is a statement about the rank of the problem and not about a strong correlation. Each esd is conditional on the other parameter being right. Fix one at an independently known value and refine the other, or free them in separate stages. A wider range or a second histogram can separate them.
Level: warning. Raised in rietx/refine.py, rietx/strategy/staged.py.
FLAT_DIRECTION_OMITTED#
Further flat directions not listed.
The data cannot tell some combinations of parameters apart, and the list shows only the strongest of these flat directions. This entry counts the weaker ones left out. Nothing was dropped from the fit. The identifiability record on the result holds the full set.
Level: set by a helper. Raised in rietx/schemas/results.py.
FLOOR_HIT#
A parameter finished at zero.
A scale, a width or a similar quantity finished on its lower limit of zero, because the data push it lower than it can go. The value is a floor and not a measurement of zero. The other esds are marginal over it. Quote an upper limit for the parameter. If it belongs to a phase or term the data do not support, remove it.
Level: warning. Raised in rietx/refine.py.
FROZEN_COMPILE_STALE#
Reported fit statistics differ from the stage’s own.
The final stage fixes its peak windows at the values it started from. At the returned values, those windows give a chi-squared that differs noticeably from a fresh calculation. The reported statistics and curves use the fresh one. The fit is not biased, and the esds are those of the last solve. The history node keeps the earlier figure. If the gap matters, split that stage in two.
Level: info. Raised in rietx/refine.py.
HARMONIC_ABSENT#
A declared harmonic refined to nothing.
A declared wavelength harmonic refined to a fraction indistinguishable from zero. That is a result and not a failure. The beam carries no measurable contamination at that order, as a monochromator with that order extinct should give. Dropping the declaration reproduces the fit with one parameter fewer.
Level: info. Raised in rietx/refine.py.
HARMONIC_FRACTION#
Fraction of a wavelength harmonic in the beam.
A declared wavelength harmonic refined to a measurable fraction of the fundamental. The value describes this beam on this monochromator in this measurement. Do not carry it to another histogram or instrument. A large fraction means the harmonic is absorbing intensity the model puts elsewhere, such as an unindexed impurity or a stiff background. Check the tick marks against the unfitted peaks.
Level: set at run time. Raised in rietx/refine.py.
HARMONIC_HELD#
A harmonic weight was declared but not refined.
The weight of a declared wavelength harmonic was held, so it did not enter the fit. The number you see is the value you declared and not a measurement of the beam. Free the weight in a stage after the profile and the scale have settled to measure it. Until then, do not quote it as a property of the beam.
Level: info. Raised in rietx/refine.py.
HIGH_CORRELATION#
Two parameters are strongly correlated.
Two refined parameters are strongly correlated, so the data constrain their combination better than either one alone. Each esd is larger than it would be if the other were known. You cannot quote the two as independent measurements. Fixing one at a known value, or freeing them in separate stages, shows how much each is determined by the data.
Level: warning. Raised in rietx/refine.py, rietx/strategy/staged.py.
HIGH_CORRELATION_OMITTED#
Further correlated pairs not listed.
Some pairs of parameters are correlated so strongly that their separate values are less reliable. The list shows only the strongest pairs, to stay readable. This entry counts the weaker pairs left out. The fit used all of them. The identifiability record on the result holds the full correlation matrix.
Level: set by a helper. Raised in rietx/schemas/results.py.
HOLD_BLOCKED_PLAN#
A hold overrode part of the plan.
A stage of the plan asked to refine a parameter that you had held. The hold won, so the parameter kept the value you gave it and has no esd. The run did what you declared. The plan therefore did less than its name suggests. If you meant the plan to refine these parameters, release the hold first.
Level: info. Raised in rietx/refine.py.
HUMP_TOO_NARROW#
A background peak has become narrow.
A declared background peak has narrowed towards the instrumental resolution. At that width it is a reflection with no cell or structure behind it. A free peak improves Rwp whether or not anything is there. Background peaks are for diffuse or amorphous scattering, whose width comes from disorder. A real unindexed line needs a second phase. Do not quote the peak parameters.
Level: warning. Raised in rietx/refine.py, rietx/strategy/staged.py.
LEBAIL_ALTERNATION_STOPPED#
The Le Bail passes stopped.
A Le Bail fit alternates between extracting intensities and refining the other parameters. The alternation stops at a fixed point when Rwp no longer falls. If a pass raised Rwp, or the pass limit arrived while Rwp was still falling, the answer depends on the starting state. The kept pass is the best one. Check the cell and the background, or allow more passes.
Level: set at run time. Raised in rietx/refine.py.
LOW_ANGLE_UNMODELLED#
Unexplained signal below the first reflection.
The region below the first reflection has a larger residual than the rest of the pattern. No reflection can explain it, so either the background is wrong there or the data are not usable there. Raise the lower limit of the pattern to where the residual settles, or add the air-scatter term to the background. The two remedies answer different causes, so the package does not choose between them.
Level: warning. Raised in rietx/refine.py.
MAGNETIC_WIDTH_MOVED_MOMENT#
Magnetic broadening changed the refined moment.
Freeing the magnetic broadening moved the refined moment by more than its esd. The width is therefore correlated with the moment, even if its own esd looks large. Holding it at zero puts the moment back where it was, with the bias the width removes. Quote the moment from the stage that freed the width. Give the width as an upper bound and not as a coherence length.
Level: warning. Raised in rietx/refine.py.
MICROABSORPTION_SKIPPED#
Microabsorption correction not applied.
A particle radius was given for at least one phase, but the correction could not run. Typical causes are a phase with no radius, no wavelength, or no attenuation table for the source, or a phase with no weight fraction (no reflection in range, or a scale a stage held), which the mixture’s mean attenuation needs. Without the correction the fractions of strong and weak absorbers are biased. Supply a radius for every phase from microscopy or particle-size analysis, and not from peak broadening; for an unmeasured phase, reach one of its reflections or remove it.
Level: warning. Raised in rietx/optimize/qpa.py.
MODEL_FAR_FROM_DATA#
The model does not describe the data.
Rwp is so high that the model does no better than one that predicts no intensity. This is a mismatch between model and data. The optimiser can still report convergence, because a zero phase scale is a minimum once the peaks sit far from the data. Do not read the parameters or their esds. Check the cell, the wavelength, the zero shift and the 2θ range. Re-index if the cell is in doubt.
Level: error. Raised in rietx/refine.py.
NEUTRON_RESONANT_ABSORBER#
A neutron resonant absorber is in the structure.
The structure contains an element whose scattering length is complex and varies with wavelength near a nuclear resonance. The table carries only the real thermal value. Away from the resonance that value is right. Near it, both the amplitude and the phase of the element’s contribution are wrong, and no agreement index shows it. Check your wavelength against the resonance before you quote an occupancy or displacement parameter on that site.
Level: set at run time. Raised in rietx/refine.py.
OCCUPANCY_ABOVE_ONE#
Occupancy refined above a full site.
A refined site occupancy is above 1, so the model puts more scatterers on the site than it holds. An occupancy has no default upper bound, so the fit was free to go there. This is expected when the occupancy stands in for site scattering: a mixed Fe-Mg site declared as Mg reads about 2.2 at full Fe. Otherwise it usually means a wrong species, a wrong site multiplicity, or a displacement parameter pulling the other way, because the two compete for the same intensity. The fit is not changed.
Level: info. Raised in rietx/refine.py.
ORIGIN_FIXED_ON_POLAR_AXIS#
A floating origin was fixed.
The space group has an axis along which shifting every atom changes no intensity, so the data cannot fix the position along it. The package fixed it by holding one atom’s coordinate or by restraining the weighted centroid of the sites. The other coordinates along that axis are quoted relative to that choice. A held coordinate has no esd. Release the hold only if you accept a flat direction in the fit.
Level: info. Raised in rietx/refine.py.
ORIGIN_NOT_FIXED#
A floating origin could not be fixed.
The space group has an axis along which the whole structure can slide without changing any intensity. The package could not hold an origin there, because no atom has a free coordinate that a shift along the axis moves. The fit keeps a flat direction. The coordinates along that axis are not measurements. Hold what the tied coordinates follow, or tie one of them to a constant.
Level: warning. Raised in rietx/refine.py.
PATTERN_UNDERSAMPLED#
Too few steps across each peak.
The typical peak is covered by too few measured points across its width. The intensities were not sampled finely enough, and nothing done after the measurement recovers them. Integrated intensities, displacement parameters and phase fractions can all be affected. The fit still runs. Measure again with a smaller step.
Level: warning. Raised in rietx/refine.py.
PAWLEY_OFF_DATA_RIDGED#
Pawley intensities taken from the restraint.
Some reflections have no emission line centred inside the fitted data. They stay in the list so that a stage can move them onto the data. A restraint pulls their intensities towards zero, so the value and its esd come from the restraint and not from the data. Do not export or use these intensities. Widen the fitted range if you need them.
Level: info. Raised in rietx/refine.py.
PAWLEY_OVERLAP_UNRESOLVED#
Overlapping Pawley reflections cannot be split.
Several reflections overlap so strongly that the data fix their summed intensity but not how it divides among them. At least one individual intensity has a large relative esd. The split shown comes from the equal-split restraint. Use the summed intensity of the group as the datum. Individual values from the group are not measurements.
Level: info. Raised in rietx/refine.py.
PHASE_UNCONSTRAINED#
The data cannot see this phase.
The scale of a phase is too close to zero for the data to tell it from an absent phase, or none of its reflections lie in the fitted range. Its other parameters were then either refined against nothing or held at the values you supplied. Neither kind of value is a result. Either the phase is not in the specimen and belongs out of the model, or the range must cover a reflection of it. With no reflection in range, the scale is held too, the phase has no weight fraction, and the other fractions are relative to the phases seen in range.
Level: warning. Raised in rietx/refine.py.
QPA_FRACTION_RANGE#
Weight fractions a width profile admits.
Pinning the phase’s peak width at each width on a grid and refitting gives the weight fractions the data admit at a statistically acceptable fit. The value is how far the farthest of them lies from the fit’s fraction, in units of the 95 % interval of the fit’s own esd. Below 1, the profile confirms the esd. Well above 1, the esd describes only the minimum where the fit stopped: the scale of a weak phase trades against its width, and the data do not choose. Then quote the range and the widths that produced it. A width the specimen justifies, a background that takes the broad hump, or longer counting can narrow the range.
Level: info. Raised in rietx/strategy/fraction_profile.py.
RESOLUTION_NOT_POSITIVE#
The instrument width goes negative.
An instrument width is negative somewhere in the fitted range. The Gaussian one is a variance, a quadratic in tan θ, and the model clamps it to a tiny floor and carries on. That reports a resolution far finer than any diffractometer. The Lorentzian one, X/cos θ + Y tan θ, is a FWHM, and a negative one is not a peak shape. Do not quote the widths, or the size and strain derived from them. Refit the resolution on a standard with its certified cell held fixed, or load a measured profile.
Level: warning. Raised in rietx/refine.py, rietx/strategy/staged.py.
RESOLUTION_UNCONSTRAINED#
Resolution refined on a Lorentzian pattern.
The Gaussian resolution terms were refined on a pattern whose peaks are mostly Lorentzian. There the data do not determine them. What they converged to is an artefact of the fit and not a measurement of the instrument. Do not quote the widths, or any size or strain read from them. Measure the instrument on a standard, and hold that profile in this fit.
Level: warning. Raised in rietx/refine.py, rietx/strategy/staged.py.
RESTRAINT_TENSION#
The data disagree with a restraint.
A soft restraint, such as a bond length, finished well away from its target in units of its own uncertainty. The data and your prior knowledge disagree. The fit averages the two. That costs a slightly worse Rwp and hides the conflict. Loosen the restraint, correct its target, or accept that the data should override the prior.
Level: warning. Raised in rietx/refine.py.
RIGID_BODY_MISFIT#
Data reject a rigid body’s shape.
Releasing the body into free atoms, held near the template by restraints, fits the data significantly better than the body does. Two independent tests agree. The body still converged with sensible errors, so the wrong shape went unnoticed. The likeliest cause is the template, such as a wrong bond length or atom assignment. Correct the template before you quote the body’s geometry.
Level: warning. Raised in rietx/report/body_misfit.py.
RIGID_BODY_UNSUPPORTED#
A rigid body motion is not measured.
A free rotation or shift of a rigid body has no effect on the pattern. The usual cause is a turn that moves only zero-occupancy atoms, or a turn about an axis the template is symmetric under. The value and the esds of the body atoms are not measurements. Hold those parameters and refit.
Level: warning. Raised in rietx/refine.py.
ROUGHNESS_ABSORPTION#
Roughness and displacement parameters are entangled.
Surface roughness cannot be separated from the displacement parameters, the scale and the background over this range. The others reproduce most of its effect, or it reproduces theirs. Refining both reports two numbers where the data support one, and the esds understate that. Uncorrected roughness drives displacement parameters negative. Extend the fit to lower angle, where roughness has leverage, or hold roughness at a measured value.
Level: warning. Raised in rietx/refine.py, rietx/strategy/staged.py.
ROUGHNESS_OUTSIDE_REGIME#
Roughness model used outside its valid range.
The Pitschke roughness model holds only above a limiting angle that depends on its parameter. The lowest fitted angle is at or near that limit. Below it the model raises intensity where it should lower it, and close above it the depression turns back. Near the limit the model is empirical, and its parameter is a fitting parameter and not a measured roughness. Restrict the fit to higher angle, or use the Suortti model.
Level: info, warning. Raised in rietx/refine.py.
ROUGHNESS_UNCONSTRAINED#
Roughness has no visible effect.
The refined roughness correction changes the intensity of every modelled reflection by almost nothing. The data cannot see it, so its value is arbitrary. This also happens when the pattern starts too far above the angles where roughness acts. The Suortti form is inert at both extremes of its parameter. It is exactly off at b = 0 and at a = 1, and the esds of the scale and Biso depend on which of the two a fit stops at. Drop the roughness terms, or measure to lower angle.
Level: warning. Raised in rietx/refine.py.
SCALE_B_INSEPARABLE#
Scale and displacement cannot be separated.
Over the fitted range the scale of a phase and its displacement parameters act on the data in the same way. This happens when the phase has few reflections, for example all at one d-spacing. The package held the displacement parameters at the values you supplied. The weight fraction is therefore conditional on those values, and its esd carries none of their uncertainty. Supply the values from elsewhere, or widen the range to a second d-spacing.
Level: warning. Raised in rietx/refine.py.
SIZE_UNUSUALLY_SMALL#
Crystallite size is unusually small.
A phase’s refined size broadening implies a crystallite size below the range seen in solved refinements. Nanocrystalline material can be this small, so the fit may be right. A small size also broadens every line and competes with the background. Check that the broad lines are size broadening and not an unmodelled peak shape, strain, an amorphous component or a second phase. If the size is on its limit, the bound set the width and nothing was measured.
Level: warning. Raised in rietx/refine.py.
SPECIES_FALLBACK_NEUTRAL#
An ion was scattered as a neutral atom.
The ion named for a site has no entry in the form-factor table. The model scattered it as the neutral atom. Its electron count differs. Every reflection that site contributes to is off by that fraction. Occupancies, displacement parameters and phase fractions are biased together, with little change in Rwp. Accept the neutral atom as the model, or substitute a tabulated ion of the same element with a nearby charge.
Level: warning. Raised in rietx/refine.py.
STAGE_FREES_MAGNETIC_WIDTH_WITH_MOMENT#
Magnetic width and moment freed together.
A stage frees the magnetic broadening in the same stage that first frees the moment. Both lower the height of the calculated magnetic peak, so from a cold start they trade against each other. Neither refined number measures its own quantity. Refine the moment with the widths at zero, then free the widths beside the converged moment, then free both together.
Level: warning. Raised in rietx/refine.py.
STAGE_MAX_ITER#
A stage stopped on its iteration limit.
A stage ran out of iterations before it converged. The result reports the status of the last stage only, so it can read as converged while an earlier stage did not. The parameters freed in that stage are probably degenerate. Free fewer at once, or look for a correlation or a bound hit in the same stage. More iterations do not find a different minimum.
Level: warning. Raised in rietx/refine.py.
STAGE_PATH_NOT_FREE#
A stage named a fixed parameter.
A stage asked to refine a parameter that symmetry or the model fixes, or that follows another parameter. Nothing was freed for it, yet the fit converged. The parameter kept its value. Free the parameter it follows, or for a coordinate free the directions that the site symmetry allows. If the model holds it fixed, there is nothing to refine.
Level: warning. Raised in rietx/refine.py.
STAGE_PATH_UNKNOWN#
A stage named a parameter the model lacks.
A stage asked to refine a parameter by a name that no parameter of the model has. The usual cause is a typing slip or a retired spelling. Nothing was freed, yet the fit converged. A wildcard pattern that matches nothing stays silent, because some models lack a component. Correct the name, or use a wildcard if the stage should reach a component that only some models declare.
Level: warning. Raised in rietx/refine.py.
STEPHENS_STRAIN_NOT_POSITIVE#
Anisotropic strain coefficients are unphysical.
The refined anisotropic strain coefficients give a negative variance at some reflections. A variance cannot be negative, so the coefficients lie outside the physical set. Those reflections receive no strain broadening, and nothing else says so. A negative value is not evidence of large anisotropy. Restart from the isotropic limit, refine fewer strain terms, or extend the fitted range. Do not quote the coefficients.
Level: warning. Raised in rietx/refine.py, rietx/strategy/staged.py.
STRAIN_UNUSUALLY_LARGE#
Strain broadening is unusually large.
A phase’s refined strain broadening is far above the range seen in solved refinements. It is physically possible, so the fit is finished and may be right. A strain this large reaches across the pattern and competes with the background and with overlapping phases. Check that the broad lines belong to this phase and not to an unmodelled peak shape, an amorphous component or a second phase. If the strain is on its limit, the bound set the width.
Level: warning. Raised in rietx/refine.py.
TEXTURE_NOT_POSITIVE#
Texture series gives a negative pole density.
The truncated spherical-harmonics series goes below zero somewhere on the sphere. A pole density cannot be negative, so the coefficients lie outside the physical set. You cannot quote them as a pole density. The result is no evidence that the specimen is textured. Lower the order, or hold the highest terms. The default solver keeps the density positive at the reflections.
Level: warning. Raised in rietx/refine.py, rietx/strategy/staged.py.
WAVELENGTH_CALIBRATION#
A refined wavelength moved from its declared value.
You freed the wavelength, and it moved from its declared value by the amount shown. The shift measures the calibration error of the monochromator against the cell that was held. A shift inside its own esd measured nothing. A shift beyond the beamline’s known drift more likely points at a modelling error, such as an unmodelled harmonic or a zero shift traded against the wavelength. Compare it with the calibration history before you quote the cell.
Level: info. Raised in rietx/refine.py.