Skip to content

Commit

Permalink
REF: Refactor into submodules
Browse files Browse the repository at this point in the history
Have combined relevant modules into folders:

* crystal : Lattice, Sample, Material, Symmetry, structure_factors, etc
* fileio : load_data, load_instrument, etc
* instrument : instrument, tools, goniometer, monochromator, analyzer, etc
* scattering : pattern (new, renamed from scattering), polarization, etc.
* data : analysis, data

Plot modules are contained within the appropriate subfolder for relevant modules to prevent circular imports

Added UTF encoding strings to all files to avoid import errors in python 2

Added loaders folder to fileio which will contain filetype-specific loaders for loading data, instruments, etc.
  • Loading branch information
pseudocubic committed Apr 10, 2016
1 parent 656d1a6 commit 43fcb58
Show file tree
Hide file tree
Showing 47 changed files with 1,471 additions and 1,360 deletions.
20 changes: 10 additions & 10 deletions neutronpy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,24 @@
'''
from __future__ import absolute_import
from . import constants
from . import fileio
from . import functions
from . import instrument
from . import models
from . import spurion
from . import io
from . import polarization
from . import symmetry
from .kmpfit import Fitter
from .energy import Energy
from . import scattering
from .crystal import Lattice
from .crystal import Material
from .crystal import Sample
from .crystal import symmetry
from .data import Data
from . import instrument
from .energy import Energy
from .kmpfit import Fitter
from .instrument import Instrument
from .sample import Sample
from .material import Material
from .lattice import Lattice

try:
from . import gui
except ImportError:
print('Warning: PyQt5 not found, cannot run Resolution GUI')

__version__ = '1.0.0b1'
__version__ = '1.0.0b2'
1 change: 1 addition & 0 deletions neutronpy/constants.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
r'''Useful constants for neutron scattering calculations, including:
* ``magnetic_form_factors()`` : Magnetic Ion j-values
Expand Down
6 changes: 6 additions & 0 deletions neutronpy/crystal/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from .atom import Atom, MagneticAtom
from .lattice import Lattice
from .material import Material
from .sample import Sample
from .symmetry import SpaceGroup
from . import symmetry
15 changes: 8 additions & 7 deletions neutronpy/atom.py → neutronpy/crystal/atom.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
import numpy as np
import neutronpy.constants as const
from ..constants import periodic_table, scattering_lengths


class Atom(object):
Expand Down Expand Up @@ -40,14 +41,14 @@ def __init__(self, ion, pos, occupancy=1., Mcell=None, massNorm=False, Uiso=0, U
self.Uaniso = np.matrix(Uaniso)

if massNorm is True:
self.mass = const.periodic_table()[ion]['mass']
self.b = (const.scattering_lengths()[ion]['Coh b'] * self.occupancy * self.Mcell / np.sqrt(self.mass))
self.mass = periodic_table()[ion]['mass']
self.b = (scattering_lengths()[ion]['Coh b'] * self.occupancy * self.Mcell / np.sqrt(self.mass))
else:
self.b = const.scattering_lengths()[ion]['Coh b'] / 10.
self.b = scattering_lengths()[ion]['Coh b'] / 10.

self.coh_xs = const.scattering_lengths()[ion]['Coh xs']
self.inc_xs = const.scattering_lengths()[ion]['Inc xs']
self.abs_xs = const.scattering_lengths()[ion]['Abs xs']
self.coh_xs = scattering_lengths()[ion]['Coh xs']
self.inc_xs = scattering_lengths()[ion]['Inc xs']
self.abs_xs = scattering_lengths()[ion]['Abs xs']


class MagneticAtom(object):
Expand Down
1 change: 1 addition & 0 deletions neutronpy/lattice.py → neutronpy/crystal/lattice.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
r'''Handles lattice geometries to find rotations and transformations
'''
Expand Down
8 changes: 4 additions & 4 deletions neutronpy/material.py → neutronpy/crystal/material.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
'''
import numpy as np
import neutronpy.constants as const
from .atom import Atom, MagneticAtom
from .plot import PlotMaterial
from .sample import Sample
from .structure_factors import NuclearStructureFactor, MagneticStructureFactor
from .scattering import HKLGenerator
from .symmetry import SpaceGroup
from .sample import Sample
from .atom import Atom, MagneticAtom
#from ..scattering.pattern import HKLGenerator


class MagneticUnitCell(Sample):
Expand Down Expand Up @@ -45,7 +45,7 @@ def __init__(self, unit_cell):
super(MagneticUnitCell, self).__init__(a, b, c, alpha, beta, gamma)


class Material(Sample, NuclearStructureFactor, MagneticStructureFactor, HKLGenerator, PlotMaterial):
class Material(Sample, NuclearStructureFactor, MagneticStructureFactor, PlotMaterial):
r'''Class for the Material being supplied for the structure factor calculation
Parameters
Expand Down
42 changes: 42 additions & 0 deletions neutronpy/crystal/plot.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import numpy as np


class PlotMaterial(object):
r'''Class containing plotting methods for Material object
Methods
-------
plot_unit_cell
'''
def plot_unit_cell(self):
r'''Plots the unit cell and atoms of the material.
'''

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D # @UnresolvedImport
from itertools import product, combinations

fig = plt.figure()
ax = fig.gca(projection='3d')

# draw unit cell
for s, e in combinations(np.array(list(product([0, self.abc[0]], [0, self.abc[1]], [0, self.abc[2]]))), 2):
if np.sum(np.abs(s - e)) in self.abc:
ax.plot3D(*zip(s, e), color="b")

# plot atoms
x, y, z, m = [], [], [], []
for item in self.atoms:
x.append(item.pos[0] * self.abc[0])
y.append(item.pos[1] * self.abc[1])
z.append(item.pos[2] * self.abc[2])
m.append(item.mass)

ax.scatter(x, y, z, s=m)

plt.axis('scaled')
plt.axis('off')

plt.show()
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
r'''Structure Factors
NuclearStructureFactor
Expand All @@ -6,7 +7,7 @@
'''
import numpy as np
from .constants import magnetic_ion_j
from ..constants import magnetic_ion_j


class NuclearStructureFactor(object):
Expand Down
2 changes: 1 addition & 1 deletion neutronpy/symmetry.py → neutronpy/crystal/symmetry.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
'''
import numpy as np
from neutronpy.constants import symmetry
from ..constants import symmetry

space_groups = symmetry()['space_groups']

Expand Down
2 changes: 2 additions & 0 deletions neutronpy/data/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from .data import Data
from .rawdata import RawData

0 comments on commit 43fcb58

Please sign in to comment.