See https://jira.schrodinger.com/browse/SHARED-7269 in Schrödinger bug tracking.
When a .cif file had windows line endings, we weren't treating
long cif data values correctly. Basically, we were
including the carriage return character in the data value!
A .cif long value looks like this:
_pdbx_struct_assembly_gen.asym_id_list
;A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,AA,BA,CA,DA,EA,FA,GA,HA,IA,JA,KA,LA,MA,NA,OA,PA,QA,RA,SA,TA,UA,VA,WA,XA,YA,ZA,AB,BB,CB,DB,EB,FB,GB,HB,IB
;
where the key is "_pdbx_struct_assembly_gen.asym_id_list" and
the value is everything between the semicolons, excluding the
final line break. Before this commit, we removed a single
linebreak character before the `;`. After this commit, we
remove one or two line break characters.
This wouldn't show up in typical workflows, because the
.cif and .cif.gz files on RCSB use Linux line endings. We
only saw this because we unzip the .cif.gz files
line by line in one of our tests.
- put in "pymol" namespace
- modernize memory management (C++11)
- make cif_array API more STL like (get_nrow() -> size(),
row -> pos, etc.)
- as<> and to_vector<> with default
- cif_file::datablocks() preserves order (map -> vector)
* Python 3.7 support (https://sf.net/p/pymol/bugs/197/)
* enable align with alt-codes
- allow matching of non-alt-code to alt-code atoms in alignments
- swap sorting priority of 'name' and 'alt' identifiers
- sort empty 'alt' before non-empty 'alt'
* flags 6 and 7 for protein and nucleic acid
* mmCIF: read _atom_site.pdbx_formal_charge
* improve coordinate loading from mmcif chem_comp files
- ignore columns with all ? (missing) values
- select columns with "chem_comp_cartn_use" setting
* fix h_add: skip missing coordinates
* cif_keepinmemory, pymol.querying.cif_get_array (experimental)
* ramp_update (new command)
* ramp objects now have "A > Range > ..." and "C > ..." menus
* mmCIF _chem_comp_atom: skip atoms with missing coordinates, prefer ideal over model coordinates
* cmd.set_key() decorator support
* fix assemblies for cases like 4f3r which have multiple entries in the _pdbx_struct_assembly_gen table
* fix ref counts in iterate/alter subscripts
* improve side_chain_helper and nucleic_adic_mode situation
* eliminate all "try/catch" blocks for std::map lookups
* clean up some MemoryDebug stuff and remove unused jenarix wrapper
* change default (!) of "ignore_case" setting to off. Case insensitve
identifier matching is not practical anymore with large structures
which use upper and lower case chain identifiers.
* new setting "assembly" to load assemblies from mmCIF as multi-state
objects with all_states=1
* new setting "cif_use_auth" controls whether mmCIF "auth" identifiers
are used or not (on by default)
* mmCIF "CA/P ATOMS ONLY" chains: set atom-level cartoon_trace_atoms
and ribbon_trace_atoms
* CIF discrete and irregular multi-model loading support
* support "pdb_honor_model_number" setting for CIF
* load multiple objects ("data_" blocks) from one CIF file (multiplex=-1)
* don't store AtmToIdx, DiscreteAtmToIdx or DiscreteCSet to PSE
(unless pse_export_version <= 1.76)
- scenes: Restore the old behavior that when recalling a scene, all objects
which were not present when storing the scene are disabled.
- fix auto-complete for filenames with spaces
- fix an object menu panel group ordering problem
Refactoring:
- remove unused variables (Partly applies https://sourceforge.net/p/pymol/bugs/166/)
- lots of: char* -> const char*
- remove inline Parse functions, simplify ParseFloat3List
- make functions static
* mmCIF _atom_sites.fract_transf support (SCALEn equivalent)
* Complete port of scenes to C++
* warn user if setting a setting on the wrong level
* cmd.extendaa: shortcut for cmd.extend with argument auto-completion
* reduced memory footprint of AtomInfoType
* expose "reps" to iterate/alter
* expose "protons" to iterate/alter
* adaptive cartoon quality and sampling, depending on number of atoms
* fix ring center color with cartoon_ring_color=default
* make SelectorGetTmp strictly molecular, fixes for example "dss" with group names
* fix "copy" can cause crash
* fix "custom" selection operator
* consider spec_count in shaders
* don't invalidate shaders for lighting settings
* don't disable shaders for all Intel chips
* don't touch sphere_mode when disabling shaders
* map_new buffer == -1 -> gaussian_resolution
* fix all_states picking
* remove cylinder_shader_ff_workaround and cylinders_shader_filter_faces
* remove unused gl_ambient setting
* fix Tcl/Tk menu settings logging
* fix: grid mode scales down label size incorrectly
* fix: no animate argument for cmd.origin
* fix side_chain_helper for hetatm polymer atoms
* fix .mmd export
* refactor many function to take "const" pointer arguments
* fast PDBx/mmCIF and core CIF loading in C++
* new connect_mode=4 does bonding with components.cif dictionary
(mmCIF only, components.cif needs to be present in current
directory)
* gray out residues in the sequence viewer that are missing from the
current state; Read missing residues from mmCIF files
(_pdbx_unobs_or_zero_occ_residues records) so that they show up in
the sequence viewer
* add spider map reading support
* load "map" as ccp4 instead of throwing "ambiguous" error
* xyz write support
* Improve right-button zoom: use origin instead of clipping slab
center as depth indicator, fixes zoom speed when far clipping plane
is very far away
* don't use dynamic_width for nonbonded rep