[cctbxbb] Extracting data from MTZ

richard.gildea at diamond.ac.uk richard.gildea at diamond.ac.uk
Tue Aug 14 03:54:35 PDT 2018


Hi David,


I would do something like this:


$ cat tst.py
def run(mtz):
  from iotbx.reflection_file_reader import any_reflection_file
  miller_arrays = any_reflection_file(mtz).as_miller_arrays()
  for ma in miller_arrays: print ma.info().labels
  fobs = [ma for ma in miller_arrays if ma.info().labels == ['F', 'SIGF']]
  fc = [ma for ma in miller_arrays if ma.info().labels == ['FC_ALL', 'PHIC_ALL']]
  assert len(fobs) == 1, len(fobs)
  assert len(fc) == 1, len(fc)
  fobs = fobs[0]
  fc = fc[0]

  fobs.show_summary()
  fc.show_summary()

if __name__ == '__main__':
  import sys
  run(sys.argv[1])


$ dials.python tst.py dimple/final.mtz
['FreeR_flag']
['F', 'SIGF']
['FC', 'PHIC']
['FC_ALL', 'PHIC_ALL']
['FWT', 'PHWT']
['DELFWT', 'PHDELWT']
['FOM']
['FC_ALL_LS', 'PHIC_ALL_LS']
Miller array info: dimple/final.mtz:F,SIGF
Observation type: xray.amplitude
Type of data: double, size=14217
Type of sigmas: double, size=14217
Number of Miller indices: 14217
Anomalous flag: False
Unit cell: (68.2317, 68.2317, 108.095, 90, 90, 90)
Space group: P 43 21 2 (No. 96)
Miller array info: dimple/final.mtz:FC_ALL,PHIC_ALL
Observation type: None
Type of data: complex_double, size=14551
Type of sigmas: None
Number of Miller indices: 14551
Anomalous flag: False
Unit cell: (68.2317, 68.2317, 108.095, 90, 90, 90)
Space group: P 43 21 2 (No. 96)


Cheers,

Richard



Dr Richard Gildea
Data Analysis Scientist
Tel: +441235 77 8078

Diamond Light Source Ltd.
Diamond House
Harwell Science & Innovation Campus
Didcot
Oxfordshire
OX11 0DE
________________________________
From: cctbxbb-bounces at phenix-online.org <cctbxbb-bounces at phenix-online.org> on behalf of David Waterman <dgwaterman at gmail.com>
Sent: 14 August 2018 11:37:29
To: cctbx mailing list
Subject: [cctbxbb] Extracting data from MTZ

Hi all,

I have a script that extracts Fobs and Fcalc from an MTZ file produced by Refmac for some analysis. I was just doing this in a trivial way:

      fobs = m.extract_reals("F").data
      fc = m.extract_reals("FC_ALL").data

and this worked fine, until I came across a file with missing observations, so that the lengths of fobs and fc do not match.

Can anybody advise a better way to do this please? I'm inexperienced with iotbx.mtz. I don't need anything other than the values of the structure factors, but I need each element of fobs and fc to contain the equivalent values.

Thanks

-- David

-- 
This e-mail and any attachments may contain confidential, copyright and or privileged material, and are for the use of the intended addressee only. If you are not the intended addressee or an authorised recipient of the addressee please notify us of receipt by returning the e-mail and do not use, copy, retain, distribute or disclose the information in or attached to the e-mail.
Any opinions expressed within this e-mail are those of the individual and not necessarily of Diamond Light Source Ltd. 
Diamond Light Source Ltd. cannot guarantee that this e-mail or any attachments are free from viruses and we cannot accept liability for any damage which you may sustain as a result of software viruses which may be transmitted in or with the message.
Diamond Light Source Limited (company no. 4375679). Registered in England and Wales with its registered office at Diamond House, Harwell Science and Innovation Campus, Didcot, Oxfordshire, OX11 0DE, United Kingdom




More information about the cctbxbb mailing list