Skip to content

v1.1

Choose a tag to compare

@danielnrainer danielnrainer released this 07 Jan 23:57
· 81 commits to main since this release

Release Notes for CIVET v1.1

⚠️ Licensing note (added retrospectively)

This release's pre-built executables bundle PyQt6, which is licensed under the GNU GPL v3 (or a commercial licence from Riverbank Computing). CIVET's own source code is, and always was, released under the BSD 3-Clause licence. As distributed, however, these executables are a combined work with PyQt6 and are therefore subject to the terms of the GPL v3.

From the next release onwards, CIVET uses PySide6 (LGPL v3) instead, so the executables carry no GPL obligations. If the GPL is a problem for how you use CIVET, please use a newer release.

🎯 Major New Features

Enhanced suggestion options for checks

  • Support for several suggested data values: Multiple suggested data values can be specified per data name in .cif_rules files
  • Dropdown menu in field dialogs: Data values can be selected from dropdown menus in the field checking dialogs

Legacy notation as default

  • Legacy formatted CIF data names recommended: Discrepancies and uncertainties surrounding modern CIF data name notation
    • Legacy notation for now the recommended formatting option
    • This will be changed when modern notation (and/or conversion to it) is more robust
  • Warnings displayed for CIFs in modern notation: Procedures that would lead to CIFs in modern notation will result in a warning being displayed

Malformed Field Name Detection and Correction

  • Automatic Detection: CIVET now identifies incorrectly formatted CIF field names that use only underscores instead of the proper category.attribute format
  • Smart Correction: Suggests the correct modern field name by intelligently analyzing the field structure
    • Example: _diffrn_total_exposure_time → _diffrn.total_exposure_time
  • Prevents Duplicates: Fixing malformed fields before validation prevents duplicate entries (one from the original CIF, one added by checks)
  • Manual Access: New menu item CIF Format → Fix Malformed Field Names... for on-demand checking
  • Integrated Workflow: Enabled by default in the pre-check cleanup phase of field validation

✨ User Experience Improvements

Enhanced Validation Workflow

  • Pre-Check Cleanup: New configuration section for automated corrections before validation
  • Clearer Dialogs: Improved button labels in input dialogs
    • Changed "Use Default" to "Use suggested (default) value" for clarity
  • Better Workflow: Malformed field fixes run before standard field checks, streamlining the validation process

Updated Configuration Dialog

  • New "Pre-Check Cleanup" section with "Fix malformed field names" option (enabled by default)
  • Recommended options now clearly marked with bold styling
  • Expanded dialog width for better readability (450px → 500px)

🐛 Bug Fixes

Field Rules Corrections

  • 3DED Field Rules: Fixed flux density unit description
    • Changed from e-/Ų to e-/Ų/s (added time component)

CIF 2 header

  • CIF 2 header by default: A CIF 2 header is now added by default as CIVET strives to adhere to CIF 2 syntax (e.g. UTF8 support)

🔧 Technical Details

New Methods in CIFDictionaryManager

  • find_malformed_fields(content): Scans CIF content for incorrectly formatted fields
  • _guess_modern_equivalent(field_name): Intelligently guesses correct modern field names
  • fix_malformed_fields_in_content(content, fixes): Applies corrections to CIF content

Updated Components

  • config_dialog.py: New pre-check cleanup configuration group
  • main_window.py:
    • New fix_malformed_field_names() method
    • New _fix_malformed_fields_before_checks() workflow integration
    • Added menu action for manual malformed field fixing
  • input_dialog.py: Clearer button text for user actions

🎓 Use Case

This release specifically addresses issues with CIF files generated by data processing pipelines that output field names using incorrect formatting. For example:

Before v1.1:

  • Pipeline outputs: _diffrn_total_exposure_time
  • Validation adds: _diffrn.total_exposure_time

With v1.1:

  • CIVET detects malformed: _diffrn_total_exposure_time
  • Automatically suggests: _diffrn.total_exposure_time
  • User approves correction

🙌 Acknowledgments

Dr Arianna Lanza is thanked for continued testing and feedback.
Dr James Hester is thanked for testing and feedback on many things CIF.

This software was developed primarily using Anthropic's Claude Sonnet 4.5 AI assistant.


Full Changelog: v1.0...v1.1