Changeset dd4f5ed in sasmodels
- Timestamp:
- Sep 13, 2017 10:15:12 AM (7 years ago)
- Branches:
- master, core_shell_microgels, costrafo411, magnetic_model, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- 058460c
- Parents:
- ca04add (diff), 9644b5a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - git-author:
- Lewis O'Driscoll <lewis.o'driscoll@…> (09/13/17 10:15:12)
- git-committer:
- GitHub <noreply@…> (09/13/17 10:15:12)
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/sasview_model.py
rbcdd6c9 r9644b5a 169 169 return make_model_from_info(model_info) 170 170 171 171 172 172 def _register_old_models(): 173 173 # type: () -> None … … 597 597 % type(qdist)) 598 598 599 def get_composition_models(self): 600 """ 601 Returns usable models that compose this model 602 """ 603 s_model = None 604 p_model = None 605 if hasattr(self._model_info, "composition") \ 606 and self._model_info.composition is not None: 607 p_model = make_model_from_info(self._model_info.composition[1][0])() 608 s_model = make_model_from_info(self._model_info.composition[1][1])() 609 return p_model, s_model 599 def calc_composition_models(self, qx): 600 """ 601 returns parts of the composition model or None if not a composition 602 model. 603 """ 604 # TODO: have calculate_Iq return the intermediates. 605 # 606 # The current interface causes calculate_Iq() to be called twice, 607 # once to get the combined result and again to get the intermediate 608 # results. This is necessary for now. 609 # Long term, the solution is to change the interface to calculate_Iq 610 # so that it returns a results object containing all the bits: 611 # the A, B, C, ... of the composition model (and any subcomponents?) 612 # the P and S of the product model, 613 # the combined model before resolution smearing, 614 # the sasmodel before sesans conversion, 615 # the oriented 2D model used to fit oriented usans data, 616 # the final I(q), 617 # ... 618 # 619 # Have the model calculator add all of these blindly to the data 620 # tree, and update the graphs which contain them. The fitter 621 # needs to be updated to use the I(q) value only, ignoring the rest. 622 # 623 # The simple fix of returning the existing intermediate results 624 # will not work for a couple of reasons: (1) another thread may 625 # sneak in to compute its own results before calc_composition_models 626 # is called, and (2) calculate_Iq is currently called three times: 627 # once with q, once with q values before qmin and once with q values 628 # after q max. Both of these should be addressed before 629 # replacing this code. 630 composition = self._model_info.composition 631 if composition and composition[0] == 'product': # only P*S for now 632 with calculation_lock: 633 self._calculate_Iq(qx) 634 return self._intermediate_results 635 else: 636 return None 610 637 611 638 def calculate_Iq(self, qx, qy=None): … … 648 675 result = calculator(call_details, values, cutoff=self.cutoff, 649 676 magnetic=is_magnetic) 677 self._intermediate_results = getattr(calculator, 'results', None) 650 678 calculator.release() 651 679 self._model.release() -
deploy.sh
r9d1e3e4 r2ba5ba5 1 if [ [ $encrypted_cb04388797b6_iv ]]1 if [ "$encrypted_cb04388797b6_iv" ] 2 2 then 3 3 eval "$(ssh-agent -s)" -
sasmodels/models/fractal_core_shell.py
r64eecf7 rca04add 22 22 \frac{\sin(qr_c)-qr_c\cos(qr_c)}{(qr_c)^3}+ 23 23 3V_s(\rho_s-\rho_{solv}) 24 \frac{\sin(qr_s)-qr_s\cos(qr_s)}{(qr_s)^3}\right]^2 25 24 \frac{\sin(qr_s)-qr_s\cos(qr_s)}{(qr_s)^3}\right]^2 \\ 26 25 S(q) &= 1 + \frac{D_f\ \Gamma\!(D_f-1)}{[1+1/(q\xi)^2]^{(D_f-1)/2}} 27 26 \frac{\sin[(D_f-1)\tan^{-1}(q\xi)]}{(qr_s)^{D_f}} -
sasmodels/models/mass_surface_fractal.py
r232bb12 rca04add 22 22 .. math:: 23 23 24 I(q) = scale \times P(q) + background 25 24 I(q) = scale \times P(q) + background \\ 26 25 P(q) = \left\{ \left[ 1+(q^2a)\right]^{D_m/2} \times 27 26 \left[ 1+(q^2b)\right]^{(6-D_s-D_m)/2} 28 \right\}^{-1} 29 30 a = R_{g}^2/(3D_m/2) 31 32 b = r_{g}^2/[-3(D_s+D_m-6)/2] 33 27 \right\}^{-1} \\ 28 a = R_{g}^2/(3D_m/2) \\ 29 b = r_{g}^2/[-3(D_s+D_m-6)/2] \\ 34 30 scale = scale\_factor \times NV^2 (\rho_{particle} - \rho_{solvent})^2 35 31 -
sasmodels/models/mono_gauss_coil.py
r404ebbd rca04add 24 24 25 25 I_0 &= \phi_\text{poly} \cdot V 26 \cdot (\rho_\text{poly} - \rho_\text{solv})^2 27 28 P(q) &= 2 [\exp(-Z) + Z - 1] / Z^2 29 30 Z &= (q R_g)^2 31 26 \cdot (\rho_\text{poly} - \rho_\text{solv})^2 \\ 27 P(q) &= 2 [\exp(-Z) + Z - 1] / Z^2 \\ 28 Z &= (q R_g)^2 \\ 32 29 V &= M / (N_A \delta) 33 30 -
sasmodels/models/onion.py
rbccb40f rca04add 81 81 \left[ B\exp 82 82 \left(A (r - r_{\text{shell}-1}) / \Delta t_\text{shell} \right) + C 83 \right] \frac{\sin(qr)}{qr}\,r^2\,\mathrm{d}r 84 83 \right] \frac{\sin(qr)}{qr}\,r^2\,\mathrm{d}r \\ 85 84 &= 3BV(r_\text{shell}) e^A h(\alpha_\text{out},\beta_\text{out}) 86 85 - 3BV(r_{\text{shell}-1}) h(\alpha_\text{in},\beta_\text{in}) … … 95 94 \begin{align*} 96 95 B&=\frac{\rho_\text{out} - \rho_\text{in}}{e^A-1} 97 & C &= \frac{\rho_\text{in}e^A - \rho_\text{out}}{e^A-1} \\96 & C &= \frac{\rho_\text{in}e^A - \rho_\text{out}}{e^A-1} \\ 98 97 \alpha_\text{in} &= A\frac{r_{\text{shell}-1}}{\Delta t_\text{shell}} 99 & \alpha_\text{out} &= A\frac{r_\text{shell}}{\Delta t_\text{shell}} \\98 & \alpha_\text{out} &= A\frac{r_\text{shell}}{\Delta t_\text{shell}} \\ 100 99 \beta_\text{in} &= qr_{\text{shell}-1} 101 & \beta_\text{out} &= qr_\text{shell} \\100 & \beta_\text{out} &= qr_\text{shell} \\ 102 101 \end{align*} 103 102 -
sasmodels/models/parallelepiped.py
r30b60d2 rca04add 62 62 \left\{S\left[\frac{\mu}{2}\cos\left(\frac{\pi}{2}u\right)\right] 63 63 S\left[\frac{\mu a}{2}\sin\left(\frac{\pi}{2}u\right)\right] 64 \right\}^2 du 65 66 S(x) &= \frac{\sin x}{x} 67 64 \right\}^2 du \\ 65 S(x) &= \frac{\sin x}{x} \\ 68 66 \mu &= qB 69 67 … … 133 131 .. math:: 134 132 135 \cos\alpha &= \hat A \cdot \hat q, 136 137 \cos\beta &= \hat B \cdot \hat q, 138 133 \cos\alpha &= \hat A \cdot \hat q, \\ 134 \cos\beta &= \hat B \cdot \hat q, \\ 139 135 \cos\gamma &= \hat C \cdot \hat q 140 136 -
sasmodels/models/poly_gauss_coil.py
r404ebbd rca04add 21 21 .. math:: 22 22 23 I_0 &= \phi_\text{poly} \cdot V \cdot (\rho_\text{poly}-\rho_\text{solv})^2 24 25 P(q) &= 2 [(1 + UZ)^{-1/U} + Z - 1] / [(1 + U) Z^2] 26 27 Z &= [(q R_g)^2] / (1 + 2U) 28 29 U &= (Mw / Mn) - 1 = \text{polydispersity ratio} - 1 30 23 I_0 &= \phi_\text{poly} \cdot V \cdot (\rho_\text{poly}-\rho_\text{solv})^2 \\ 24 P(q) &= 2 [(1 + UZ)^{-1/U} + Z - 1] / [(1 + U) Z^2] \\ 25 Z &= [(q R_g)^2] / (1 + 2U) \\ 26 U &= (Mw / Mn) - 1 = \text{polydispersity ratio} - 1 \\ 31 27 V &= M / (N_A \delta) 32 28 -
sasmodels/models/polymer_micelle.py
r404ebbd rca04add 26 26 27 27 .. math:: 28 P(q) = N^2\beta^2_s\Phi(qR)^2+N\beta^2_cP_c(q)+2N^2\beta_s\beta_cS_{sc}s_c(q)+N(N-1)\beta_c^2S_{cc}(q) 29 30 \beta_s = v\_core(sld\_core - sld\_solvent) 31 28 P(q) = N^2\beta^2_s\Phi(qR)^2+N\beta^2_cP_c(q)+2N^2\beta_s\beta_cS_{sc}s_c(q)+N(N-1)\beta_c^2S_{cc}(q) \\ 29 \beta_s = v\_core(sld\_core - sld\_solvent) \\ 32 30 \beta_c = v\_corona(sld\_corona - sld\_solvent) 33 31 … … 41 39 .. math:: 42 40 43 P_c(q) &= 2 [\exp(-Z) + Z - 1] / Z^2 44 41 P_c(q) &= 2 [\exp(-Z) + Z - 1] / Z^2 \\ 45 42 Z &= (q R_g)^2 46 43 … … 50 47 .. math:: 51 48 52 S_{sc}(q)=\Phi(qR)\psi(Z)\frac{sin(q(R+d.R_g))}{q(R+d.R_g)} 53 54 S_{cc}(q)=\psi(Z)^2\left[\frac{sin(q(R+d.R_g))}{q(R+d.R_g)} \right ]^2 55 49 S_{sc}(q)=\Phi(qR)\psi(Z)\frac{sin(q(R+d.R_g))}{q(R+d.R_g)} \\ 50 S_{cc}(q)=\psi(Z)^2\left[\frac{sin(q(R+d.R_g))}{q(R+d.R_g)} \right ]^2 \\ 56 51 \psi(Z)=\frac{[1-exp^{-Z}]}{Z} 57 52 -
sasmodels/models/spherical_sld.py
r2ad5d30 rca04add 51 51 3 \rho_\text{core} V(r_\text{core}) 52 52 \Big[ \frac{\sin(qr_\text{core}) - qr_\text{core} \cos(qr_\text{core})} 53 {qr_\text{core}^3} \Big] 54 53 {qr_\text{core}^3} \Big] \\ 55 54 f_{\text{inter}_i} &= 4 \pi \int_{\Delta t_{ \text{inter}_i } } 56 \rho_{ \text{inter}_i } \frac{\sin(qr)} {qr} r^2 dr 57 55 \rho_{ \text{inter}_i } \frac{\sin(qr)} {qr} r^2 dr \\ 58 56 f_{\text{shell}_i} &= 4 \pi \int_{\Delta t_{ \text{inter}_i } } 59 57 \rho_{ \text{flat}_i } \frac{\sin(qr)} {qr} r^2 dr = … … 66 64 -3 \rho_{ \text{flat}_i } V(r_{ \text{inter}_i }) 67 65 \Big[ \frac{\sin(qr_{\text{inter}_i}) - qr_{\text{flat}_i} 68 \cos(qr_{\text{inter}_i}) } {qr_{\text{inter}_i}^3} \Big] 69 66 \cos(qr_{\text{inter}_i}) } {qr_{\text{inter}_i}^3} \Big] \\ 70 67 f_\text{solvent} &= 4 \pi \int_{r_N}^{\infty} \rho_\text{solvent} 71 68 \frac{\sin(qr)} {qr} r^2 dr = … … 122 119 4 \pi \sum_{j=1}^{n_\text{steps}} 123 120 \int_{r_j}^{r_{j+1}} \rho_{ \text{inter}_i } (r_j) 124 \frac{\sin(qr)} {qr} r^2 dr 125 126 &\approx 4 \pi \sum_{j=1}^{n_\text{steps}} \Big[ 121 \frac{\sin(qr)} {qr} r^2 dr \\ 122 \approx 4 \pi \sum_{j=1}^{n_\text{steps}} \Big[ 127 123 3 ( \rho_{ \text{inter}_i } ( r_{j+1} ) - \rho_{ \text{inter}_i } 128 124 ( r_{j} ) V (r_j) 129 125 \Big[ \frac {r_j^2 \beta_\text{out}^2 \sin(\beta_\text{out}) 130 126 - (\beta_\text{out}^2-2) \cos(\beta_\text{out}) } 131 {\beta_\text{out}^4 } \Big] 132 133 &{} - 3 ( \rho_{ \text{inter}_i } ( r_{j+1} ) - \rho_{ \text{inter}_i } 127 {\beta_\text{out}^4 } \Big] \\ 128 {} - 3 ( \rho_{ \text{inter}_i } ( r_{j+1} ) - \rho_{ \text{inter}_i } 134 129 ( r_{j} ) V ( r_{j-1} ) 135 130 \Big[ \frac {r_{j-1}^2 \sin(\beta_\text{in}) 136 131 - (\beta_\text{in}^2-2) \cos(\beta_\text{in}) } 137 {\beta_\text{in}^4 } \Big] 138 139 &{} + 3 \rho_{ \text{inter}_i } ( r_{j+1} ) V ( r_j ) 132 {\beta_\text{in}^4 } \Big] \\ 133 {} + 3 \rho_{ \text{inter}_i } ( r_{j+1} ) V ( r_j ) 140 134 \Big[ \frac {\sin(\beta_\text{out}) - \cos(\beta_\text{out}) } 141 135 {\beta_\text{out}^4 } \Big] … … 152 146 \begin{align*} 153 147 V(a) &= \frac {4\pi}{3}a^3 && \\ 154 a_\text{in} &\sim \frac{r_j}{r_{j+1} -r_j} \text{, } &a_\text{out}155 &\sim \frac{r_{j+1}}{r_{j+1} -r_j} \\156 \beta_\text{in} &= qr_j \text{, } & \beta_\text{out} &= qr_{j+1}148 a_\text{in} \sim \frac{r_j}{r_{j+1} -r_j} \text{, } & a_\text{out} 149 \sim \frac{r_{j+1}}{r_{j+1} -r_j} \\ 150 \beta_\text{in} &= qr_j \text{, } & \beta_\text{out} &= qr_{j+1} 157 151 \end{align*} 158 152 -
sasmodels/models/star_polymer.py
r30b60d2 rbef029d 36 36 Star polymers in solutions tend to have strong interparticle and osmotic 37 37 effects. Thus the Benoit equation may not work well for many real cases. 38 At small $q$ the Guinier term and hence $I(q=0)$ is the same as for $f$ arms 39 of radius of gyration $R_g$, as described for the :ref:`mono-gauss-coil` 40 model. A newer model for star polymer incorporating excluded volume has been 41 developed by Li et al in arXiv:1404.6269 [physics.chem-ph]. 38 A newer model for star polymer incorporating excluded volume has been 39 developed by Li et al in arXiv:1404.6269 [physics.chem-ph]. Also, at small 40 $q$ the scattering, i.e. the Guinier term, is not sensitive to the number of 41 arms, and hence 'scale' here is simply $I(q=0)$ as described for the 42 :ref:`mono-gauss-coil` model, using volume fraction $\phi$ and volume V 43 for the whole star polymer. 42 44 43 45 References
Note: See TracChangeset
for help on using the changeset viewer.