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.
- cif-core:
- renaming of
atom_site
tensors atom_type_scat_versus_stol_list
from float to String- drops
citation_author_key
- drops
citation_editor_id
journal_index_id
from int to Stringrefln_f_complex_su
from float to String
- renaming of
- mmCIF/ihm-extension:
- drops
ihm_entry_collection_mapping.id
- drops
- treat numbers that exceed
Integer.MAX_VALUE
as 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
null
instead 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
chemical
category) citation_journal_issue
changed from int to String typecitation_year
changes 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.duration
changed from int to float typeem_map.symmetry_space_group
changed from String to int typepdbx_struct_ncs_virus_gen.oper_id
changed from String to int typestruct_ncs_ens_gen.oper_id
changed from String to int typestruct_ncs_oper.id
changed 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_list
changed from String to float typemodel_site_adp_eigen_system
changed from String tomodel_site_adp_eigenvalues
andmodel_site_adp_eigenvectors
of 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
CifFile
instance
- 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
ProxyCategory
to 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
Deque
to 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
Gson
instance inCifOptions
- thanks @BobHanson
- file format specification during reading is now honored correctly
- binaryCIF reading is now no-copy (i.e. the
InputStream
is directly consumed by readers/decoders rather than copied into abyte[]
)
- changes (internal) reader classes to work on an
InputStream
rather 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 whenColumn
was created viaenterColumn()
- binaryCIF now retains types for non-standard columns - text data still handles them as
StrColumn
in any case
- no explicit call to
- stops leaking of GSON dependency to dependents
- addresses flaw in API definition where invoking
build()
onIntColumnBuilder
,FloatColumnBuilder
, orStrColumnBuilder
returned a genericColumn
rather 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
CifIO
andCifOptions
- support for other dictionary extensions:
chem_comp
,entity_branch
,ihm
- category and column filtering during writing of files
- merged
CifReader
andCifWriter
intoCifIO
- 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