POST MAKEMULTIMER GOALS 1. Tell number of biological assemblies in molecule information tab (In magenta?). 2. Help panel: List "show biological unit 1: 6 chains", etc. 3. Query parameter bm=1 instructs first glance to load that biological assembly and behave appropriately. Load… filter "Assembly 1" "Assembly" works for CIF and PDB, while biomolecule was made for PDB, but also works for both. New variable biounit set by the query parameter, Else defaults to zero. 4. When loading a biomolecule, estimate number of atoms. If greater than 30,000 give option to show backbone only (Alpha carbons). load "1sva.pdb" FILTER "*.CA,*.P" If greater than 100,000, option to show one pseudo atom per chain load =3j3q.cif filter "ASSEMBLY 1;BYCHAIN". 5. Therefore, improve the alpha carbon only display, and create a bYchain display. ------------------------------------------------------------------------------ Examples: 3KWB Author assigned chain names X and Y. BU: 2 -> 1 + 1. 3dxr BU: 2 -> 6, 12. 5cev BU: 6 -> 6, 6 different assembly than in the AU. 3m6y BU: 4 -> 4,4*,2,2. * different Contacts then in the AU. Surface areas given. 1sva BU: 6 -> 360. ------------------------------------------------------------------------------ MMCIF EXAMPLE 3dxa loop_ _pdbx_struct_assembly_gen.assembly_id _pdbx_struct_assembly_gen.oper_expression _pdbx_struct_assembly_gen.asym_id_list 1 1,2,3 A,B,C,D 2 1,2,3,4,5,6 A,B,C,D The numbers refer to symmetry operations in _pdbx_struct_oper_list. A and B are chain names. C and D are water "chains". In other examples, they may be chain names assigned to other heteros. In the case of 1sva (Which has no ligands+ and no water), the author-assigned chain names are 1,2,3,4,5,6, but A-F are used in _pdbx_struct_assembly_gen: loop_ _pdbx_struct_assembly.id _pdbx_struct_assembly.details _pdbx_struct_assembly.method_details _pdbx_struct_assembly.oligomeric_details _pdbx_struct_assembly.oligomeric_count 1 'complete icosahedral assembly' ? 'complete icosahedral assembly' 360 2 'icosahedral asymmetric unit' ? hexameric 6 3 'icosahedral pentamer' ? 30-meric 30 4 'icosahedral 23 hexamer' ? 36-meric 36 5 'icosahedral asymmetric unit, std point frame' ? hexameric 6 6 'crystal asymmetric unit, crystal frame' ? 30-meric 30 # loop_ _pdbx_struct_assembly_gen.assembly_id _pdbx_struct_assembly_gen.oper_expression _pdbx_struct_assembly_gen.asym_id_list 1 '(1-60)' A,B,C,D,E,F 2 1 A,B,C,D,E,F 3 '(1-5)' A,B,C,D,E,F 4 '(1,2,6,10,23,24)' A,B,C,D,E,F 5 P A,B,C,D,E,F 6 '(X0)(1-5)' A,B,C,D,E,F In 3c70, there is a single protein chain A. SCN, SO4, HOH are all chain A according to the authors, but have asym_id B through H. .auth_asym_id is the chain name specified by the authors. It is given in the third to last column of the ATOM Lines (_atom_site). It appears to be the same as .beg/end_auth_asym_id used in _struct_conf (Helix) and _struct_sheet_range, _pdbx_struct_sheet_hbond; .ptnr1/2_auth_asym_id used in _struct_conn (disulfides, etc.), and pdbx_auth_asym_id used in _struct_site. The correspondence between .asym_id and the author-assigned chain names is given in _pdbx_poly_seq_scheme, and _pdbx_nonpoly_scheme, where the author-assigned names are .pdb_strand_id. An example with author-assigned protein chain names X and Y is 3KWB. From Bob February 2022: Eric, the correspondence is in the _atom_site block: HETATM 3610 O O . HOH E 3 . ? -13.351 -3.684 47.237 1.00 40.16 ? 1265 HOH X O 1 HETATM 3611 O O . HOH E 3 . ? 4.122 18.914 49.893 1.00 38.99 ? 1266 HOH X O 1 HETATM 3612 O O . HOH E 3 . ? -10.575 4.169 10.620 1.00 41.35 ? 1267 HOH X O 1 HETATM 3613 O O . HOH F 3 . ? -4.789 38.522 30.889 1.00 16.45 ? 1 HOH Y O 1 HETATM 3614 O O . HOH F 3 . ? 2.877 26.756 -8.706 1.00 11.26 ? 2 HOH Y O 1 HETATM 3615 O O . HOH F 3 . ? -4.489 22.463 10.184 1.00 12.83 ? 3 HOH Y O 1 BTW, you can get those and use them in Jmol (in labels, for instance) using the getProperty("CIFinfo") function: load =3kwb.cif cifdata = getProperty("cifInfo").models[1] y= cifdata._atom_site_label_asym_id {*}.label = y print {*}.label.pivot { "A" : 1645 "B" : 1612 "C" : 29 "D" : 29 "E" : 297 "F" : 319 } Bob ------------------------------------------------------------------------------ MAKEMULTIMER CODE moltab.js: bioUnitExists() returns (bioUnitSymOps || multipleBioUnits); booleans multipleBioUnits, AURelevant showAUHelp() moltab.js makeAUHelp() help2.js Function bioUnitExists() bioUnitSymOps is true when there is a second bioMT block in remark 350. multipleBioUnits is true when there is a biomolecule 2.