This project uses semantic versioning. Furthermore, this project provides code that was generated from schemata. Any schema change that introduces a breaking change in the generated code is considered as breaking for the whole project. Additional information is provided below when this occurs (named Breaking schema changes). Most of these occur in experimental categories and are unlikely to affect your code. Breaking API changes will be avoided starting with version 1.0.0.
- ValueKind: resolve
""->ValueKind.NOT_PRESENT
- cif-core:
atom_type_keyremovedcell_formula_units_z:int->floatcell_anglecategory removeddiffrn_radiation_wavelength_idremovedgeom_bond_distance_minrenamed togeom_min_bond_distance_cutoff
- improved builder ergonomics
- added overloads that make it easier to build columns with missing values
- validate that all columns in a category are equal in size
- BCIF writing: fix behavior when the model contains empty categories
- cache results of
DelegatingColumn#getArray()to avoid performance penalty if schema type and actual data type differ (fixes #13)
- cif-core:
- removal of
Atom,CifCore,Diffraction,DiffrnOrient,Display,Model,Publication,Structure, andValencecategories
- removal of
- dependency and schema updates
- cif-core:
- renaming of
atom_sitetensors atom_type_scat_versus_stol_listfrom float to String- drops
citation_author_key - drops
citation_editor_id journal_index_idfrom int to Stringrefln_f_complex_sufrom float to String
- renaming of
- mmCIF/ihm-extension:
- drops
ihm_entry_collection_mapping.id
- drops
- treat numbers that exceed
Integer.MAX_VALUEas String
- harden detection of scientific notation in number type logic
- cif-core:
- dropped
diffrn_standard(duplicate ofdiffrn_standards) and renaming/retyping of several diffraction-related categories
- dropped
- fix text writing when non-English number formats are used on the platform
- fix test failures on Java 17 (subtle gzip differences, #12)
- schema update (mainly description in EM sub-schema)
- write
nullinstead of empty map if all values are present and no mask is needed - otherwise other software might refuse to load files written by ciftools-java
- fix encoding classification when converting text to binary without schema
- update gson dependency to 2.8.9
- mmCIF/modelCIF:
ma_protocol_step.method_type_other_details->ma_protocol_step.details
- cif-core:
- case changes for many column names, this affects Java access methods unless explicitly aliased by the dictionary
- changes to handling of value ranges and standard uncertainty values (e.g. for melting points & temperature values in
chemicalcategory) citation_journal_issuechanged from int to String typecitation_yearchanges from String to int type
- proper handling of strings such as:
''cytochrome P450
- add support for the CIF model extension (https://raw.githubusercontent.com/ihmwg/MA-dictionary/master/mmcif_ma.dic), relevant for AlphaFold models and other predicted structures
- names in cifcore implementation now follow spec and are case-insensitive
- mmCIF:
em_focused_ion_beam.durationchanged from int to float typeem_map.symmetry_space_groupchanged from String to int typepdbx_struct_ncs_virus_gen.oper_idchanged from String to int typestruct_ncs_ens_gen.oper_idchanged from String to int typestruct_ncs_oper.idchanged from String to int type
- cif-core:
- case changes for many column names, this affects Java access methods unless explicitly aliased by the dictionary
atom_type_scat_versus_stol_listchanged from String to float typemodel_site_adp_eigen_systemchanged from String tomodel_site_adp_eigenvaluesandmodel_site_adp_eigenvectorsof float type
- expose #getColumnNames for categories
- minimized overhead by schema validation that implicitly happens when files are requested in a certain schema (previously validation would trigger decoding of all columns)
- overflow could result in allocation of arrays with negative size
- avoid enigmatic NullPointerException for #values() of empty columns - now returned Stream will be empty
- mmCIF: changes to IHM, EM, and branched entities (see https://github.com/rcsb/ciftools-java/commit/caf1bd678dc89d73291e344e2c8ec999735ffc87)
- stable release that targets Java 11
- reintroduce Java 8 support
- schema now validates that it is compatible to the provided
CifFileinstance
- added
SchemaProvider#validate(CifFile)that allows providers to set up hooks for validation - introduces custom exceptions
- accessing an empty column throws
EmptyColumnException - trying to apply an incorrect schema to a file throws
SchemaMismatchException
- accessing an empty column throws
- adds missing cifcore categories/columns
- access to (primitive) data array for all columns
- renames #getBinaryDataUnsafe to #getArray
- adds support for arbitrary schemata
- clean mmCIF support
- core-CIF support for CCDC files
- schema support also during CifFile building
- not compatible with java 8 anymore
- detaches CIF model from any schema - type-safe access now requires to specify SchemaProvider
- several package and class names changed
- adds experimental support for CCDC files
- support for case insensitive handling of category and column names
ProxyCategoryto delay class lookup for as long as possible- generic parsing option (
new CifOptions.CifOptionsBuilder().generic(true).build()) that completely bypasses the schema - employs lazy loading of the class map used to instantiate categories and columns
- internal: use
Dequeto handle encoding chain - make @cleberecht proud - removes exposure of
LinkedHashMap - removes UTF-8 support, CIF is assumed to be plain ASCII
- updates fetch URL to RCSB
- change BinaryCIF URL to RCSB resources
- avoids construction of
Gsoninstance inCifOptions- thanks @BobHanson
- file format specification during reading is now honored correctly
- binaryCIF reading is now no-copy (i.e. the
InputStreamis directly consumed by readers/decoders rather than copied into abyte[])
- changes (internal) reader classes to work on an
InputStreamrather than onbyte[] - removes single-row encoding capabilities (performance was same but code complexity increased)
- writing of text CIF is now thread-safe
- moving to Java 11 for development - build is still targeting Java 8
- category builder keeps order of registered columns
- tweaks to builder
- no explicit call to
leaveColumn()required any more whenColumnwas created viaenterColumn() - binaryCIF now retains types for non-standard columns - text data still handles them as
StrColumnin any case
- no explicit call to
- stops leaking of GSON dependency to dependents
- addresses flaw in API definition where invoking
build()onIntColumnBuilder,FloatColumnBuilder, orStrColumnBuilderreturned a genericColumnrather than the concrete implementation
- fixed bug in IntervalQuantizationCodec
- GZIP support
- automatic file type detection during reading: gzipped or plain, binary or text
- several convenience methods provided by
CifIOandCifOptions - support for other dictionary extensions:
chem_comp,entity_branch,ihm - category and column filtering during writing of files
- merged
CifReaderandCifWriterintoCifIO- e.g.CifReader.readText(inputStream)->CifIO.readFromInputStream(inputStream) - drop single row behavior due to difficult detection and the risk of misinterpretation: there are rare cases where categories only having a single row in the dictionary contain multiple values in reality
- removed instances of duplicated code
- typos in documentation
- initial release