In cases like 1m4x the assembly operators are given as cartesian products where 2 (or more) operators have to be applied in turn. E.g. is 1m4x:
loop_
_pdbx_struct_assembly_gen.assembly_id
_pdbx_struct_assembly_gen.oper_expression
_pdbx_struct_assembly_gen.asym_id_list
1 '(1-60)(61-88)' A,B,C
2 '(61-88)' A,B,C
3 '(1-5)(61-88)' A,B,C
4 '(1,2,6,10,23,24)(61-88)' A,B,C
5 '(1-5)(63-68)' A,B,C
6 '(1,10,23)(61,62,69-88)' A,B,C
7 '(P)(61-88)' A,B,C
BioJava deals correctly with this but assigning sequential operator ids instead of the original ones in _pdbx_struct_oper_list.id. It'd be better to use the original operators so that the resulting identifiers can be recognised by other tools (e.g. when outputting assemblies to mmcif files).
In cases like 1m4x the assembly operators are given as cartesian products where 2 (or more) operators have to be applied in turn. E.g. is 1m4x:
BioJava deals correctly with this but assigning sequential operator ids instead of the original ones in
_pdbx_struct_oper_list.id. It'd be better to use the original operators so that the resulting identifiers can be recognised by other tools (e.g. when outputting assemblies to mmcif files).