1+
2+
3+ <!DOCTYPE html>
4+ < html class ="writer-html5 " lang ="en " data-content_root ="../../ ">
5+ < head >
6+ < meta charset ="utf-8 " />
7+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
8+ < title > diffpy.structure — diffpy.structure 3.4.0rc1 documentation</ title >
9+ < link rel ="stylesheet " type ="text/css " href ="../../_static/pygments.css?v=03e43079 " />
10+ < link rel ="stylesheet " type ="text/css " href ="../../_static/css/theme.css?v=9edc463e " />
11+ < link rel ="stylesheet " type ="text/css " href ="../../_static/copybutton.css?v=76b2166b " />
12+
13+
14+ < script src ="../../_static/jquery.js?v=5d32c60e "> </ script >
15+ < script src ="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c "> </ script >
16+ < script src ="../../_static/documentation_options.js?v=b5d8363e "> </ script >
17+ < script src ="../../_static/doctools.js?v=fd6eb6e6 "> </ script >
18+ < script src ="../../_static/sphinx_highlight.js?v=6ffebe34 "> </ script >
19+ < script src ="../../_static/clipboard.min.js?v=a7894cd8 "> </ script >
20+ < script src ="../../_static/copybutton.js?v=cca77546 "> </ script >
21+ < script src ="../../_static/js/theme.js "> </ script >
22+ < link rel ="index " title ="Index " href ="../../genindex.html " />
23+ < link rel ="search " title ="Search " href ="../../search.html " />
24+ </ head >
25+
26+ < body class ="wy-body-for-nav ">
27+ < div class ="wy-grid-for-nav ">
28+ < nav data-toggle ="wy-nav-shift " class ="wy-nav-side ">
29+ < div class ="wy-side-scroll ">
30+ < div class ="wy-side-nav-search " >
31+
32+
33+
34+ < a href ="../../index.html " class ="icon icon-home ">
35+ diffpy.structure
36+ </ a >
37+ < div role ="search ">
38+ < form id ="rtd-search-form " class ="wy-form " action ="../../search.html " method ="get ">
39+ < input type ="text " name ="q " placeholder ="Search docs " aria-label ="Search docs " />
40+ < input type ="hidden " name ="check_keywords " value ="yes " />
41+ < input type ="hidden " name ="area " value ="default " />
42+ </ form >
43+ </ div >
44+ </ div > < div class ="wy-menu wy-menu-vertical " data-spy ="affix " role ="navigation " aria-label ="Navigation menu ">
45+ < ul >
46+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../api/diffpy.structure.html "> Package API</ a > </ li >
47+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../release.html "> Release notes</ a > </ li >
48+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../license.html "> License</ a > </ li >
49+ </ ul >
50+
51+ </ div >
52+ </ div >
53+ </ nav >
54+
55+ < section data-toggle ="wy-nav-shift " class ="wy-nav-content-wrap "> < nav class ="wy-nav-top " aria-label ="Mobile navigation menu " >
56+ < i data-toggle ="wy-nav-top " class ="fa fa-bars "> </ i >
57+ < a href ="../../index.html "> diffpy.structure</ a >
58+ </ nav >
59+
60+ < div class ="wy-nav-content ">
61+ < div class ="rst-content ">
62+ < div role ="navigation " aria-label ="Page navigation ">
63+ < ul class ="wy-breadcrumbs ">
64+ < li > < a href ="../../index.html " class ="icon icon-home " aria-label ="Home "> </ a > </ li >
65+ < li class ="breadcrumb-item "> < a href ="../index.html "> Module code</ a > </ li >
66+ < li class ="breadcrumb-item active "> diffpy.structure</ li >
67+ < li class ="wy-breadcrumbs-aside ">
68+ </ li >
69+ </ ul >
70+ < hr />
71+ </ div >
72+ < div role ="main " class ="document " itemscope ="itemscope " itemtype ="http://schema.org/Article ">
73+ < div itemprop ="articleBody ">
74+
75+ < h1 > Source code for diffpy.structure</ h1 > < div class ="highlight "> < pre >
76+ < span > </ span > < span class ="ch "> #!/usr/bin/env python</ span >
77+ < span class ="c1 "> ##############################################################################</ span >
78+ < span class ="c1 "> #</ span >
79+ < span class ="c1 "> # (c) 2024-2026 The Trustees of Columbia University in the City of New York.</ span >
80+ < span class ="c1 "> # All rights reserved.</ span >
81+ < span class ="c1 "> #</ span >
82+ < span class ="c1 "> # File coded by: Chris Farrow, Pavol Juhas, Simon Billinge, Billinge Group members.</ span >
83+ < span class ="c1 "> #</ span >
84+ < span class ="c1 "> # See GitHub contributions for a more detailed list of contributors.</ span >
85+ < span class ="c1 "> # https://github.com/diffpy/diffpy.structure/graphs/contributors</ span >
86+ < span class ="c1 "> #</ span >
87+ < span class ="c1 "> # See LICENSE.rst for license information.</ span >
88+ < span class ="c1 "> #</ span >
89+ < span class ="c1 "> ##############################################################################</ span >
90+ < span class ="sd "> """Crystal structure container and parsers for structure formats.</ span >
91+
92+ < span class ="sd "> Classes related to the structure of materials:</ span >
93+ < span class ="sd "> * Atom</ span >
94+ < span class ="sd "> * Lattice</ span >
95+ < span class ="sd "> * Structure</ span >
96+ < span class ="sd "> * PDFFitStructure</ span >
97+
98+ < span class ="sd "> Other classes:</ span >
99+ < span class ="sd "> * SpaceGroup</ span >
100+ < span class ="sd "> * SymOp</ span >
101+ < span class ="sd "> * ExpandAsymmetricUnit</ span >
102+ < span class ="sd "> * GeneratorSite</ span >
103+ < span class ="sd "> * SymmetryConstraints</ span >
104+
105+ < span class ="sd "> Exceptions:</ span >
106+ < span class ="sd "> * StructureFormatError</ span >
107+ < span class ="sd "> * LatticeError</ span >
108+ < span class ="sd "> * SymmetryError</ span >
109+ < span class ="sd "> """</ span >
110+
111+
112+ < span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> os</ span >
113+ < span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> sys</ span >
114+
115+ < span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> diffpy.structure</ span > < span class ="w "> </ span > < span class ="k "> as</ span > < span class ="w "> </ span > < span class ="nn "> _structure</ span >
116+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> diffpy.structure.atom</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> Atom</ span >
117+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> diffpy.structure.lattice</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> Lattice</ span >
118+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> diffpy.structure.parsers</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> get_parser</ span >
119+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> diffpy.structure.pdffitstructure</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> PDFFitStructure</ span >
120+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> diffpy.structure.structure</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> Structure</ span >
121+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> diffpy.structure.structureerrors</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> LatticeError</ span > < span class ="p "> ,</ span > < span class ="n "> StructureFormatError</ span > < span class ="p "> ,</ span > < span class ="n "> SymmetryError</ span >
122+
123+ < span class ="c1 "> # package version</ span >
124+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> diffpy.structure.version</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> __version__</ span >
125+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> diffpy.utils._deprecator</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> build_deprecation_message</ span > < span class ="p "> ,</ span > < span class ="n "> deprecated</ span >
126+
127+ < span class ="c1 "> # Deprecations -------------------------------------------------------</ span >
128+ < span class ="n "> base</ span > < span class ="o "> =</ span > < span class ="s2 "> "diffpy.structure"</ span >
129+ < span class ="n "> removal_version</ span > < span class ="o "> =</ span > < span class ="s2 "> "4.0.0"</ span >
130+ < span class ="n "> loadStructure_deprecation_msg</ span > < span class ="o "> =</ span > < span class ="n "> build_deprecation_message</ span > < span class ="p "> (</ span >
131+ < span class ="n "> base</ span > < span class ="p "> ,</ span >
132+ < span class ="s2 "> "loadStructure"</ span > < span class ="p "> ,</ span >
133+ < span class ="s2 "> "load_structure"</ span > < span class ="p "> ,</ span >
134+ < span class ="n "> removal_version</ span > < span class ="p "> ,</ span >
135+ < span class ="p "> )</ span >
136+
137+
138+ < span class ="c1 "> # @deprecated</ span >
139+ < span class ="c1 "> # custom deprecator for diffpy.Structure module</ span >
140+ < div class ="viewcode-block " id ="DeprecatedStructureModule ">
141+ < a class ="viewcode-back " href ="../../api/diffpy.structure.html#diffpy.structure.DeprecatedStructureModule "> [docs]</ a >
142+ < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> DeprecatedStructureModule</ span > < span class ="p "> :</ span >
143+ < span class ="w "> </ span > < span class ="sd "> """Proxy for backward compatibility of diffpy.Structure."""</ span >
144+
145+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="fm "> __getattr__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> name</ span > < span class ="p "> ):</ span >
146+ < span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> warnings</ span >
147+
148+ < span class ="n "> warnings</ span > < span class ="o "> .</ span > < span class ="n "> warn</ span > < span class ="p "> (</ span >
149+ < span class ="s2 "> "Module 'diffpy.Structure' is deprecated and will be removed in version 4.0. "</ span >
150+ < span class ="s2 "> "Use 'diffpy.structure' instead."</ span > < span class ="p "> ,</ span >
151+ < span class ="ne "> DeprecationWarning</ span > < span class ="p "> ,</ span >
152+ < span class ="n "> stacklevel</ span > < span class ="o "> =</ span > < span class ="mi "> 2</ span > < span class ="p "> ,</ span >
153+ < span class ="p "> )</ span >
154+ < span class ="k "> return</ span > < span class ="nb "> getattr</ span > < span class ="p "> (</ span > < span class ="n "> _structure</ span > < span class ="p "> ,</ span > < span class ="n "> name</ span > < span class ="p "> )</ span > </ div >
155+
156+
157+
158+ < span class ="n "> sys</ span > < span class ="o "> .</ span > < span class ="n "> modules</ span > < span class ="p "> [</ span > < span class ="s2 "> "diffpy.Structure"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="n "> DeprecatedStructureModule</ span > < span class ="p "> ()</ span >
159+
160+ < span class ="c1 "> # top level routines</ span >
161+
162+
163+ < span class ="nd "> @deprecated</ span > < span class ="p "> (</ span > < span class ="n "> loadStructure_deprecation_msg</ span > < span class ="p "> )</ span >
164+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> loadStructure</ span > < span class ="p "> (</ span > < span class ="n "> filename</ span > < span class ="p "> ,</ span > < span class ="n "> fmt</ span > < span class ="o "> =</ span > < span class ="s2 "> "auto"</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kw</ span > < span class ="p "> ):</ span >
165+ < span class ="w "> </ span > < span class ="sd "> """This function has been deprecated and will be removed in version</ span >
166+ < span class ="sd "> 4.0.0.</ span >
167+
168+ < span class ="sd "> Please use diffpy.structure.load_structure instead.</ span >
169+ < span class ="sd "> """</ span >
170+ < span class ="k "> return</ span > < span class ="n "> load_structure</ span > < span class ="p "> (</ span > < span class ="n "> filename</ span > < span class ="p "> ,</ span > < span class ="n "> fmt</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kw</ span > < span class ="p "> )</ span >
171+
172+
173+ < div class ="viewcode-block " id ="load_structure ">
174+ < a class ="viewcode-back " href ="../../api/diffpy.structure.html#diffpy.structure.load_structure "> [docs]</ a >
175+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> load_structure</ span > < span class ="p "> (</ span > < span class ="n "> filename</ span > < span class ="p "> ,</ span > < span class ="n "> fmt</ span > < span class ="o "> =</ span > < span class ="s2 "> "auto"</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kw</ span > < span class ="p "> ):</ span >
176+ < span class ="w "> </ span > < span class ="sd "> """Load new structure object from the specified file.</ span >
177+
178+ < span class ="sd "> Parameters</ span >
179+ < span class ="sd "> ----------</ span >
180+
181+ < span class ="sd "> filename : str</ span >
182+ < span class ="sd "> Path to the file to be loaded.</ span >
183+ < span class ="sd "> fmt : str, Optional</ span >
184+ < span class ="sd "> Format of the structure file such as 'cif' or 'xyz'. Must be</ span >
185+ < span class ="sd "> one of the formats listed by the `parsers.inputFormats` function.</ span >
186+ < span class ="sd "> When 'auto', all supported formats are tried in a sequence.</ span >
187+ < span class ="sd "> kw : Optional</ span >
188+ < span class ="sd "> Extra keyword arguments that are passed to `parsers.getParser`</ span >
189+ < span class ="sd "> function. These configure the dedicated Parser object that</ span >
190+ < span class ="sd "> is used to read content in filename.</ span >
191+
192+ < span class ="sd "> Returns</ span >
193+ < span class ="sd "> -------</ span >
194+ < span class ="sd "> stru : `Structure`, `PDFFitStructure`</ span >
195+ < span class ="sd "> The new Structure object loaded from the specified file.</ span >
196+ < span class ="sd "> Return a more specific PDFFitStructure type for 'pdffit'</ span >
197+ < span class ="sd "> and 'discus' formats.</ span >
198+ < span class ="sd "> """</ span >
199+ < span class ="n "> filename</ span > < span class ="o "> =</ span > < span class ="n "> os</ span > < span class ="o "> .</ span > < span class ="n "> fspath</ span > < span class ="p "> (</ span > < span class ="n "> filename</ span > < span class ="p "> )</ span >
200+ < span class ="n "> p</ span > < span class ="o "> =</ span > < span class ="n "> get_parser</ span > < span class ="p "> (</ span > < span class ="n "> fmt</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kw</ span > < span class ="p "> )</ span >
201+ < span class ="n "> rv</ span > < span class ="o "> =</ span > < span class ="n "> p</ span > < span class ="o "> .</ span > < span class ="n "> parse_file</ span > < span class ="p "> (</ span > < span class ="n "> filename</ span > < span class ="p "> )</ span >
202+ < span class ="k "> return</ span > < span class ="n "> rv</ span > </ div >
203+
204+
205+
206+ < span class ="c1 "> # silence pyflakes checker</ span >
207+ < span class ="k "> assert</ span > < span class ="n "> StructureFormatError</ span > < span class ="ow "> and</ span > < span class ="n "> LatticeError</ span > < span class ="ow "> and</ span > < span class ="n "> SymmetryError</ span >
208+ < span class ="k "> assert</ span > < span class ="n "> Atom</ span >
209+ < span class ="k "> assert</ span > < span class ="n "> Lattice</ span >
210+ < span class ="k "> assert</ span > < span class ="n "> Structure</ span >
211+ < span class ="k "> assert</ span > < span class ="n "> PDFFitStructure</ span >
212+
213+ < span class ="c1 "> # silence the pyflakes syntax checker</ span >
214+ < span class ="k "> assert</ span > < span class ="n "> __version__</ span > < span class ="ow "> or</ span > < span class ="kc "> True</ span >
215+
216+ < span class ="c1 "> # End of file</ span >
217+ </ pre > </ div >
218+
219+ </ div >
220+ </ div >
221+ < footer >
222+
223+ < hr />
224+
225+ < div role ="contentinfo ">
226+ < p > © Copyright 2026, The Trustees of Columbia University in the City of New York.</ p >
227+ </ div >
228+
229+ Built with < a href ="https://www.sphinx-doc.org/ "> Sphinx</ a > using a
230+ < a href ="https://github.com/readthedocs/sphinx_rtd_theme "> theme</ a >
231+ provided by < a href ="https://readthedocs.org "> Read the Docs</ a > .
232+
233+
234+ </ footer >
235+ </ div >
236+ </ div >
237+ </ section >
238+ </ div >
239+ < script >
240+ jQuery ( function ( ) {
241+ SphinxRtdTheme . Navigation . enable ( true ) ;
242+ } ) ;
243+ </ script >
244+
245+ </ body >
246+ </ html >
0 commit comments