xrd (version 1.6, 2005/11/05)
index
/Users/schwehr/projects/xcore/src/pmag-kds-py/xrd.py

Hangle X-Ray Diffraction data
 
     Copyright (C) 2005  Kurt Schwehr
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
Tested only with the SIO AF Scintag XDS 2000 running the DMSNT
software (version unknown).  This software was developed with only 2
runs of the XRD, so I imaging it will break with other files.
 
SEE ALSO:
 
  http://www.matter.org.uk/diffraction/
 
  http://epswww.unm.edu/xrd/resources.htm
 
  Sample cards: http://www.icdd.com/resources/webpdf/webpdf.htm
 
DATABASE:
 
  What is the best way to build an open database of XRD specta?  It
  seems like a full database system is key.  Writing spectra in python
  dictories is clunky and will be slow when the database reaches any
  sort of reasonable size.
 
  It would be nice to also have some catagories that would help limit
  the number of materials to search... e.g. marine sediments
 
  If you want to contribute data, please send me a patch or you are
  welcome to copy this file and start up your own.
 
  Still need to have options to show the expected peaks for minerals.

 
Modules
       
sys

 
Classes
       
XRDcps

 
class XRDcps
     Methods defined here:
__init__(self, filename, degreeOffset=0.0, verbosity=0)
load an XRD counts per second file from disk
 
degreeOffset - apply this shift to the data to correct for gear issues
   SIO AF XRD needs -0.2 during Oct 2005
   Correction is applied in read_range
 
FIX: make reading from a file optional
FIX: make a validatation from a known file
FIX: make reading fields be methods... read_string_field, read_deg_field, read_float_field
FIX:   make reading fields verify the field name
plot(self, options, cps=True, esd=False, filename=None)
Use matplot to display a graph
 
options is where to put xmin,xmax,ymin,ymax
printStrs(self)
read_axis(self)
read_field_blank(self, field_name)
read_field_degrees(self, field_name, hasDeg=True)
read a degrees field
read_field_float(self, field_name)
read_field_int(self, field_name)
read_field_string(self, field_name)
Read a string field and verify the field name
read_field_yesno(self, field_name)
read_range(self)
CPS - counts per second
ESD - CPS minus some sort of baseline
 
uses self.degree_offset
read_until(self, start_str)
FIX: cleanup

 
Functions
       
printTodo()
Things that need to be or could be done to this code:
 
FIX: Better labeling of graphs
FIX: Start building a database of minerals
FIX: Allow inputing of sample preparation
FIX: Parse the other file formats... counts, summary, raw, emf... and what is an emf
FIX: make verbosity to something...
FIX: and???
rows2cols(list)
convert a big list of rows to list of columns.
 
[ [1,2], [3,4], [5,6] ] to  [ [1,3,5], [2,4,6] ]

 
Data
        ALWAYS = 0
BOMBASTIC = 4
TERSE = 1
TRACE = 2
VERBOSE = 3
VERSION = '0.11'
__author__ = 'Kurt Schwehr'
__date__ = '2005/11/05'
__version__ = '1.6'
database = {'corondum': {'alt name': 'Aluminum Oxide', 'spectrum': [(3.4796999999999998, 45, 0, 1, 2), (2.5508000000000002, 100, 1, 0, 4), (2.3794, 21, 1, 1, 0), (2.1654, 2, 0, 0, 6), (2.0853000000000002, 66, 1, 1, 3), (1.9642999999999999, 1, 2, 0, 2), (1.74, 34, 0, 2, 4), (1.6014999999999999, 89, 1, 1, 6), (1.5466, 1, 2, 1, 1), (1.5149999999999999, 2, 1, 2, 2), (1.5109999999999999, 14, 0, 1, 8), (1.4045000000000001, 23, 2, 1, 4), (1.3736999999999999, 27, 3, 0, 0), (1.3359000000000001, 1, 1, 2, 5), (1.2755000000000001, 2, 2, 0, 8), (1.2391000000000001, 29, 1, 0, 10), (1.2343, 12, 1, 1, 9), (1.1931, 1, 2, 1, 7), (1.1897, 2, 2, 2, 0), (1.1599999999999999, 1, 3, 0, 6), ...], 'wavelength': 1.540562}}

 
Author
        Kurt Schwehr