Skip to content

Instantly share code, notes, and snippets.

@msarahan
Created August 21, 2013 05:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save msarahan/6290710 to your computer and use it in GitHub Desktop.
Save msarahan/6290710 to your computer and use it in GitHub Desktop.
QSTEM ipython notebook
{
"metadata": {
"name": "QSTEM_simDemo"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Initializing environment for plotting"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%pylab inline"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].\n",
"For more information, type 'help(pylab)'.\n"
]
}
],
"prompt_number": 1
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Create a probe (fast)"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Create the array over which we'll calculate"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Compute aberration function"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"All of the above steps, rolled into one, using a Python class"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# this function comes from probe.py, which is part of QSTEM.\n",
"from probe import probe\n",
"p=probe()\n",
"p.print_description()\n",
"p.plot_real_space_amplitude()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Voltage: 200\n",
"Array size (pixels): 400\n",
"Real space pixel size (A): 0.05000\n",
"Convergence angle (mrad): 15.00\n",
"Aberration amplitudes: \n",
"[{'20': -60.0, '22': 0.0, '33': 0.0, '51': 0.0, '31': 0.0, '42': 0.0, '40': 1000.0, '60': 1.0, '55': 0.0, '62': 0.0, '64': 0.0, '53': 0.0, '66': 0.0, '44': 0.0}]\n",
"Aberration angles: \n",
"{'22': 0.0, '55': 0.0, '42': 0.0, '44': 0.0, '51': 0.0, '53': 0.0, '33': 0.0, '62': 0.0, '64': 0.0, '66': 0.0, '31': 0.0}\n"
]
},
{
"output_type": "display_data",
"png": "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\nKBoV0mMA+ljZ6bBcR96fraeltywekeM3OoDGUYtOELWU/AwtWks/mtQCmh5A22Sf9jcXWw6/KaXh\ntqaFK3gUnf4/K/qK6Kwk7/sGfRa1SFWEPpyErdpkdo1rsiqktYNpSu2f1ixoNW36+W3SBSOKrjbd\nOtq1hFaUOrU00UqTgYOa7QXYK5SeVfMv1Fzy300pbWzKCL+rWr4bqIU4S2ZvjbSjSMos6BqO9STE\n7thjouhjpehqt/dpI3fJ3NQVIDqHoBZJ6BNZLF7JTB2rLX2s+Qub9n9kJtFMmdfuTs9KJaIEvda+\nprnjyWS7iWlyNjQJcTosmEYxLdgJLSpWiz2aTYBZoiilNsxzh2NXqCbhKeK1dmqi1TD4zDFP7Wpa\nX1YLdB5oCHla53aLg3vWFPPZcI4QBRGdVO1o2T3q6dCLpCL3ARUimm6a+5AlbZWmS8lJq1upgfkn\nJu0mor5i3kOUnh5Bf2slwt7311lEFFSJa0KrKdH6I0Bd2PhcI4YSMpW0Zet6DbuxzXsRMc380dPA\n9LOWPvTs3v6xANvMgXqOw2rwvib881Q9gdivUDvpSA+uJYbyV1LtXVOaRxaqYtGF3J3YXUKFUcJY\nbSHJTh/vE13mrGfLAvWfkZje8b/HRMFsRI2/d9292deGnBZEg+NtytoTHXoLjJ8fGPVBNlGidHfm\nJfRJiKVsxlZnJjBJmn2SWWZalmz8qAzNLYZsS2OXCZjuON1NP1PtZxpK5hCv6Yap3bZ/9md/hje/\n+c1YXl7GN77xjYnvfvd3fxfXX389jh07hi9/+cuV2/PsRKD7BADG5y/OG1QLdb+D/ml7AOCklSWW\npR59fl4zTcx79jj5eHMdyWfF/vS7ZYyeb9muXw3KMSmrjwhBlB1bg5IEx3BFPlcB0nl0cvtVhdLH\nXAl+t+ZgrS+j7/wZd5Eojh8/jrvvvhs/8RM/MfH5/fffj89//vO4//77cc899+BXf/VXsbVVY1td\npaeZ9OzAeULTmTUzUQVFcTIom+VR+Io3zbDMEkEgYQHjZ2F7VhETwMngsxW5XgWR9c46RtMIo2ac\nlg4BItj3J+0a1eCica9t/+4D09YfEWE3TE0Ux44dww033LDj8y9+8Yv44Ac/iNXVVRw9ehTXXXcd\n7r333qSWaYTDN375d/NAtuchu382IK55ZEe7TZN2O8skVWHSZ6Bgq9DrihxpD4SufPqc06YUTzO2\nvueE0GcgSmeMeF0OnR/zgpNsSQ4izKbR9Z4x8uijj+LIkSOv/H/kyBE88sgjPd5eHYJefl6Ms4XL\n1QAABJxJREFUPrDX2nU10NRwc6ZLHX3BN3vxM33vjlt+5hPVV9Vs9+1uw9PU2ffRs2doHZd5aLbR\nvUtyUEPPZ2aeOHECp0+f3vH5pz71KbznPe9pvslgkHXyrzfXcXbia3vdgDnjr/a6AXPGuT5+7SgS\nxd/8zd90rvDw4cN4+OGHX/n/e9/7Hg4fPrzjuuFw0cNv+9jHPohe9EAV+jvuuAN/+qd/irW1NTz0\n0EN48MEH8cM//MN93GYf+9jHHmFqorj77rtx9dVX4x/+4R/wMz/zM7j99tsBADfddBPe//7346ab\nbsLtt9+O3//93y+YHvvYxz7OCgx3GV/4wheGN91003BpaWn4z//8zxPffepTnxped911wxtvvHH4\n13/917vdtN7x27/928PDhw8Pb7nlluEtt9wy/NKXvrTXTeoFX/rSl4Y33njj8Lrrrhveeeede92c\n3vGGN7xhePz48eEtt9wyfPvb377XzZkJH/7wh4dXXHHF8C1vecsrnz3xxBPDd73rXcPrr79+eOLE\nieEPfvCDaj27ThTf/va3h//2b/82fMc73jFBFN/61reGN99883BtbW340EMPDa+99trh5ubmbjev\nV3ziE58YfuYzn9nrZvSKjY2N4bXXXjt86KGHhmtra8Obb755eP/99+91s3rF0aNHh0888cReN6MX\n/O3f/u3wG9/4xgRR/MZv/Mbw05/+9HA4HA7vvPPO4cc+9rFqPbseq+on/+LswfAcc9ree++9uO66\n63D06FGsrq7iAx/4AL74xS/udbN6x7kybrfddhsuvfTSic/+8i//Eh/60IcAAB/60IfwF3/xF9V6\n9vjMzDG65V+cPfjsZz+Lm2++GR/5yEfw1FNP7XVzZsYjjzyCq6+++pX/z5VxUgwGA7zrXe/Crbfe\nij/8wz/c6+b0jjNnzuDgwYMAgIMHD+LMmTPVMnPJUJp//sXiIHvWT37yk/iVX/kV/NZv/RYA4OMf\n/zh+/dd/HZ/73Od2u4m94mwYk1nx9a9/HYcOHcJjjz2GEydO4NixY7jtttv2ullzwWAwaBrTuRDF\nPPMvFg2tz/qLv/iLnUhyUeHj9PDDD09ogucCDh06BAC4/PLL8b73vQ/33nvvOUUUBw8exOnTp3Hl\nlVfi1KlTuOKKK6pl9tT0GJ7j+RenTp165f3dd9+N48eP72Fr+sGtt96KBx98ECdPnsTa2ho+//nP\n44477tjrZvWGF154Ac8++ywA4Pnnn8eXv/zlc2LcFHfccQfuuusuAMBdd92F9773vfVC8/G15vjz\nP//z4ZEjR4YHDhwYHjx4cPjTP/3Tr3z3yU9+cnjttdcOb7zxxuE999yz203rHT//8z8/PH78+PCt\nb33r8Gd/9meHp0+f3usm9YK/+qu/Gt5www3Da6+9dvipT31qr5vTK7773e8Ob7755uHNN988fPOb\n33zWP98HPvCB4aFDh4arq6vDI0eODP/oj/5o+MQTTwzf+c53dgqPDobDc8S9u4997GNuWJioxz72\nsY/FxT5R7GMf+6hinyj2sY99VLFPFPvYxz6q2CeKfexjH1XsE8U+9rGPKv5/iCXLuPGpm/EAAAAA\nSUVORK5CYII=\n"
}
],
"prompt_number": 3
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Calculate 3D atom potential for each atom type (fast)"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Look up scattering factors in table (not shown, but data imported here)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"\n",
"scatFactors = \n",
"print scatFactors.shape"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Calculate potential for scan volume (very slow)"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Calculate which atoms live within slice bounds"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Add their potential to this slice"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Load pre-existing potential slices (for speed in this demo)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# this function comes from read_img.py, which is part of QSTEM.\n",
"from read_img import binread2D\n",
"# img, comment, t, dx, dy = binread2D(filename,False)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Propagation through slices (slow)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Collection of intensity on detectors (fast)"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Form the diffraction pattern"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Apply a mask to select the area of the detector"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Sum the intensity from that area"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"One pixel done! Repeat for each pixel in simulated image. Parallelized - one pixel done per processor"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"If TDS is enabled, apply random 3D offset to atom positions & repeat this whole process"
]
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment