├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── sar4seq
├── Data
│ ├── Mass_cell.mat
│ ├── QGlobal.mat
│ ├── Qglobal.qmat
│ ├── SigmabyRhox.mat
│ ├── Tissue_types.mat
│ └── external.seq
├── Q_mat_gen.m
├── Qmat.mat
├── SAR4seq.m
├── VOP_Qmatrices_v3.m
├── seq_files
│ ├── 120_tse.seq
│ ├── 120_tse500ms.seq
│ ├── 130_tse.seq
│ ├── 140_tse.seq
│ ├── 140_tse500ms.seq
│ ├── 150_tse.seq
│ ├── 160_tse.seq
│ ├── 160_tse500ms.seq
│ ├── 170_tse.seq
│ ├── 180_tse.seq
│ ├── 180_tse500ms.seq
│ ├── ge3d.seq
│ ├── haste.seq
│ └── tse.seq
├── utils
│ ├── SAR4seq_arxiv.m
│ ├── calc_SAR.m
│ ├── chkcubair_global.m
│ ├── do_sw_sar.m
│ ├── gen_E12ptQ.m
│ ├── gen_Qpwr.m
│ ├── get_EMmodel.m
│ ├── get_coremat.m
│ ├── read_qmat.m
│ └── write_qmat.m
└── writeTSE_500ms.m
└── writeTSE_500ms.m
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | #MATLAB generated
2 | *.m~
3 |
4 |
5 | # Byte-compiled / optimized / DLL files
6 | __pycache__/
7 | *.py[cod]
8 | *$py.class
9 |
10 | # C extensions
11 | *.so
12 |
13 | # Distribution / packaging
14 | .Python
15 | build/
16 | develop-eggs/
17 | dist/
18 | downloads/
19 | eggs/
20 | .eggs/
21 | lib/
22 | lib64/
23 | parts/
24 | sdist/
25 | var/
26 | wheels/
27 | *.egg-info/
28 | .installed.cfg
29 | *.egg
30 | MANIFEST
31 |
32 | # PyInstaller
33 | # Usually these files are written by a python script from a template
34 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
35 | *.manifest
36 | *.spec
37 |
38 | # Installer logs
39 | pip-log.txt
40 | pip-delete-this-directory.txt
41 |
42 | # Unit test / coverage reports
43 | htmlcov/
44 | .tox/
45 | .coverage
46 | .coverage.*
47 | .cache
48 | nosetests.xml
49 | coverage.xml
50 | *.cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 |
63 | # Flask stuff:
64 | instance/
65 | .webassets-cache
66 |
67 | # Scrapy stuff:
68 | .scrapy
69 |
70 | # Sphinx documentation
71 | docs/_build/
72 |
73 | # PyBuilder
74 | target/
75 |
76 | # Jupyter Notebook
77 | .ipynb_checkpoints
78 |
79 | # pyenv
80 | .python-version
81 |
82 | # celery beat schedule file
83 | celerybeat-schedule
84 |
85 | # SageMath parsed files
86 | *.sage.py
87 |
88 | # Environments
89 | .env
90 | .venv
91 | env/
92 | venv/
93 | ENV/
94 | env.bak/
95 | venv.bak/
96 |
97 | # Spyder project settings
98 | .spyderproject
99 | .spyproject
100 |
101 | # Rope project settings
102 | .ropeproject
103 |
104 | # mkdocs documentation
105 | /site
106 |
107 | # mypy
108 | .mypy_cache/
109 |
110 | # database
111 | .db
112 |
113 | # Work in progress code
114 | src_working/
115 |
116 | # PyCharm idea files
117 | \.idea/
118 | /.idea/
119 |
120 | serverlog\.txt
121 |
122 | src/server/registration/subject\.db
123 |
124 | \.DS_Store
125 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to making participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, sex characteristics, gender identity and expression,
9 | level of experience, education, socio-economic status, nationality, personal
10 | appearance, race, religion, or sexual identity and orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or
41 | reject comments, commits, code, wiki edits, issues, and other contributions
42 | that are not aligned to this Code of Conduct, or to ban temporarily or
43 | permanently any contributor for other behaviors that they deem inappropriate,
44 | threatening, offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the project team at sairamgeethanath@gmail.com. All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an incident.
62 | Further details of specific enforcement policies may be posted separately.
63 |
64 | Project maintainers who do not follow or enforce the Code of Conduct in good
65 | faith may face temporary or permanent repercussions as determined by other
66 | members of the project's leadership.
67 |
68 | ## Attribution
69 |
70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72 |
73 | [homepage]: https://www.contributor-covenant.org
74 |
75 | For answers to common questions about this code of conduct, see
76 | https://www.contributor-covenant.org/faq
77 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to Virtual Scanner
2 | :thumbsup: :tada: First off, thanks for taking time to contribute! :thumbsup: :tada:
3 |
4 | The following is a set of guidelines for contributing to Virtual Scanner. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
5 |
6 | ## Table of contents
7 | 1. [Contributing](#contributing-to-the-software)
8 | 2. [Reporting Issues](#reporting-issues)
9 | 3. [Seeking Support](#seeking-support)
10 |
11 | These can be very brief. Also, for folks not familiar with the CONTRIBUTING.md file, maybe make a quick mention of it in your README.md and link to it.
12 |
13 | ## Contributing to the Software
14 |
15 | If you would like to contribute to Virtual Scanner, please Fork and make a pull request with adequate documentation of functionality. In addition, please take a look at the Code of Conduct and documentation guide below:
16 |
17 | **Code of Conduct**
18 |
19 | This project and everyone participating in it is governed by the [Virtual-Scanner Code of Conduct](https://github.com/imr-framework/Virtual-Scanner/blob/ISMRM2019/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to imr.framework2018@github.com.
20 |
21 | **PEP Style Guide for Python Code**
22 |
23 | Read through the [Style Guide for Python Code](https://www.python.org/dev/peps/pep-0008/) and follow the coding conventions. If you notice any of Virtual-Scanner's code not adhering to PEP8, submit a pull request or open an issue.
24 |
25 | **Source code header**
26 |
27 | Insert and fill out the following header comments at the top of every script in your source code:
28 | ```
29 | Institution : (your university/research facility)
30 | Version : 1.0.0
31 | ```
32 | Note that "Version" refers to the Virtual Scanner release you developed your code on. You can add more fields if needed.
33 |
34 | **Documenting source code**
35 |
36 | Please add a top-level description of code functionality in each script. In addition, document every class and method in your source code using the [Numpy docstring guide](https://numpydoc.readthedocs.io/en/latest/format.html). An example is shown below.
37 |
38 | ```python
39 | def addition(a, b):
40 | """
41 | Addition of two numbers.
42 |
43 | Parameters
44 | ----------
45 | a : int, float
46 | Operand 1
47 | b : int, float
48 | Operand 2
49 |
50 | Returns
51 | -------
52 | Arthimetic sum of operand 1 and operand 2.
53 | """
54 | return a + b
55 | ```
56 | ## Reporting Issues
57 | Please report issues in Github Issues, following the given format for either "Bug Report" or "Feature Request".
58 | If there are issues with a specific GUI page, please use one of these links:
59 | * [Register](https://bit.ly/2G1xp9l)
60 | * [Acquire](https://bit.ly/2xB7qB4)
61 | * [Analyze](https://bit.ly/2XDFNlw)
62 | * [Tx](https://docs.google.com/forms/d/1267utGFl5VPDLE_6lQu153tF4vSTDTi4Kni9uam_QsM)
63 | * [Rx](https://forms.gle/DkA87kZZPmk975KE8)
64 |
65 | ## Seeking Support
66 | For support in installing and using Virtual Scanner, please feel free to either use Github Issues or ask on our [Slack channel](https://bit.ly/2I7ZXzw).
67 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU AFFERO GENERAL PUBLIC LICENSE
2 | Version 3, 19 November 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU Affero General Public License is a free, copyleft license for
11 | software and other kinds of works, specifically designed to ensure
12 | cooperation with the community in the case of network server software.
13 |
14 | The licenses for most software and other practical works are designed
15 | to take away your freedom to share and change the works. By contrast,
16 | our General Public Licenses are intended to guarantee your freedom to
17 | share and change all versions of a program--to make sure it remains free
18 | software for all its users.
19 |
20 | When we speak of free software, we are referring to freedom, not
21 | price. Our General Public Licenses are designed to make sure that you
22 | have the freedom to distribute copies of free software (and charge for
23 | them if you wish), that you receive source code or can get it if you
24 | want it, that you can change the software or use pieces of it in new
25 | free programs, and that you know you can do these things.
26 |
27 | Developers that use our General Public Licenses protect your rights
28 | with two steps: (1) assert copyright on the software, and (2) offer
29 | you this License which gives you legal permission to copy, distribute
30 | and/or modify the software.
31 |
32 | A secondary benefit of defending all users' freedom is that
33 | improvements made in alternate versions of the program, if they
34 | receive widespread use, become available for other developers to
35 | incorporate. Many developers of free software are heartened and
36 | encouraged by the resulting cooperation. However, in the case of
37 | software used on network servers, this result may fail to come about.
38 | The GNU General Public License permits making a modified version and
39 | letting the public access it on a server without ever releasing its
40 | source code to the public.
41 |
42 | The GNU Affero General Public License is designed specifically to
43 | ensure that, in such cases, the modified source code becomes available
44 | to the community. It requires the operator of a network server to
45 | provide the source code of the modified version running there to the
46 | users of that server. Therefore, public use of a modified version, on
47 | a publicly accessible server, gives the public access to the source
48 | code of the modified version.
49 |
50 | An older license, called the Affero General Public License and
51 | published by Affero, was designed to accomplish similar goals. This is
52 | a different license, not a version of the Affero GPL, but Affero has
53 | released a new version of the Affero GPL which permits relicensing under
54 | this license.
55 |
56 | The precise terms and conditions for copying, distribution and
57 | modification follow.
58 |
59 | TERMS AND CONDITIONS
60 |
61 | 0. Definitions.
62 |
63 | "This License" refers to version 3 of the GNU Affero General Public License.
64 |
65 | "Copyright" also means copyright-like laws that apply to other kinds of
66 | works, such as semiconductor masks.
67 |
68 | "The Program" refers to any copyrightable work licensed under this
69 | License. Each licensee is addressed as "you". "Licensees" and
70 | "recipients" may be individuals or organizations.
71 |
72 | To "modify" a work means to copy from or adapt all or part of the work
73 | in a fashion requiring copyright permission, other than the making of an
74 | exact copy. The resulting work is called a "modified version" of the
75 | earlier work or a work "based on" the earlier work.
76 |
77 | A "covered work" means either the unmodified Program or a work based
78 | on the Program.
79 |
80 | To "propagate" a work means to do anything with it that, without
81 | permission, would make you directly or secondarily liable for
82 | infringement under applicable copyright law, except executing it on a
83 | computer or modifying a private copy. Propagation includes copying,
84 | distribution (with or without modification), making available to the
85 | public, and in some countries other activities as well.
86 |
87 | To "convey" a work means any kind of propagation that enables other
88 | parties to make or receive copies. Mere interaction with a user through
89 | a computer network, with no transfer of a copy, is not conveying.
90 |
91 | An interactive user interface displays "Appropriate Legal Notices"
92 | to the extent that it includes a convenient and prominently visible
93 | feature that (1) displays an appropriate copyright notice, and (2)
94 | tells the user that there is no warranty for the work (except to the
95 | extent that warranties are provided), that licensees may convey the
96 | work under this License, and how to view a copy of this License. If
97 | the interface presents a list of user commands or options, such as a
98 | menu, a prominent item in the list meets this criterion.
99 |
100 | 1. Source Code.
101 |
102 | The "source code" for a work means the preferred form of the work
103 | for making modifications to it. "Object code" means any non-source
104 | form of a work.
105 |
106 | A "Standard Interface" means an interface that either is an official
107 | standard defined by a recognized standards body, or, in the case of
108 | interfaces specified for a particular programming language, one that
109 | is widely used among developers working in that language.
110 |
111 | The "System Libraries" of an executable work include anything, other
112 | than the work as a whole, that (a) is included in the normal form of
113 | packaging a Major Component, but which is not part of that Major
114 | Component, and (b) serves only to enable use of the work with that
115 | Major Component, or to implement a Standard Interface for which an
116 | implementation is available to the public in source code form. A
117 | "Major Component", in this context, means a major essential component
118 | (kernel, window system, and so on) of the specific operating system
119 | (if any) on which the executable work runs, or a compiler used to
120 | produce the work, or an object code interpreter used to run it.
121 |
122 | The "Corresponding Source" for a work in object code form means all
123 | the source code needed to generate, install, and (for an executable
124 | work) run the object code and to modify the work, including scripts to
125 | control those activities. However, it does not include the work's
126 | System Libraries, or general-purpose tools or generally available free
127 | programs which are used unmodified in performing those activities but
128 | which are not part of the work. For example, Corresponding Source
129 | includes interface definition files associated with source files for
130 | the work, and the source code for shared libraries and dynamically
131 | linked subprograms that the work is specifically designed to require,
132 | such as by intimate data communication or control flow between those
133 | subprograms and other parts of the work.
134 |
135 | The Corresponding Source need not include anything that users
136 | can regenerate automatically from other parts of the Corresponding
137 | Source.
138 |
139 | The Corresponding Source for a work in source code form is that
140 | same work.
141 |
142 | 2. Basic Permissions.
143 |
144 | All rights granted under this License are granted for the term of
145 | copyright on the Program, and are irrevocable provided the stated
146 | conditions are met. This License explicitly affirms your unlimited
147 | permission to run the unmodified Program. The output from running a
148 | covered work is covered by this License only if the output, given its
149 | content, constitutes a covered work. This License acknowledges your
150 | rights of fair use or other equivalent, as provided by copyright law.
151 |
152 | You may make, run and propagate covered works that you do not
153 | convey, without conditions so long as your license otherwise remains
154 | in force. You may convey covered works to others for the sole purpose
155 | of having them make modifications exclusively for you, or provide you
156 | with facilities for running those works, provided that you comply with
157 | the terms of this License in conveying all material for which you do
158 | not control copyright. Those thus making or running the covered works
159 | for you must do so exclusively on your behalf, under your direction
160 | and control, on terms that prohibit them from making any copies of
161 | your copyrighted material outside their relationship with you.
162 |
163 | Conveying under any other circumstances is permitted solely under
164 | the conditions stated below. Sublicensing is not allowed; section 10
165 | makes it unnecessary.
166 |
167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
168 |
169 | No covered work shall be deemed part of an effective technological
170 | measure under any applicable law fulfilling obligations under article
171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
172 | similar laws prohibiting or restricting circumvention of such
173 | measures.
174 |
175 | When you convey a covered work, you waive any legal power to forbid
176 | circumvention of technological measures to the extent such circumvention
177 | is effected by exercising rights under this License with respect to
178 | the covered work, and you disclaim any intention to limit operation or
179 | modification of the work as a means of enforcing, against the work's
180 | users, your or third parties' legal rights to forbid circumvention of
181 | technological measures.
182 |
183 | 4. Conveying Verbatim Copies.
184 |
185 | You may convey verbatim copies of the Program's source code as you
186 | receive it, in any medium, provided that you conspicuously and
187 | appropriately publish on each copy an appropriate copyright notice;
188 | keep intact all notices stating that this License and any
189 | non-permissive terms added in accord with section 7 apply to the code;
190 | keep intact all notices of the absence of any warranty; and give all
191 | recipients a copy of this License along with the Program.
192 |
193 | You may charge any price or no price for each copy that you convey,
194 | and you may offer support or warranty protection for a fee.
195 |
196 | 5. Conveying Modified Source Versions.
197 |
198 | You may convey a work based on the Program, or the modifications to
199 | produce it from the Program, in the form of source code under the
200 | terms of section 4, provided that you also meet all of these conditions:
201 |
202 | a) The work must carry prominent notices stating that you modified
203 | it, and giving a relevant date.
204 |
205 | b) The work must carry prominent notices stating that it is
206 | released under this License and any conditions added under section
207 | 7. This requirement modifies the requirement in section 4 to
208 | "keep intact all notices".
209 |
210 | c) You must license the entire work, as a whole, under this
211 | License to anyone who comes into possession of a copy. This
212 | License will therefore apply, along with any applicable section 7
213 | additional terms, to the whole of the work, and all its parts,
214 | regardless of how they are packaged. This License gives no
215 | permission to license the work in any other way, but it does not
216 | invalidate such permission if you have separately received it.
217 |
218 | d) If the work has interactive user interfaces, each must display
219 | Appropriate Legal Notices; however, if the Program has interactive
220 | interfaces that do not display Appropriate Legal Notices, your
221 | work need not make them do so.
222 |
223 | A compilation of a covered work with other separate and independent
224 | works, which are not by their nature extensions of the covered work,
225 | and which are not combined with it such as to form a larger program,
226 | in or on a volume of a storage or distribution medium, is called an
227 | "aggregate" if the compilation and its resulting copyright are not
228 | used to limit the access or legal rights of the compilation's users
229 | beyond what the individual works permit. Inclusion of a covered work
230 | in an aggregate does not cause this License to apply to the other
231 | parts of the aggregate.
232 |
233 | 6. Conveying Non-Source Forms.
234 |
235 | You may convey a covered work in object code form under the terms
236 | of sections 4 and 5, provided that you also convey the
237 | machine-readable Corresponding Source under the terms of this License,
238 | in one of these ways:
239 |
240 | a) Convey the object code in, or embodied in, a physical product
241 | (including a physical distribution medium), accompanied by the
242 | Corresponding Source fixed on a durable physical medium
243 | customarily used for software interchange.
244 |
245 | b) Convey the object code in, or embodied in, a physical product
246 | (including a physical distribution medium), accompanied by a
247 | written offer, valid for at least three years and valid for as
248 | long as you offer spare parts or customer support for that product
249 | model, to give anyone who possesses the object code either (1) a
250 | copy of the Corresponding Source for all the software in the
251 | product that is covered by this License, on a durable physical
252 | medium customarily used for software interchange, for a price no
253 | more than your reasonable cost of physically performing this
254 | conveying of source, or (2) access to copy the
255 | Corresponding Source from a network server at no charge.
256 |
257 | c) Convey individual copies of the object code with a copy of the
258 | written offer to provide the Corresponding Source. This
259 | alternative is allowed only occasionally and noncommercially, and
260 | only if you received the object code with such an offer, in accord
261 | with subsection 6b.
262 |
263 | d) Convey the object code by offering access from a designated
264 | place (gratis or for a charge), and offer equivalent access to the
265 | Corresponding Source in the same way through the same place at no
266 | further charge. You need not require recipients to copy the
267 | Corresponding Source along with the object code. If the place to
268 | copy the object code is a network server, the Corresponding Source
269 | may be on a different server (operated by you or a third party)
270 | that supports equivalent copying facilities, provided you maintain
271 | clear directions next to the object code saying where to find the
272 | Corresponding Source. Regardless of what server hosts the
273 | Corresponding Source, you remain obligated to ensure that it is
274 | available for as long as needed to satisfy these requirements.
275 |
276 | e) Convey the object code using peer-to-peer transmission, provided
277 | you inform other peers where the object code and Corresponding
278 | Source of the work are being offered to the general public at no
279 | charge under subsection 6d.
280 |
281 | A separable portion of the object code, whose source code is excluded
282 | from the Corresponding Source as a System Library, need not be
283 | included in conveying the object code work.
284 |
285 | A "User Product" is either (1) a "consumer product", which means any
286 | tangible personal property which is normally used for personal, family,
287 | or household purposes, or (2) anything designed or sold for incorporation
288 | into a dwelling. In determining whether a product is a consumer product,
289 | doubtful cases shall be resolved in favor of coverage. For a particular
290 | product received by a particular user, "normally used" refers to a
291 | typical or common use of that class of product, regardless of the status
292 | of the particular user or of the way in which the particular user
293 | actually uses, or expects or is expected to use, the product. A product
294 | is a consumer product regardless of whether the product has substantial
295 | commercial, industrial or non-consumer uses, unless such uses represent
296 | the only significant mode of use of the product.
297 |
298 | "Installation Information" for a User Product means any methods,
299 | procedures, authorization keys, or other information required to install
300 | and execute modified versions of a covered work in that User Product from
301 | a modified version of its Corresponding Source. The information must
302 | suffice to ensure that the continued functioning of the modified object
303 | code is in no case prevented or interfered with solely because
304 | modification has been made.
305 |
306 | If you convey an object code work under this section in, or with, or
307 | specifically for use in, a User Product, and the conveying occurs as
308 | part of a transaction in which the right of possession and use of the
309 | User Product is transferred to the recipient in perpetuity or for a
310 | fixed term (regardless of how the transaction is characterized), the
311 | Corresponding Source conveyed under this section must be accompanied
312 | by the Installation Information. But this requirement does not apply
313 | if neither you nor any third party retains the ability to install
314 | modified object code on the User Product (for example, the work has
315 | been installed in ROM).
316 |
317 | The requirement to provide Installation Information does not include a
318 | requirement to continue to provide support service, warranty, or updates
319 | for a work that has been modified or installed by the recipient, or for
320 | the User Product in which it has been modified or installed. Access to a
321 | network may be denied when the modification itself materially and
322 | adversely affects the operation of the network or violates the rules and
323 | protocols for communication across the network.
324 |
325 | Corresponding Source conveyed, and Installation Information provided,
326 | in accord with this section must be in a format that is publicly
327 | documented (and with an implementation available to the public in
328 | source code form), and must require no special password or key for
329 | unpacking, reading or copying.
330 |
331 | 7. Additional Terms.
332 |
333 | "Additional permissions" are terms that supplement the terms of this
334 | License by making exceptions from one or more of its conditions.
335 | Additional permissions that are applicable to the entire Program shall
336 | be treated as though they were included in this License, to the extent
337 | that they are valid under applicable law. If additional permissions
338 | apply only to part of the Program, that part may be used separately
339 | under those permissions, but the entire Program remains governed by
340 | this License without regard to the additional permissions.
341 |
342 | When you convey a copy of a covered work, you may at your option
343 | remove any additional permissions from that copy, or from any part of
344 | it. (Additional permissions may be written to require their own
345 | removal in certain cases when you modify the work.) You may place
346 | additional permissions on material, added by you to a covered work,
347 | for which you have or can give appropriate copyright permission.
348 |
349 | Notwithstanding any other provision of this License, for material you
350 | add to a covered work, you may (if authorized by the copyright holders of
351 | that material) supplement the terms of this License with terms:
352 |
353 | a) Disclaiming warranty or limiting liability differently from the
354 | terms of sections 15 and 16 of this License; or
355 |
356 | b) Requiring preservation of specified reasonable legal notices or
357 | author attributions in that material or in the Appropriate Legal
358 | Notices displayed by works containing it; or
359 |
360 | c) Prohibiting misrepresentation of the origin of that material, or
361 | requiring that modified versions of such material be marked in
362 | reasonable ways as different from the original version; or
363 |
364 | d) Limiting the use for publicity purposes of names of licensors or
365 | authors of the material; or
366 |
367 | e) Declining to grant rights under trademark law for use of some
368 | trade names, trademarks, or service marks; or
369 |
370 | f) Requiring indemnification of licensors and authors of that
371 | material by anyone who conveys the material (or modified versions of
372 | it) with contractual assumptions of liability to the recipient, for
373 | any liability that these contractual assumptions directly impose on
374 | those licensors and authors.
375 |
376 | All other non-permissive additional terms are considered "further
377 | restrictions" within the meaning of section 10. If the Program as you
378 | received it, or any part of it, contains a notice stating that it is
379 | governed by this License along with a term that is a further
380 | restriction, you may remove that term. If a license document contains
381 | a further restriction but permits relicensing or conveying under this
382 | License, you may add to a covered work material governed by the terms
383 | of that license document, provided that the further restriction does
384 | not survive such relicensing or conveying.
385 |
386 | If you add terms to a covered work in accord with this section, you
387 | must place, in the relevant source files, a statement of the
388 | additional terms that apply to those files, or a notice indicating
389 | where to find the applicable terms.
390 |
391 | Additional terms, permissive or non-permissive, may be stated in the
392 | form of a separately written license, or stated as exceptions;
393 | the above requirements apply either way.
394 |
395 | 8. Termination.
396 |
397 | You may not propagate or modify a covered work except as expressly
398 | provided under this License. Any attempt otherwise to propagate or
399 | modify it is void, and will automatically terminate your rights under
400 | this License (including any patent licenses granted under the third
401 | paragraph of section 11).
402 |
403 | However, if you cease all violation of this License, then your
404 | license from a particular copyright holder is reinstated (a)
405 | provisionally, unless and until the copyright holder explicitly and
406 | finally terminates your license, and (b) permanently, if the copyright
407 | holder fails to notify you of the violation by some reasonable means
408 | prior to 60 days after the cessation.
409 |
410 | Moreover, your license from a particular copyright holder is
411 | reinstated permanently if the copyright holder notifies you of the
412 | violation by some reasonable means, this is the first time you have
413 | received notice of violation of this License (for any work) from that
414 | copyright holder, and you cure the violation prior to 30 days after
415 | your receipt of the notice.
416 |
417 | Termination of your rights under this section does not terminate the
418 | licenses of parties who have received copies or rights from you under
419 | this License. If your rights have been terminated and not permanently
420 | reinstated, you do not qualify to receive new licenses for the same
421 | material under section 10.
422 |
423 | 9. Acceptance Not Required for Having Copies.
424 |
425 | You are not required to accept this License in order to receive or
426 | run a copy of the Program. Ancillary propagation of a covered work
427 | occurring solely as a consequence of using peer-to-peer transmission
428 | to receive a copy likewise does not require acceptance. However,
429 | nothing other than this License grants you permission to propagate or
430 | modify any covered work. These actions infringe copyright if you do
431 | not accept this License. Therefore, by modifying or propagating a
432 | covered work, you indicate your acceptance of this License to do so.
433 |
434 | 10. Automatic Licensing of Downstream Recipients.
435 |
436 | Each time you convey a covered work, the recipient automatically
437 | receives a license from the original licensors, to run, modify and
438 | propagate that work, subject to this License. You are not responsible
439 | for enforcing compliance by third parties with this License.
440 |
441 | An "entity transaction" is a transaction transferring control of an
442 | organization, or substantially all assets of one, or subdividing an
443 | organization, or merging organizations. If propagation of a covered
444 | work results from an entity transaction, each party to that
445 | transaction who receives a copy of the work also receives whatever
446 | licenses to the work the party's predecessor in interest had or could
447 | give under the previous paragraph, plus a right to possession of the
448 | Corresponding Source of the work from the predecessor in interest, if
449 | the predecessor has it or can get it with reasonable efforts.
450 |
451 | You may not impose any further restrictions on the exercise of the
452 | rights granted or affirmed under this License. For example, you may
453 | not impose a license fee, royalty, or other charge for exercise of
454 | rights granted under this License, and you may not initiate litigation
455 | (including a cross-claim or counterclaim in a lawsuit) alleging that
456 | any patent claim is infringed by making, using, selling, offering for
457 | sale, or importing the Program or any portion of it.
458 |
459 | 11. Patents.
460 |
461 | A "contributor" is a copyright holder who authorizes use under this
462 | License of the Program or a work on which the Program is based. The
463 | work thus licensed is called the contributor's "contributor version".
464 |
465 | A contributor's "essential patent claims" are all patent claims
466 | owned or controlled by the contributor, whether already acquired or
467 | hereafter acquired, that would be infringed by some manner, permitted
468 | by this License, of making, using, or selling its contributor version,
469 | but do not include claims that would be infringed only as a
470 | consequence of further modification of the contributor version. For
471 | purposes of this definition, "control" includes the right to grant
472 | patent sublicenses in a manner consistent with the requirements of
473 | this License.
474 |
475 | Each contributor grants you a non-exclusive, worldwide, royalty-free
476 | patent license under the contributor's essential patent claims, to
477 | make, use, sell, offer for sale, import and otherwise run, modify and
478 | propagate the contents of its contributor version.
479 |
480 | In the following three paragraphs, a "patent license" is any express
481 | agreement or commitment, however denominated, not to enforce a patent
482 | (such as an express permission to practice a patent or covenant not to
483 | sue for patent infringement). To "grant" such a patent license to a
484 | party means to make such an agreement or commitment not to enforce a
485 | patent against the party.
486 |
487 | If you convey a covered work, knowingly relying on a patent license,
488 | and the Corresponding Source of the work is not available for anyone
489 | to copy, free of charge and under the terms of this License, through a
490 | publicly available network server or other readily accessible means,
491 | then you must either (1) cause the Corresponding Source to be so
492 | available, or (2) arrange to deprive yourself of the benefit of the
493 | patent license for this particular work, or (3) arrange, in a manner
494 | consistent with the requirements of this License, to extend the patent
495 | license to downstream recipients. "Knowingly relying" means you have
496 | actual knowledge that, but for the patent license, your conveying the
497 | covered work in a country, or your recipient's use of the covered work
498 | in a country, would infringe one or more identifiable patents in that
499 | country that you have reason to believe are valid.
500 |
501 | If, pursuant to or in connection with a single transaction or
502 | arrangement, you convey, or propagate by procuring conveyance of, a
503 | covered work, and grant a patent license to some of the parties
504 | receiving the covered work authorizing them to use, propagate, modify
505 | or convey a specific copy of the covered work, then the patent license
506 | you grant is automatically extended to all recipients of the covered
507 | work and works based on it.
508 |
509 | A patent license is "discriminatory" if it does not include within
510 | the scope of its coverage, prohibits the exercise of, or is
511 | conditioned on the non-exercise of one or more of the rights that are
512 | specifically granted under this License. You may not convey a covered
513 | work if you are a party to an arrangement with a third party that is
514 | in the business of distributing software, under which you make payment
515 | to the third party based on the extent of your activity of conveying
516 | the work, and under which the third party grants, to any of the
517 | parties who would receive the covered work from you, a discriminatory
518 | patent license (a) in connection with copies of the covered work
519 | conveyed by you (or copies made from those copies), or (b) primarily
520 | for and in connection with specific products or compilations that
521 | contain the covered work, unless you entered into that arrangement,
522 | or that patent license was granted, prior to 28 March 2007.
523 |
524 | Nothing in this License shall be construed as excluding or limiting
525 | any implied license or other defenses to infringement that may
526 | otherwise be available to you under applicable patent law.
527 |
528 | 12. No Surrender of Others' Freedom.
529 |
530 | If conditions are imposed on you (whether by court order, agreement or
531 | otherwise) that contradict the conditions of this License, they do not
532 | excuse you from the conditions of this License. If you cannot convey a
533 | covered work so as to satisfy simultaneously your obligations under this
534 | License and any other pertinent obligations, then as a consequence you may
535 | not convey it at all. For example, if you agree to terms that obligate you
536 | to collect a royalty for further conveying from those to whom you convey
537 | the Program, the only way you could satisfy both those terms and this
538 | License would be to refrain entirely from conveying the Program.
539 |
540 | 13. Remote Network Interaction; Use with the GNU General Public License.
541 |
542 | Notwithstanding any other provision of this License, if you modify the
543 | Program, your modified version must prominently offer all users
544 | interacting with it remotely through a computer network (if your version
545 | supports such interaction) an opportunity to receive the Corresponding
546 | Source of your version by providing access to the Corresponding Source
547 | from a network server at no charge, through some standard or customary
548 | means of facilitating copying of software. This Corresponding Source
549 | shall include the Corresponding Source for any work covered by version 3
550 | of the GNU General Public License that is incorporated pursuant to the
551 | following paragraph.
552 |
553 | Notwithstanding any other provision of this License, you have
554 | permission to link or combine any covered work with a work licensed
555 | under version 3 of the GNU General Public License into a single
556 | combined work, and to convey the resulting work. The terms of this
557 | License will continue to apply to the part which is the covered work,
558 | but the work with which it is combined will remain governed by version
559 | 3 of the GNU General Public License.
560 |
561 | 14. Revised Versions of this License.
562 |
563 | The Free Software Foundation may publish revised and/or new versions of
564 | the GNU Affero General Public License from time to time. Such new versions
565 | will be similar in spirit to the present version, but may differ in detail to
566 | address new problems or concerns.
567 |
568 | Each version is given a distinguishing version number. If the
569 | Program specifies that a certain numbered version of the GNU Affero General
570 | Public License "or any later version" applies to it, you have the
571 | option of following the terms and conditions either of that numbered
572 | version or of any later version published by the Free Software
573 | Foundation. If the Program does not specify a version number of the
574 | GNU Affero General Public License, you may choose any version ever published
575 | by the Free Software Foundation.
576 |
577 | If the Program specifies that a proxy can decide which future
578 | versions of the GNU Affero General Public License can be used, that proxy's
579 | public statement of acceptance of a version permanently authorizes you
580 | to choose that version for the Program.
581 |
582 | Later license versions may give you additional or different
583 | permissions. However, no additional obligations are imposed on any
584 | author or copyright holder as a result of your choosing to follow a
585 | later version.
586 |
587 | 15. Disclaimer of Warranty.
588 |
589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
597 |
598 | 16. Limitation of Liability.
599 |
600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
608 | SUCH DAMAGES.
609 |
610 | 17. Interpretation of Sections 15 and 16.
611 |
612 | If the disclaimer of warranty and limitation of liability provided
613 | above cannot be given local legal effect according to their terms,
614 | reviewing courts shall apply local law that most closely approximates
615 | an absolute waiver of all civil liability in connection with the
616 | Program, unless a warranty or assumption of liability accompanies a
617 | copy of the Program in return for a fee.
618 |
619 | END OF TERMS AND CONDITIONS
620 |
621 | How to Apply These Terms to Your New Programs
622 |
623 | If you develop a new program, and you want it to be of the greatest
624 | possible use to the public, the best way to achieve this is to make it
625 | free software which everyone can redistribute and change under these terms.
626 |
627 | To do so, attach the following notices to the program. It is safest
628 | to attach them to the start of each source file to most effectively
629 | state the exclusion of warranty; and each file should have at least
630 | the "copyright" line and a pointer to where the full notice is found.
631 |
632 |
633 | Copyright (C)
634 |
635 | This program is free software: you can redistribute it and/or modify
636 | it under the terms of the GNU Affero General Public License as published
637 | by the Free Software Foundation, either version 3 of the License, or
638 | (at your option) any later version.
639 |
640 | This program is distributed in the hope that it will be useful,
641 | but WITHOUT ANY WARRANTY; without even the implied warranty of
642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
643 | GNU Affero General Public License for more details.
644 |
645 | You should have received a copy of the GNU Affero General Public License
646 | along with this program. If not, see .
647 |
648 | Also add information on how to contact you by electronic and paper mail.
649 |
650 | If your software can interact with users remotely through a computer
651 | network, you should also make sure that it provides a way for users to
652 | get its source. For example, if your program is a web application, its
653 | interface could display a "Source" link that leads users to an archive
654 | of the code. There are many ways you could offer source, and different
655 | solutions will be better for different programs; see section 13 for the
656 | specific requirements.
657 |
658 | You should also get your employer (if you work as a programmer) or school,
659 | if any, to sign a "copyright disclaimer" for the program, if necessary.
660 | For more information on this, and how to apply and follow the GNU AGPL, see
661 | .
662 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: page
3 | title: sar4seq
4 | ---
5 |
6 | ### Prerequisite:
7 |
8 | Installed Matlab R2015a or later
9 |
10 | Let us know if you face any problems in running the code or validating calculated values by posting in Issues.
11 |
12 | This code implements the methods and corresponding results shown in Geethanath, S., Kabil, J. and Vaughan, J.T., 2020. Radio Frequency Safety Assessment for Open Source Pulse Sequence Programming. Safety and Biological Effects in MRI, p.207.
13 |
14 | ### Demos
15 |
16 | Run the SAR4seq.m to:
17 |
18 | 1. Compute RF safety metrics for Pulseq sequences
19 | a. For Pulseq sequences for deployment on Siemens scanners -
20 | computes time averaged RF power for the sequence
21 | b. For Pulseq sequences for deployment on GE scanners (via TOPPE) -
22 | computes the whole body SAR in W/kg
23 |
24 |
25 | Parameters
26 | ----------
27 | seq_path : Path to Pulseq sequence file - string
28 | seq : Pulseq sequence object determining system parameters - seq
29 | object
30 | Sample_weight : weight of the sample being imaged - double
31 |
32 | Returns
33 | -------
34 | Time averaged RF power : double
35 | Whole body SAR : double
36 |
37 | 2. Providing no inputs computes SAR for a Turbo Spin Echo sequence with default system hardware parameters and sample weight
38 |
39 |
--------------------------------------------------------------------------------
/sar4seq/Data/Mass_cell.mat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imr-framework/sar4seq/31575179ac940861b491978773c22d694fa79dbf/sar4seq/Data/Mass_cell.mat
--------------------------------------------------------------------------------
/sar4seq/Data/QGlobal.mat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imr-framework/sar4seq/31575179ac940861b491978773c22d694fa79dbf/sar4seq/Data/QGlobal.mat
--------------------------------------------------------------------------------
/sar4seq/Data/Qglobal.qmat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imr-framework/sar4seq/31575179ac940861b491978773c22d694fa79dbf/sar4seq/Data/Qglobal.qmat
--------------------------------------------------------------------------------
/sar4seq/Data/SigmabyRhox.mat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imr-framework/sar4seq/31575179ac940861b491978773c22d694fa79dbf/sar4seq/Data/SigmabyRhox.mat
--------------------------------------------------------------------------------
/sar4seq/Data/Tissue_types.mat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imr-framework/sar4seq/31575179ac940861b491978773c22d694fa79dbf/sar4seq/Data/Tissue_types.mat
--------------------------------------------------------------------------------
/sar4seq/Data/external.seq:
--------------------------------------------------------------------------------
1 | # Pulseq sequence file
2 | # Created by MATLAB mr toolbox
3 |
4 | [VERSION]
5 | major 1
6 | minor 1
7 | revision 0
8 |
9 | # Format of blocks:
10 | # # D RF GX GY GZ ADC
11 | [BLOCKS]
12 | 1 0 1 0 0 1 0
13 | 2 0 0 2 3 4 0
14 | 3 1 0 0 0 0 0
15 | 4 0 0 5 0 0 1
16 | 5 2 0 0 0 0 0
17 | 6 0 1 0 0 1 0
18 | 7 0 0 2 6 4 0
19 | 8 1 0 0 0 0 0
20 | 9 0 0 5 0 0 1
21 | 10 2 0 0 0 0 0
22 | 11 0 1 0 0 1 0
23 | 12 0 0 2 7 4 0
24 | 13 1 0 0 0 0 0
25 | 14 0 0 5 0 0 1
26 | 15 2 0 0 0 0 0
27 | 16 0 1 0 0 1 0
28 | 17 0 0 2 8 4 0
29 | 18 1 0 0 0 0 0
30 | 19 0 0 5 0 0 1
31 | 20 2 0 0 0 0 0
32 | 21 0 1 0 0 1 0
33 | 22 0 0 2 9 4 0
34 | 23 1 0 0 0 0 0
35 | 24 0 0 5 0 0 1
36 | 25 2 0 0 0 0 0
37 | 26 0 1 0 0 1 0
38 | 27 0 0 2 10 4 0
39 | 28 1 0 0 0 0 0
40 | 29 0 0 5 0 0 1
41 | 30 2 0 0 0 0 0
42 | 31 0 1 0 0 1 0
43 | 32 0 0 2 11 4 0
44 | 33 1 0 0 0 0 0
45 | 34 0 0 5 0 0 1
46 | 35 2 0 0 0 0 0
47 | 36 0 1 0 0 1 0
48 | 37 0 0 2 12 4 0
49 | 38 1 0 0 0 0 0
50 | 39 0 0 5 0 0 1
51 | 40 2 0 0 0 0 0
52 | 41 0 1 0 0 1 0
53 | 42 0 0 2 13 4 0
54 | 43 1 0 0 0 0 0
55 | 44 0 0 5 0 0 1
56 | 45 2 0 0 0 0 0
57 | 46 0 1 0 0 1 0
58 | 47 0 0 2 14 4 0
59 | 48 1 0 0 0 0 0
60 | 49 0 0 5 0 0 1
61 | 50 2 0 0 0 0 0
62 | 51 0 1 0 0 1 0
63 | 52 0 0 2 15 4 0
64 | 53 1 0 0 0 0 0
65 | 54 0 0 5 0 0 1
66 | 55 2 0 0 0 0 0
67 | 56 0 1 0 0 1 0
68 | 57 0 0 2 16 4 0
69 | 58 1 0 0 0 0 0
70 | 59 0 0 5 0 0 1
71 | 60 2 0 0 0 0 0
72 | 61 0 1 0 0 1 0
73 | 62 0 0 2 17 4 0
74 | 63 1 0 0 0 0 0
75 | 64 0 0 5 0 0 1
76 | 65 2 0 0 0 0 0
77 | 66 0 1 0 0 1 0
78 | 67 0 0 2 18 4 0
79 | 68 1 0 0 0 0 0
80 | 69 0 0 5 0 0 1
81 | 70 2 0 0 0 0 0
82 | 71 0 1 0 0 1 0
83 | 72 0 0 2 19 4 0
84 | 73 1 0 0 0 0 0
85 | 74 0 0 5 0 0 1
86 | 75 2 0 0 0 0 0
87 | 76 0 1 0 0 1 0
88 | 77 0 0 2 20 4 0
89 | 78 1 0 0 0 0 0
90 | 79 0 0 5 0 0 1
91 | 80 2 0 0 0 0 0
92 | 81 0 1 0 0 1 0
93 | 82 0 0 2 21 4 0
94 | 83 1 0 0 0 0 0
95 | 84 0 0 5 0 0 1
96 | 85 2 0 0 0 0 0
97 | 86 0 1 0 0 1 0
98 | 87 0 0 2 22 4 0
99 | 88 1 0 0 0 0 0
100 | 89 0 0 5 0 0 1
101 | 90 2 0 0 0 0 0
102 | 91 0 1 0 0 1 0
103 | 92 0 0 2 23 4 0
104 | 93 1 0 0 0 0 0
105 | 94 0 0 5 0 0 1
106 | 95 2 0 0 0 0 0
107 | 96 0 1 0 0 1 0
108 | 97 0 0 2 24 4 0
109 | 98 1 0 0 0 0 0
110 | 99 0 0 5 0 0 1
111 | 100 2 0 0 0 0 0
112 | 101 0 1 0 0 1 0
113 | 102 0 0 2 25 4 0
114 | 103 1 0 0 0 0 0
115 | 104 0 0 5 0 0 1
116 | 105 2 0 0 0 0 0
117 | 106 0 1 0 0 1 0
118 | 107 0 0 2 26 4 0
119 | 108 1 0 0 0 0 0
120 | 109 0 0 5 0 0 1
121 | 110 2 0 0 0 0 0
122 | 111 0 1 0 0 1 0
123 | 112 0 0 2 27 4 0
124 | 113 1 0 0 0 0 0
125 | 114 0 0 5 0 0 1
126 | 115 2 0 0 0 0 0
127 | 116 0 1 0 0 1 0
128 | 117 0 0 2 28 4 0
129 | 118 1 0 0 0 0 0
130 | 119 0 0 5 0 0 1
131 | 120 2 0 0 0 0 0
132 | 121 0 1 0 0 1 0
133 | 122 0 0 2 29 4 0
134 | 123 1 0 0 0 0 0
135 | 124 0 0 5 0 0 1
136 | 125 2 0 0 0 0 0
137 | 126 0 1 0 0 1 0
138 | 127 0 0 2 30 4 0
139 | 128 1 0 0 0 0 0
140 | 129 0 0 5 0 0 1
141 | 130 2 0 0 0 0 0
142 | 131 0 1 0 0 1 0
143 | 132 0 0 2 31 4 0
144 | 133 1 0 0 0 0 0
145 | 134 0 0 5 0 0 1
146 | 135 2 0 0 0 0 0
147 | 136 0 1 0 0 1 0
148 | 137 0 0 2 32 4 0
149 | 138 1 0 0 0 0 0
150 | 139 0 0 5 0 0 1
151 | 140 2 0 0 0 0 0
152 | 141 0 1 0 0 1 0
153 | 142 0 0 2 33 4 0
154 | 143 1 0 0 0 0 0
155 | 144 0 0 5 0 0 1
156 | 145 2 0 0 0 0 0
157 | 146 0 1 0 0 1 0
158 | 147 0 0 2 34 4 0
159 | 148 1 0 0 0 0 0
160 | 149 0 0 5 0 0 1
161 | 150 2 0 0 0 0 0
162 | 151 0 1 0 0 1 0
163 | 152 0 0 2 35 4 0
164 | 153 1 0 0 0 0 0
165 | 154 0 0 5 0 0 1
166 | 155 2 0 0 0 0 0
167 | 156 0 1 0 0 1 0
168 | 157 0 0 2 36 4 0
169 | 158 1 0 0 0 0 0
170 | 159 0 0 5 0 0 1
171 | 160 2 0 0 0 0 0
172 | 161 0 1 0 0 1 0
173 | 162 0 0 2 37 4 0
174 | 163 1 0 0 0 0 0
175 | 164 0 0 5 0 0 1
176 | 165 2 0 0 0 0 0
177 | 166 0 1 0 0 1 0
178 | 167 0 0 2 38 4 0
179 | 168 1 0 0 0 0 0
180 | 169 0 0 5 0 0 1
181 | 170 2 0 0 0 0 0
182 | 171 0 1 0 0 1 0
183 | 172 0 0 2 39 4 0
184 | 173 1 0 0 0 0 0
185 | 174 0 0 5 0 0 1
186 | 175 2 0 0 0 0 0
187 | 176 0 1 0 0 1 0
188 | 177 0 0 2 40 4 0
189 | 178 1 0 0 0 0 0
190 | 179 0 0 5 0 0 1
191 | 180 2 0 0 0 0 0
192 | 181 0 1 0 0 1 0
193 | 182 0 0 2 41 4 0
194 | 183 1 0 0 0 0 0
195 | 184 0 0 5 0 0 1
196 | 185 2 0 0 0 0 0
197 | 186 0 1 0 0 1 0
198 | 187 0 0 2 42 4 0
199 | 188 1 0 0 0 0 0
200 | 189 0 0 5 0 0 1
201 | 190 2 0 0 0 0 0
202 | 191 0 1 0 0 1 0
203 | 192 0 0 2 43 4 0
204 | 193 1 0 0 0 0 0
205 | 194 0 0 5 0 0 1
206 | 195 2 0 0 0 0 0
207 | 196 0 1 0 0 1 0
208 | 197 0 0 2 44 4 0
209 | 198 1 0 0 0 0 0
210 | 199 0 0 5 0 0 1
211 | 200 2 0 0 0 0 0
212 | 201 0 1 0 0 1 0
213 | 202 0 0 2 45 4 0
214 | 203 1 0 0 0 0 0
215 | 204 0 0 5 0 0 1
216 | 205 2 0 0 0 0 0
217 | 206 0 1 0 0 1 0
218 | 207 0 0 2 46 4 0
219 | 208 1 0 0 0 0 0
220 | 209 0 0 5 0 0 1
221 | 210 2 0 0 0 0 0
222 | 211 0 1 0 0 1 0
223 | 212 0 0 2 47 4 0
224 | 213 1 0 0 0 0 0
225 | 214 0 0 5 0 0 1
226 | 215 2 0 0 0 0 0
227 | 216 0 1 0 0 1 0
228 | 217 0 0 2 48 4 0
229 | 218 1 0 0 0 0 0
230 | 219 0 0 5 0 0 1
231 | 220 2 0 0 0 0 0
232 | 221 0 1 0 0 1 0
233 | 222 0 0 2 49 4 0
234 | 223 1 0 0 0 0 0
235 | 224 0 0 5 0 0 1
236 | 225 2 0 0 0 0 0
237 | 226 0 1 0 0 1 0
238 | 227 0 0 2 50 4 0
239 | 228 1 0 0 0 0 0
240 | 229 0 0 5 0 0 1
241 | 230 2 0 0 0 0 0
242 | 231 0 1 0 0 1 0
243 | 232 0 0 2 51 4 0
244 | 233 1 0 0 0 0 0
245 | 234 0 0 5 0 0 1
246 | 235 2 0 0 0 0 0
247 | 236 0 1 0 0 1 0
248 | 237 0 0 2 52 4 0
249 | 238 1 0 0 0 0 0
250 | 239 0 0 5 0 0 1
251 | 240 2 0 0 0 0 0
252 | 241 0 1 0 0 1 0
253 | 242 0 0 2 53 4 0
254 | 243 1 0 0 0 0 0
255 | 244 0 0 5 0 0 1
256 | 245 2 0 0 0 0 0
257 | 246 0 1 0 0 1 0
258 | 247 0 0 2 54 4 0
259 | 248 1 0 0 0 0 0
260 | 249 0 0 5 0 0 1
261 | 250 2 0 0 0 0 0
262 | 251 0 1 0 0 1 0
263 | 252 0 0 2 55 4 0
264 | 253 1 0 0 0 0 0
265 | 254 0 0 5 0 0 1
266 | 255 2 0 0 0 0 0
267 | 256 0 1 0 0 1 0
268 | 257 0 0 2 56 4 0
269 | 258 1 0 0 0 0 0
270 | 259 0 0 5 0 0 1
271 | 260 2 0 0 0 0 0
272 | 261 0 1 0 0 1 0
273 | 262 0 0 2 57 4 0
274 | 263 1 0 0 0 0 0
275 | 264 0 0 5 0 0 1
276 | 265 2 0 0 0 0 0
277 | 266 0 1 0 0 1 0
278 | 267 0 0 2 58 4 0
279 | 268 1 0 0 0 0 0
280 | 269 0 0 5 0 0 1
281 | 270 2 0 0 0 0 0
282 | 271 0 1 0 0 1 0
283 | 272 0 0 2 59 4 0
284 | 273 1 0 0 0 0 0
285 | 274 0 0 5 0 0 1
286 | 275 2 0 0 0 0 0
287 | 276 0 1 0 0 1 0
288 | 277 0 0 2 60 4 0
289 | 278 1 0 0 0 0 0
290 | 279 0 0 5 0 0 1
291 | 280 2 0 0 0 0 0
292 | 281 0 1 0 0 1 0
293 | 282 0 0 2 61 4 0
294 | 283 1 0 0 0 0 0
295 | 284 0 0 5 0 0 1
296 | 285 2 0 0 0 0 0
297 | 286 0 1 0 0 1 0
298 | 287 0 0 2 62 4 0
299 | 288 1 0 0 0 0 0
300 | 289 0 0 5 0 0 1
301 | 290 2 0 0 0 0 0
302 | 291 0 1 0 0 1 0
303 | 292 0 0 2 63 4 0
304 | 293 1 0 0 0 0 0
305 | 294 0 0 5 0 0 1
306 | 295 2 0 0 0 0 0
307 | 296 0 1 0 0 1 0
308 | 297 0 0 2 64 4 0
309 | 298 1 0 0 0 0 0
310 | 299 0 0 5 0 0 1
311 | 300 2 0 0 0 0 0
312 | 301 0 1 0 0 1 0
313 | 302 0 0 2 65 4 0
314 | 303 1 0 0 0 0 0
315 | 304 0 0 5 0 0 1
316 | 305 2 0 0 0 0 0
317 | 306 0 1 0 0 1 0
318 | 307 0 0 2 66 4 0
319 | 308 1 0 0 0 0 0
320 | 309 0 0 5 0 0 1
321 | 310 2 0 0 0 0 0
322 | 311 0 1 0 0 1 0
323 | 312 0 0 2 67 4 0
324 | 313 1 0 0 0 0 0
325 | 314 0 0 5 0 0 1
326 | 315 2 0 0 0 0 0
327 | 316 0 1 0 0 1 0
328 | 317 0 0 2 68 4 0
329 | 318 1 0 0 0 0 0
330 | 319 0 0 5 0 0 1
331 | 320 2 0 0 0 0 0
332 |
333 | # Format of RF events:
334 | # id amplitude mag_id phase_id freq phase
335 | # .. Hz .... .... Hz rad
336 | [RF]
337 | 1 41.144 1 2 0 0
338 |
339 | # Format of trapezoid gradients:
340 | # id amplitude rise flat fall
341 | # .. Hz/m us us us
342 | [TRAP]
343 | 1 200000 40 4000 40
344 | 2 -73576.7 20 1960 20
345 | 3 -73461.9 20 1960 20
346 | 4 -206122 40 1920 40
347 | 5 45454.5 10 6400 10
348 | 6 -71166.2 20 1960 20
349 | 7 -68870.5 20 1960 20
350 | 8 -66574.8 20 1960 20
351 | 9 -64279.2 20 1960 20
352 | 10 -61983.5 20 1960 20
353 | 11 -59687.8 20 1960 20
354 | 12 -57392.1 20 1960 20
355 | 13 -54819.6 10 1980 10
356 | 14 -52535.4 10 1980 10
357 | 15 -50251.3 10 1980 10
358 | 16 -47967.1 10 1980 10
359 | 17 -45683 10 1980 10
360 | 18 -43398.8 10 1980 10
361 | 19 -41114.7 10 1980 10
362 | 20 -38830.5 10 1980 10
363 | 21 -36546.4 10 1980 10
364 | 22 -34262.2 10 1980 10
365 | 23 -31978.1 10 1980 10
366 | 24 -29693.9 10 1980 10
367 | 25 -27409.8 10 1980 10
368 | 26 -25125.6 10 1980 10
369 | 27 -22841.5 10 1980 10
370 | 28 -20557.3 10 1980 10
371 | 29 -18273.2 10 1980 10
372 | 30 -15989 10 1980 10
373 | 31 -13704.9 10 1980 10
374 | 32 -11420.7 10 1980 10
375 | 33 -9136.59 10 1980 10
376 | 34 -6852.44 10 1980 10
377 | 35 -4568.3 10 1980 10
378 | 36 -2284.15 10 1980 10
379 | 37 0 0 2000 0
380 | 38 2284.15 10 1980 10
381 | 39 4568.3 10 1980 10
382 | 40 6852.44 10 1980 10
383 | 41 9136.59 10 1980 10
384 | 42 11420.7 10 1980 10
385 | 43 13704.9 10 1980 10
386 | 44 15989 10 1980 10
387 | 45 18273.2 10 1980 10
388 | 46 20557.3 10 1980 10
389 | 47 22841.5 10 1980 10
390 | 48 25125.6 10 1980 10
391 | 49 27409.8 10 1980 10
392 | 50 29693.9 10 1980 10
393 | 51 31978.1 10 1980 10
394 | 52 34262.2 10 1980 10
395 | 53 36546.4 10 1980 10
396 | 54 38830.5 10 1980 10
397 | 55 41114.7 10 1980 10
398 | 56 43398.8 10 1980 10
399 | 57 45683 10 1980 10
400 | 58 47967.1 10 1980 10
401 | 59 50251.3 10 1980 10
402 | 60 52535.4 10 1980 10
403 | 61 54819.6 10 1980 10
404 | 62 57392.1 20 1960 20
405 | 63 59687.8 20 1960 20
406 | 64 61983.5 20 1960 20
407 | 65 64279.2 20 1960 20
408 | 66 66574.8 20 1960 20
409 | 67 68870.5 20 1960 20
410 | 68 71166.2 20 1960 20
411 |
412 | # Format of ADC events:
413 | # id num dwell delay freq phase
414 | # .. .. ns us Hz rad
415 | [ADC]
416 | 1 64 100000 10 0 0
417 |
418 | # Format of delays:
419 | # id delay (us)
420 | [DELAYS]
421 | 1 2660
422 | 2 4660
423 |
424 | # Sequence Shapes
425 | [SHAPES]
426 |
427 | shape_id 1
428 | num_samples 4130
429 | 0
430 | 0
431 | 104
432 | 3.93359e-08
433 | 5.23773e-08
434 | 6.72953e-08
435 | 8.40932e-08
436 | 1.02774e-07
437 | 1.23341e-07
438 | 1.45797e-07
439 | 1.70145e-07
440 | 1.96389e-07
441 | 2.2453e-07
442 | 2.54572e-07
443 | 2.86517e-07
444 | 3.20368e-07
445 | 3.56129e-07
446 | 3.938e-07
447 | 4.33385e-07
448 | 4.74886e-07
449 | 5.18306e-07
450 | 5.63646e-07
451 | 6.1091e-07
452 | 6.60098e-07
453 | 7.11214e-07
454 | 7.6426e-07
455 | 8.19236e-07
456 | 8.76146e-07
457 | 9.34991e-07
458 | 9.95773e-07
459 | 1.05849e-06
460 | 1.12315e-06
461 | 1.18976e-06
462 | 1.2583e-06
463 | 1.32879e-06
464 | 1.40123e-06
465 | 1.47561e-06
466 | 1.55195e-06
467 | 1.63023e-06
468 | 1.71046e-06
469 | 1.79265e-06
470 | 1.87679e-06
471 | 1.96289e-06
472 | 2.05093e-06
473 | 2.14094e-06
474 | 2.2329e-06
475 | 2.32682e-06
476 | 2.4227e-06
477 | 2.52053e-06
478 | 2.62033e-06
479 | 2.72208e-06
480 | 2.82579e-06
481 | 2.93147e-06
482 | 3.0391e-06
483 | 3.14869e-06
484 | 3.26025e-06
485 | 3.37376e-06
486 | 3.48923e-06
487 | 3.60667e-06
488 | 3.72606e-06
489 | 3.84742e-06
490 | 3.97073e-06
491 | 4.09601e-06
492 | 4.22324e-06
493 | 4.35243e-06
494 | 4.48357e-06
495 | 4.61668e-06
496 | 4.75174e-06
497 | 4.88875e-06
498 | 5.02772e-06
499 | 5.16864e-06
500 | 5.31152e-06
501 | 5.45634e-06
502 | 5.60312e-06
503 | 5.75184e-06
504 | 5.90251e-06
505 | 6.05513e-06
506 | 6.2097e-06
507 | 6.3662e-06
508 | 6.52465e-06
509 | 6.68504e-06
510 | 6.84737e-06
511 | 7.01163e-06
512 | 7.17783e-06
513 | 7.34596e-06
514 | 7.51602e-06
515 | 7.68801e-06
516 | 7.86193e-06
517 | 8.03777e-06
518 | 8.21554e-06
519 | 8.39522e-06
520 | 8.57682e-06
521 | 8.76034e-06
522 | 8.94577e-06
523 | 9.13311e-06
524 | 9.32235e-06
525 | 9.5135e-06
526 | 9.70656e-06
527 | 9.90151e-06
528 | 1.00984e-05
529 | 1.02971e-05
530 | 1.04977e-05
531 | 1.07002e-05
532 | 1.09046e-05
533 | 1.11109e-05
534 | 1.13191e-05
535 | 1.15291e-05
536 | 1.1741e-05
537 | 1.19548e-05
538 | 1.21704e-05
539 | 1.23879e-05
540 | 1.26072e-05
541 | 1.28284e-05
542 | 1.30514e-05
543 | 1.32763e-05
544 | 1.3503e-05
545 | 1.37316e-05
546 | 1.3962e-05
547 | 1.41942e-05
548 | 1.44282e-05
549 | 1.46641e-05
550 | 1.49017e-05
551 | 1.51412e-05
552 | 1.53825e-05
553 | 1.56255e-05
554 | 1.58704e-05
555 | 1.6117e-05
556 | 1.63655e-05
557 | 1.66157e-05
558 | 1.68677e-05
559 | 1.71214e-05
560 | 1.7377e-05
561 | 1.76343e-05
562 | 1.78933e-05
563 | 1.81541e-05
564 | 1.84166e-05
565 | 1.86809e-05
566 | 1.89468e-05
567 | 1.92146e-05
568 | 1.9484e-05
569 | 1.97551e-05
570 | 2.0028e-05
571 | 2.03026e-05
572 | 2.05788e-05
573 | 2.08567e-05
574 | 2.11364e-05
575 | 2.14177e-05
576 | 2.17006e-05
577 | 2.19853e-05
578 | 2.22716e-05
579 | 2.25595e-05
580 | 2.28491e-05
581 | 2.31403e-05
582 | 2.34332e-05
583 | 2.37277e-05
584 | 2.40238e-05
585 | 2.43215e-05
586 | 2.46208e-05
587 | 2.49217e-05
588 | 2.52242e-05
589 | 2.55282e-05
590 | 2.58339e-05
591 | 2.61411e-05
592 | 2.64499e-05
593 | 2.67602e-05
594 | 2.70721e-05
595 | 2.73855e-05
596 | 2.77004e-05
597 | 2.80169e-05
598 | 2.83348e-05
599 | 2.86543e-05
600 | 2.89753e-05
601 | 2.92977e-05
602 | 2.96217e-05
603 | 2.99471e-05
604 | 3.0274e-05
605 | 3.06023e-05
606 | 3.09321e-05
607 | 3.12633e-05
608 | 3.15959e-05
609 | 3.193e-05
610 | 3.22655e-05
611 | 3.26023e-05
612 | 3.29406e-05
613 | 3.32803e-05
614 | 3.36213e-05
615 | 3.39637e-05
616 | 3.43075e-05
617 | 3.46526e-05
618 | 3.49991e-05
619 | 3.53469e-05
620 | 3.5696e-05
621 | 3.60464e-05
622 | 3.63981e-05
623 | 3.67512e-05
624 | 3.71055e-05
625 | 3.7461e-05
626 | 3.78179e-05
627 | 3.8176e-05
628 | 3.85353e-05
629 | 3.88959e-05
630 | 3.92577e-05
631 | 3.96207e-05
632 | 3.99849e-05
633 | 4.03503e-05
634 | 4.07169e-05
635 | 4.10847e-05
636 | 4.14536e-05
637 | 4.18237e-05
638 | 4.21949e-05
639 | 4.25672e-05
640 | 4.29407e-05
641 | 4.33153e-05
642 | 4.3691e-05
643 | 4.40677e-05
644 | 4.44456e-05
645 | 4.48245e-05
646 | 4.52044e-05
647 | 4.55854e-05
648 | 4.59675e-05
649 | 4.63505e-05
650 | 4.67346e-05
651 | 4.71197e-05
652 | 4.75057e-05
653 | 4.78927e-05
654 | 4.82807e-05
655 | 4.86697e-05
656 | 4.90596e-05
657 | 4.94504e-05
658 | 4.98421e-05
659 | 5.02347e-05
660 | 5.06282e-05
661 | 5.10226e-05
662 | 5.14179e-05
663 | 5.1814e-05
664 | 5.2211e-05
665 | 5.26088e-05
666 | 5.30074e-05
667 | 5.34069e-05
668 | 5.38071e-05
669 | 5.42081e-05
670 | 5.46099e-05
671 | 5.50124e-05
672 | 5.54157e-05
673 | 5.58197e-05
674 | 5.62244e-05
675 | 5.66298e-05
676 | 5.70359e-05
677 | 5.74427e-05
678 | 5.78502e-05
679 | 5.82583e-05
680 | 5.86671e-05
681 | 5.90765e-05
682 | 5.94865e-05
683 | 5.98971e-05
684 | 6.03083e-05
685 | 6.072e-05
686 | 6.11324e-05
687 | 6.15452e-05
688 | 6.19586e-05
689 | 6.23726e-05
690 | 6.2787e-05
691 | 6.32019e-05
692 | 6.36173e-05
693 | 6.40332e-05
694 | 6.44495e-05
695 | 6.48662e-05
696 | 6.52834e-05
697 | 6.5701e-05
698 | 6.61189e-05
699 | 6.65373e-05
700 | 6.6956e-05
701 | 6.73751e-05
702 | 6.77945e-05
703 | 6.82142e-05
704 | 6.86342e-05
705 | 6.90545e-05
706 | 6.94751e-05
707 | 6.9896e-05
708 | 7.03171e-05
709 | 7.07385e-05
710 | 7.11601e-05
711 | 7.15818e-05
712 | 7.20038e-05
713 | 7.24259e-05
714 | 7.28482e-05
715 | 7.32707e-05
716 | 7.36932e-05
717 | 7.41159e-05
718 | 7.45387e-05
719 | 7.49616e-05
720 | 7.53845e-05
721 | 7.58075e-05
722 | 7.62306e-05
723 | 7.66536e-05
724 | 7.70767e-05
725 | 7.74997e-05
726 | 7.79228e-05
727 | 7.83457e-05
728 | 7.87687e-05
729 | 7.91915e-05
730 | 7.96143e-05
731 | 8.0037e-05
732 | 8.04595e-05
733 | 8.0882e-05
734 | 8.13042e-05
735 | 8.17263e-05
736 | 8.21483e-05
737 | 8.257e-05
738 | 8.29915e-05
739 | 8.34128e-05
740 | 8.38338e-05
741 | 8.42546e-05
742 | 8.46751e-05
743 | 8.50953e-05
744 | 8.55151e-05
745 | 8.59347e-05
746 | 8.63539e-05
747 | 8.67728e-05
748 | 8.71912e-05
749 | 8.76093e-05
750 | 8.8027e-05
751 | 8.84442e-05
752 | 8.8861e-05
753 | 8.92773e-05
754 | 8.96932e-05
755 | 9.01085e-05
756 | 9.05234e-05
757 | 9.09377e-05
758 | 9.13515e-05
759 | 9.17647e-05
760 | 9.21773e-05
761 | 9.25893e-05
762 | 9.30007e-05
763 | 9.34115e-05
764 | 9.38217e-05
765 | 9.42311e-05
766 | 9.46399e-05
767 | 9.5048e-05
768 | 9.54554e-05
769 | 9.5862e-05
770 | 9.62679e-05
771 | 9.6673e-05
772 | 9.70774e-05
773 | 9.74809e-05
774 | 9.78836e-05
775 | 9.82855e-05
776 | 9.86865e-05
777 | 9.90866e-05
778 | 9.94859e-05
779 | 9.98842e-05
780 | 0.000100282
781 | 0.000100678
782 | 0.000101074
783 | 0.000101468
784 | 0.000101862
785 | 0.000102254
786 | 0.000102646
787 | 0.000103036
788 | 0.000103425
789 | 0.000103814
790 | 0.000104201
791 | 0.000104587
792 | 0.000104972
793 | 0.000105356
794 | 0.000105738
795 | 0.000106119
796 | 0.0001065
797 | 0.000106878
798 | 0.000107256
799 | 0.000107633
800 | 0.000108008
801 | 0.000108381
802 | 0.000108754
803 | 0.000109125
804 | 0.000109495
805 | 0.000109863
806 | 0.00011023
807 | 0.000110596
808 | 0.00011096
809 | 0.000111323
810 | 0.000111684
811 | 0.000112044
812 | 0.000112402
813 | 0.000112759
814 | 0.000113114
815 | 0.000113468
816 | 0.00011382
817 | 0.00011417
818 | 0.000114519
819 | 0.000114866
820 | 0.000115211
821 | 0.000115555
822 | 0.000115897
823 | 0.000116238
824 | 0.000116577
825 | 0.000116914
826 | 0.000117249
827 | 0.000117582
828 | 0.000117914
829 | 0.000118244
830 | 0.000118572
831 | 0.000118898
832 | 0.000119222
833 | 0.000119544
834 | 0.000119864
835 | 0.000120183
836 | 0.000120499
837 | 0.000120814
838 | 0.000121126
839 | 0.000121437
840 | 0.000121745
841 | 0.000122052
842 | 0.000122356
843 | 0.000122658
844 | 0.000122959
845 | 0.000123257
846 | 0.000123553
847 | 0.000123846
848 | 0.000124138
849 | 0.000124427
850 | 0.000124714
851 | 0.000124999
852 | 0.000125282
853 | 0.000125562
854 | 0.00012584
855 | 0.000126116
856 | 0.000126389
857 | 0.00012666
858 | 0.000126929
859 | 0.000127195
860 | 0.000127459
861 | 0.000127721
862 | 0.00012798
863 | 0.000128236
864 | 0.00012849
865 | 0.000128742
866 | 0.000128991
867 | 0.000129237
868 | 0.000129481
869 | 0.000129723
870 | 0.000129961
871 | 0.000130197
872 | 0.000130431
873 | 0.000130662
874 | 0.00013089
875 | 0.000131115
876 | 0.000131338
877 | 0.000131558
878 | 0.000131775
879 | 0.00013199
880 | 0.000132202
881 | 0.000132411
882 | 0.000132617
883 | 0.00013282
884 | 0.00013302
885 | 0.000133218
886 | 0.000133412
887 | 0.000133604
888 | 0.000133793
889 | 0.000133978
890 | 0.000134161
891 | 0.000134341
892 | 0.000134518
893 | 0.000134691
894 | 0.000134862
895 | 0.00013503
896 | 0.000135194
897 | 0.000135356
898 | 0.000135514
899 | 0.000135669
900 | 0.000135821
901 | 0.00013597
902 | 0.000136115
903 | 0.000136258
904 | 0.000136397
905 | 0.000136533
906 | 0.000136665
907 | 0.000136794
908 | 0.00013692
909 | 0.000137043
910 | 0.000137162
911 | 0.000137278
912 | 0.000137391
913 | 0.0001375
914 | 0.000137606
915 | 0.000137708
916 | 0.000137807
917 | 0.000137902
918 | 0.000137994
919 | 0.000138082
920 | 0.000138167
921 | 0.000138248
922 | 0.000138326
923 | 0.0001384
924 | 0.00013847
925 | 0.000138537
926 | 0.0001386
927 | 0.00013866
928 | 0.000138715
929 | 0.000138767
930 | 0.000138816
931 | 0.000138861
932 | 0.000138901
933 | 0.000138939
934 | 0.000138972
935 | 0.000139002
936 | 0.000139027
937 | 0.000139049
938 | 0.000139067
939 | 0.000139081
940 | 0.000139091
941 | 0.000139091
942 | 4
943 | 0.00013907
944 | 0.000139053
945 | 0.000139031
946 | 0.000139005
947 | 0.000138976
948 | 0.000138942
949 | 0.000138904
950 | 0.000138862
951 | 0.000138816
952 | 0.000138766
953 | 0.000138711
954 | 0.000138652
955 | 0.00013859
956 | 0.000138522
957 | 0.000138451
958 | 0.000138375
959 | 0.000138296
960 | 0.000138211
961 | 0.000138123
962 | 0.00013803
963 | 0.000137933
964 | 0.000137831
965 | 0.000137725
966 | 0.000137615
967 | 0.0001375
968 | 0.000137381
969 | 0.000137258
970 | 0.00013713
971 | 0.000136997
972 | 0.00013686
973 | 0.000136718
974 | 0.000136572
975 | 0.000136422
976 | 0.000136267
977 | 0.000136107
978 | 0.000135942
979 | 0.000135773
980 | 0.0001356
981 | 0.000135422
982 | 0.000135239
983 | 0.000135051
984 | 0.000134859
985 | 0.000134662
986 | 0.00013446
987 | 0.000134254
988 | 0.000134043
989 | 0.000133827
990 | 0.000133606
991 | 0.000133381
992 | 0.000133151
993 | 0.000132915
994 | 0.000132675
995 | 0.000132431
996 | 0.000132181
997 | 0.000131926
998 | 0.000131667
999 | 0.000131402
1000 | 0.000131133
1001 | 0.000130859
1002 | 0.00013058
1003 | 0.000130295
1004 | 0.000130006
1005 | 0.000129712
1006 | 0.000129413
1007 | 0.000129108
1008 | 0.000128799
1009 | 0.000128485
1010 | 0.000128165
1011 | 0.000127841
1012 | 0.000127511
1013 | 0.000127176
1014 | 0.000126836
1015 | 0.000126491
1016 | 0.000126141
1017 | 0.000125785
1018 | 0.000125425
1019 | 0.000125059
1020 | 0.000124688
1021 | 0.000124311
1022 | 0.00012393
1023 | 0.000123543
1024 | 0.000123151
1025 | 0.000122754
1026 | 0.000122351
1027 | 0.000121943
1028 | 0.00012153
1029 | 0.000121111
1030 | 0.000120687
1031 | 0.000120258
1032 | 0.000119823
1033 | 0.000119383
1034 | 0.000118937
1035 | 0.000118486
1036 | 0.00011803
1037 | 0.000117568
1038 | 0.000117101
1039 | 0.000116628
1040 | 0.00011615
1041 | 0.000115666
1042 | 0.000115177
1043 | 0.000114682
1044 | 0.000114182
1045 | 0.000113676
1046 | 0.000113165
1047 | 0.000112648
1048 | 0.000112125
1049 | 0.000111597
1050 | 0.000111064
1051 | 0.000110524
1052 | 0.000109979
1053 | 0.000109429
1054 | 0.000108873
1055 | 0.000108311
1056 | 0.000107743
1057 | 0.00010717
1058 | 0.000106591
1059 | 0.000106007
1060 | 0.000105416
1061 | 0.00010482
1062 | 0.000104219
1063 | 0.000103611
1064 | 0.000102998
1065 | 0.000102379
1066 | 0.000101754
1067 | 0.000101123
1068 | 0.000100487
1069 | 9.98448e-05
1070 | 9.91968e-05
1071 | 9.8543e-05
1072 | 9.78834e-05
1073 | 9.72179e-05
1074 | 9.65465e-05
1075 | 9.58693e-05
1076 | 9.51862e-05
1077 | 9.44972e-05
1078 | 9.38024e-05
1079 | 9.31016e-05
1080 | 9.23949e-05
1081 | 9.16823e-05
1082 | 9.09638e-05
1083 | 9.02393e-05
1084 | 8.95089e-05
1085 | 8.87725e-05
1086 | 8.80302e-05
1087 | 8.72819e-05
1088 | 8.65276e-05
1089 | 8.57674e-05
1090 | 8.50011e-05
1091 | 8.42288e-05
1092 | 8.34505e-05
1093 | 8.26662e-05
1094 | 8.18759e-05
1095 | 8.10795e-05
1096 | 8.02771e-05
1097 | 7.94686e-05
1098 | 7.8654e-05
1099 | 7.78334e-05
1100 | 7.70068e-05
1101 | 7.6174e-05
1102 | 7.53351e-05
1103 | 7.44902e-05
1104 | 7.36391e-05
1105 | 7.2782e-05
1106 | 7.19187e-05
1107 | 7.10493e-05
1108 | 7.01737e-05
1109 | 6.9292e-05
1110 | 6.84042e-05
1111 | 6.75102e-05
1112 | 6.66101e-05
1113 | 6.57038e-05
1114 | 6.47913e-05
1115 | 6.38727e-05
1116 | 6.29479e-05
1117 | 6.20169e-05
1118 | 6.10797e-05
1119 | 6.01363e-05
1120 | 5.91866e-05
1121 | 5.82308e-05
1122 | 5.72688e-05
1123 | 5.63006e-05
1124 | 5.53261e-05
1125 | 5.43454e-05
1126 | 5.33584e-05
1127 | 5.23653e-05
1128 | 5.13658e-05
1129 | 5.03602e-05
1130 | 4.93482e-05
1131 | 4.83301e-05
1132 | 4.73056e-05
1133 | 4.62749e-05
1134 | 4.52379e-05
1135 | 4.41947e-05
1136 | 4.31451e-05
1137 | 4.20893e-05
1138 | 4.10272e-05
1139 | 3.99588e-05
1140 | 3.88841e-05
1141 | 3.78031e-05
1142 | 3.67159e-05
1143 | 3.56223e-05
1144 | 3.45224e-05
1145 | 3.34162e-05
1146 | 3.23037e-05
1147 | 3.11849e-05
1148 | 3.00597e-05
1149 | 2.89282e-05
1150 | 2.77905e-05
1151 | 2.66464e-05
1152 | 2.54959e-05
1153 | 2.43391e-05
1154 | 2.3176e-05
1155 | 2.20066e-05
1156 | 2.08309e-05
1157 | 1.96488e-05
1158 | 1.84603e-05
1159 | 1.72655e-05
1160 | 1.60644e-05
1161 | 1.48569e-05
1162 | 1.36431e-05
1163 | 1.2423e-05
1164 | 1.11965e-05
1165 | 9.96364e-06
1166 | 8.72445e-06
1167 | 7.47891e-06
1168 | 6.22702e-06
1169 | 4.96879e-06
1170 | 3.7042e-06
1171 | 2.43326e-06
1172 | 1.15598e-06
1173 | -1.27658e-07
1174 | -1.41764e-06
1175 | -2.71398e-06
1176 | -4.01666e-06
1177 | -5.32569e-06
1178 | -6.64107e-06
1179 | -7.9628e-06
1180 | -9.29087e-06
1181 | -1.06253e-05
1182 | -1.19661e-05
1183 | -1.33132e-05
1184 | -1.46666e-05
1185 | -1.60264e-05
1186 | -1.73925e-05
1187 | -1.8765e-05
1188 | -2.01438e-05
1189 | -2.1529e-05
1190 | -2.29204e-05
1191 | -2.43182e-05
1192 | -2.57224e-05
1193 | -2.71328e-05
1194 | -2.85496e-05
1195 | -2.99727e-05
1196 | -3.14021e-05
1197 | -3.28379e-05
1198 | -3.42799e-05
1199 | -3.57283e-05
1200 | -3.7183e-05
1201 | -3.8644e-05
1202 | -4.01112e-05
1203 | -4.15848e-05
1204 | -4.30647e-05
1205 | -4.45509e-05
1206 | -4.60433e-05
1207 | -4.7542e-05
1208 | -4.90471e-05
1209 | -5.05583e-05
1210 | -5.20759e-05
1211 | -5.35997e-05
1212 | -5.51298e-05
1213 | -5.66662e-05
1214 | -5.82088e-05
1215 | -5.97576e-05
1216 | -6.13127e-05
1217 | -6.28741e-05
1218 | -6.44417e-05
1219 | -6.60155e-05
1220 | -6.75955e-05
1221 | -6.91817e-05
1222 | -7.07742e-05
1223 | -7.23729e-05
1224 | -7.39777e-05
1225 | -7.55888e-05
1226 | -7.7206e-05
1227 | -7.88295e-05
1228 | -8.04591e-05
1229 | -8.20949e-05
1230 | -8.37368e-05
1231 | -8.53849e-05
1232 | -8.70392e-05
1233 | -8.86996e-05
1234 | -9.03661e-05
1235 | -9.20388e-05
1236 | -9.37176e-05
1237 | -9.54025e-05
1238 | -9.70935e-05
1239 | -9.87906e-05
1240 | -0.000100494
1241 | -0.000102203
1242 | -0.000103919
1243 | -0.00010564
1244 | -0.000107368
1245 | -0.000109101
1246 | -0.000110841
1247 | -0.000112586
1248 | -0.000114338
1249 | -0.000116096
1250 | -0.000117859
1251 | -0.000119629
1252 | -0.000121405
1253 | -0.000123187
1254 | -0.000124974
1255 | -0.000126768
1256 | -0.000128567
1257 | -0.000130373
1258 | -0.000132184
1259 | -0.000134002
1260 | -0.000135825
1261 | -0.000137654
1262 | -0.000139489
1263 | -0.00014133
1264 | -0.000143177
1265 | -0.00014503
1266 | -0.000146889
1267 | -0.000148753
1268 | -0.000150623
1269 | -0.0001525
1270 | -0.000154381
1271 | -0.000156269
1272 | -0.000158163
1273 | -0.000160062
1274 | -0.000161967
1275 | -0.000163878
1276 | -0.000165794
1277 | -0.000167717
1278 | -0.000169645
1279 | -0.000171578
1280 | -0.000173518
1281 | -0.000175463
1282 | -0.000177414
1283 | -0.00017937
1284 | -0.000181332
1285 | -0.0001833
1286 | -0.000185273
1287 | -0.000187252
1288 | -0.000189236
1289 | -0.000191226
1290 | -0.000193222
1291 | -0.000195223
1292 | -0.00019723
1293 | -0.000199242
1294 | -0.00020126
1295 | -0.000203283
1296 | -0.000205312
1297 | -0.000207346
1298 | -0.000209386
1299 | -0.000211431
1300 | -0.000213481
1301 | -0.000215537
1302 | -0.000217598
1303 | -0.000219665
1304 | -0.000221737
1305 | -0.000223815
1306 | -0.000225897
1307 | -0.000227985
1308 | -0.000230079
1309 | -0.000232177
1310 | -0.000234281
1311 | -0.00023639
1312 | -0.000238505
1313 | -0.000240624
1314 | -0.000242749
1315 | -0.000244879
1316 | -0.000247015
1317 | -0.000249155
1318 | -0.0002513
1319 | -0.000253451
1320 | -0.000255607
1321 | -0.000257768
1322 | -0.000259933
1323 | -0.000262104
1324 | -0.00026428
1325 | -0.000266461
1326 | -0.000268647
1327 | -0.000270838
1328 | -0.000273034
1329 | -0.000275235
1330 | -0.000277441
1331 | -0.000279652
1332 | -0.000281868
1333 | -0.000284088
1334 | -0.000286313
1335 | -0.000288544
1336 | -0.000290779
1337 | -0.000293019
1338 | -0.000295263
1339 | -0.000297513
1340 | -0.000299767
1341 | -0.000302026
1342 | -0.000304289
1343 | -0.000306558
1344 | -0.00030883
1345 | -0.000311108
1346 | -0.00031339
1347 | -0.000315677
1348 | -0.000317969
1349 | -0.000320265
1350 | -0.000322565
1351 | -0.00032487
1352 | -0.00032718
1353 | -0.000329494
1354 | -0.000331812
1355 | -0.000334135
1356 | -0.000336463
1357 | -0.000338794
1358 | -0.000341131
1359 | -0.000343471
1360 | -0.000345816
1361 | -0.000348165
1362 | -0.000350519
1363 | -0.000352876
1364 | -0.000355238
1365 | -0.000357605
1366 | -0.000359975
1367 | -0.00036235
1368 | -0.000364729
1369 | -0.000367112
1370 | -0.000369499
1371 | -0.00037189
1372 | -0.000374285
1373 | -0.000376684
1374 | -0.000379088
1375 | -0.000381495
1376 | -0.000383906
1377 | -0.000386322
1378 | -0.000388741
1379 | -0.000391164
1380 | -0.000393591
1381 | -0.000396022
1382 | -0.000398457
1383 | -0.000400895
1384 | -0.000403338
1385 | -0.000405784
1386 | -0.000408234
1387 | -0.000410687
1388 | -0.000413144
1389 | -0.000415605
1390 | -0.00041807
1391 | -0.000420538
1392 | -0.00042301
1393 | -0.000425486
1394 | -0.000427965
1395 | -0.000430447
1396 | -0.000432933
1397 | -0.000435423
1398 | -0.000437916
1399 | -0.000440412
1400 | -0.000442912
1401 | -0.000445415
1402 | -0.000447921
1403 | -0.000450431
1404 | -0.000452944
1405 | -0.000455461
1406 | -0.000457981
1407 | -0.000460503
1408 | -0.000463029
1409 | -0.000465559
1410 | -0.000468091
1411 | -0.000470627
1412 | -0.000473165
1413 | -0.000475707
1414 | -0.000478252
1415 | -0.000480799
1416 | -0.00048335
1417 | -0.000485904
1418 | -0.00048846
1419 | -0.00049102
1420 | -0.000493582
1421 | -0.000496147
1422 | -0.000498715
1423 | 0.000501286
1424 | 0.000503859
1425 | 0.000506436
1426 | 0.000509015
1427 | 0.000511596
1428 | 0.000514181
1429 | 0.000516768
1430 | 0.000519357
1431 | 0.000521949
1432 | 0.000524544
1433 | 0.000527141
1434 | 0.000529741
1435 | 0.000532343
1436 | 0.000534947
1437 | 0.000537554
1438 | 0.000540164
1439 | 0.000542775
1440 | 0.000545389
1441 | 0.000548006
1442 | 0.000550624
1443 | 0.000553245
1444 | 0.000555868
1445 | 0.000558493
1446 | 0.00056112
1447 | 0.000563749
1448 | 0.000566381
1449 | 0.000569014
1450 | 0.000571649
1451 | 0.000574287
1452 | 0.000576926
1453 | 0.000579567
1454 | 0.000582211
1455 | 0.000584856
1456 | 0.000587503
1457 | 0.000590151
1458 | 0.000592802
1459 | 0.000595454
1460 | 0.000598108
1461 | 0.000600763
1462 | 0.000603421
1463 | 0.000606079
1464 | 0.00060874
1465 | 0.000611402
1466 | 0.000614065
1467 | 0.00061673
1468 | 0.000619397
1469 | 0.000622065
1470 | 0.000624734
1471 | 0.000627405
1472 | 0.000630077
1473 | 0.00063275
1474 | 0.000635425
1475 | 0.000638101
1476 | 0.000640778
1477 | 0.000643456
1478 | 0.000646135
1479 | 0.000648816
1480 | 0.000651498
1481 | 0.00065418
1482 | 0.000656864
1483 | 0.000659549
1484 | 0.000662234
1485 | 0.000664921
1486 | 0.000667608
1487 | 0.000670296
1488 | 0.000672985
1489 | 0.000675675
1490 | 0.000678366
1491 | 0.000681057
1492 | 0.000683749
1493 | 0.000686442
1494 | 0.000689136
1495 | 0.000691829
1496 | 0.000694524
1497 | 0.000697219
1498 | 0.000699915
1499 | 0.000702611
1500 | 0.000705307
1501 | 0.000708004
1502 | 0.000710701
1503 | 0.000713398
1504 | 0.000716096
1505 | 0.000718794
1506 | 0.000721493
1507 | 0.000724191
1508 | 0.00072689
1509 | 0.000729589
1510 | 0.000732287
1511 | 0.000734986
1512 | 0.000737685
1513 | 0.000740384
1514 | 0.000743083
1515 | 0.000745782
1516 | 0.00074848
1517 | 0.000751179
1518 | 0.000753877
1519 | 0.000756576
1520 | 0.000759273
1521 | 0.000761971
1522 | 0.000764668
1523 | 0.000767365
1524 | 0.000770062
1525 | 0.000772758
1526 | 0.000775454
1527 | 0.000778149
1528 | 0.000780843
1529 | 0.000783537
1530 | 0.000786231
1531 | 0.000788924
1532 | 0.000791616
1533 | 0.000794307
1534 | 0.000796998
1535 | 0.000799688
1536 | 0.000802377
1537 | 0.000805065
1538 | 0.000807753
1539 | 0.000810439
1540 | 0.000813125
1541 | 0.00081581
1542 | 0.000818493
1543 | 0.000821176
1544 | 0.000823857
1545 | 0.000826537
1546 | 0.000829216
1547 | 0.000831894
1548 | 0.000834571
1549 | 0.000837246
1550 | 0.00083992
1551 | 0.000842593
1552 | 0.000845265
1553 | 0.000847935
1554 | 0.000850603
1555 | 0.00085327
1556 | 0.000855936
1557 | 0.0008586
1558 | 0.000861262
1559 | 0.000863923
1560 | 0.000866582
1561 | 0.000869239
1562 | 0.000871895
1563 | 0.000874549
1564 | 0.000877201
1565 | 0.000879851
1566 | 0.000882499
1567 | 0.000885146
1568 | 0.00088779
1569 | 0.000890433
1570 | 0.000893073
1571 | 0.000895712
1572 | 0.000898348
1573 | 0.000900982
1574 | 0.000903614
1575 | 0.000906244
1576 | 0.000908871
1577 | 0.000911496
1578 | 0.000914119
1579 | 0.00091674
1580 | 0.000919358
1581 | 0.000921974
1582 | 0.000924587
1583 | 0.000927198
1584 | 0.000929806
1585 | 0.000932412
1586 | 0.000935015
1587 | 0.000937615
1588 | 0.000940213
1589 | 0.000942808
1590 | 0.0009454
1591 | 0.00094799
1592 | 0.000950576
1593 | 0.00095316
1594 | 0.000955741
1595 | 0.000958319
1596 | 0.000960894
1597 | 0.000963466
1598 | 0.000966035
1599 | 0.000968601
1600 | 0.000971163
1601 | 0.000973723
1602 | 0.000976279
1603 | 0.000978832
1604 | 0.000981382
1605 | 0.000983928
1606 | 0.000986472
1607 | 0.000989011
1608 | 0.000991548
1609 | 0.00099408
1610 | 0.00099661
1611 | 0.000999136
1612 | 0.00100166
1613 | 0.00100418
1614 | 0.00100669
1615 | 0.0010092
1616 | 0.00101171
1617 | 0.00101421
1618 | 0.00101671
1619 | 0.00101921
1620 | 0.0010217
1621 | 0.00102419
1622 | 0.00102668
1623 | 0.00102916
1624 | 0.00103163
1625 | 0.00103411
1626 | 0.00103658
1627 | 0.00103904
1628 | 0.0010415
1629 | 0.00104396
1630 | 0.00104641
1631 | 0.00104886
1632 | 0.0010513
1633 | 0.00105374
1634 | 0.00105617
1635 | 0.0010586
1636 | 0.00106103
1637 | 0.00106345
1638 | 0.00106587
1639 | 0.00106828
1640 | 0.00107068
1641 | 0.00107309
1642 | 0.00107549
1643 | 0.00107788
1644 | 0.00108027
1645 | 0.00108265
1646 | 0.00108503
1647 | 0.00108741
1648 | 0.00108977
1649 | 0.00109214
1650 | 0.0010945
1651 | 0.00109685
1652 | 0.0010992
1653 | 0.00110155
1654 | 0.00110389
1655 | 0.00110622
1656 | 0.00110855
1657 | 0.00111087
1658 | 0.00111319
1659 | 0.0011155
1660 | 0.00111781
1661 | 0.00112012
1662 | 0.00112241
1663 | 0.0011247
1664 | 0.00112699
1665 | 0.00112927
1666 | 0.00113155
1667 | 0.00113382
1668 | 0.00113608
1669 | 0.00113834
1670 | 0.00114059
1671 | 0.00114284
1672 | 0.00114508
1673 | 0.00114731
1674 | 0.00114954
1675 | 0.00115177
1676 | 0.00115399
1677 | 0.0011562
1678 | 0.0011584
1679 | 0.0011606
1680 | 0.0011628
1681 | 0.00116498
1682 | 0.00116717
1683 | 0.00116934
1684 | 0.00117151
1685 | 0.00117367
1686 | 0.00117583
1687 | 0.00117798
1688 | 0.00118013
1689 | 0.00118226
1690 | 0.00118439
1691 | 0.00118652
1692 | 0.00118864
1693 | 0.00119075
1694 | 0.00119286
1695 | 0.00119495
1696 | 0.00119705
1697 | 0.00119913
1698 | 0.00120121
1699 | 0.00120328
1700 | 0.00120535
1701 | 0.00120741
1702 | 0.00120946
1703 | 0.0012115
1704 | 0.00121354
1705 | 0.00121557
1706 | 0.0012176
1707 | 0.00121962
1708 | 0.00122163
1709 | 0.00122363
1710 | 0.00122563
1711 | 0.00122761
1712 | 0.0012296
1713 | 0.00123157
1714 | 0.00123354
1715 | 0.0012355
1716 | 0.00123745
1717 | 0.0012394
1718 | 0.00124134
1719 | 0.00124327
1720 | 0.00124519
1721 | 0.00124711
1722 | 0.00124901
1723 | 0.00125092
1724 | 0.00125281
1725 | 0.00125469
1726 | 0.00125657
1727 | 0.00125844
1728 | 0.00126031
1729 | 0.00126216
1730 | 0.00126401
1731 | 0.00126585
1732 | 0.00126768
1733 | 0.0012695
1734 | 0.00127132
1735 | 0.00127313
1736 | 0.00127493
1737 | 0.00127672
1738 | 0.0012785
1739 | 0.00128028
1740 | 0.00128205
1741 | 0.00128381
1742 | 0.00128556
1743 | 0.0012873
1744 | 0.00128904
1745 | 0.00129076
1746 | 0.00129248
1747 | 0.00129419
1748 | 0.00129589
1749 | 0.00129759
1750 | 0.00129927
1751 | 0.00130095
1752 | 0.00130262
1753 | 0.00130428
1754 | 0.00130593
1755 | 0.00130757
1756 | 0.00130921
1757 | 0.00131083
1758 | 0.00131245
1759 | 0.00131406
1760 | 0.00131565
1761 | 0.00131725
1762 | 0.00131883
1763 | 0.0013204
1764 | 0.00132196
1765 | 0.00132352
1766 | 0.00132507
1767 | 0.0013266
1768 | 0.00132813
1769 | 0.00132965
1770 | 0.00133116
1771 | 0.00133266
1772 | 0.00133416
1773 | 0.00133564
1774 | 0.00133711
1775 | 0.00133858
1776 | 0.00134003
1777 | 0.00134148
1778 | 0.00134292
1779 | 0.00134435
1780 | 0.00134577
1781 | 0.00134717
1782 | 0.00134857
1783 | 0.00134997
1784 | 0.00135135
1785 | 0.00135272
1786 | 0.00135408
1787 | 0.00135543
1788 | 0.00135678
1789 | 0.00135811
1790 | 0.00135943
1791 | 0.00136075
1792 | 0.00136205
1793 | 0.00136335
1794 | 0.00136463
1795 | 0.00136591
1796 | 0.00136717
1797 | 0.00136843
1798 | 0.00136968
1799 | 0.00137091
1800 | 0.00137214
1801 | 0.00137336
1802 | 0.00137456
1803 | 0.00137576
1804 | 0.00137695
1805 | 0.00137812
1806 | 0.00137929
1807 | 0.00138045
1808 | 0.00138159
1809 | 0.00138273
1810 | 0.00138386
1811 | 0.00138497
1812 | 0.00138608
1813 | 0.00138717
1814 | 0.00138826
1815 | 0.00138933
1816 | 0.0013904
1817 | 0.00139145
1818 | 0.0013925
1819 | 0.00139353
1820 | 0.00139455
1821 | 0.00139557
1822 | 0.00139657
1823 | 0.00139756
1824 | 0.00139854
1825 | 0.00139952
1826 | 0.00140048
1827 | 0.00140143
1828 | 0.00140237
1829 | 0.00140329
1830 | 0.00140421
1831 | 0.00140512
1832 | 0.00140602
1833 | 0.0014069
1834 | 0.00140778
1835 | 0.00140864
1836 | 0.0014095
1837 | 0.00141034
1838 | 0.00141117
1839 | 0.00141199
1840 | 0.0014128
1841 | 0.0014136
1842 | 0.00141439
1843 | 0.00141517
1844 | 0.00141594
1845 | 0.00141669
1846 | 0.00141744
1847 | 0.00141817
1848 | 0.0014189
1849 | 0.00141961
1850 | 0.00142031
1851 | 0.001421
1852 | 0.00142168
1853 | 0.00142234
1854 | 0.001423
1855 | 0.00142364
1856 | 0.00142428
1857 | 0.0014249
1858 | 0.00142551
1859 | 0.00142611
1860 | 0.0014267
1861 | 0.00142728
1862 | 0.00142784
1863 | 0.0014284
1864 | 0.00142894
1865 | 0.00142947
1866 | 0.00143
1867 | 0.0014305
1868 | 0.001431
1869 | 0.00143149
1870 | 0.00143196
1871 | 0.00143243
1872 | 0.00143288
1873 | 0.00143332
1874 | 0.00143375
1875 | 0.00143416
1876 | 0.00143457
1877 | 0.00143496
1878 | 0.00143535
1879 | 0.00143572
1880 | 0.00143607
1881 | 0.00143642
1882 | 0.00143676
1883 | 0.00143708
1884 | 0.00143739
1885 | 0.00143769
1886 | 0.00143798
1887 | 0.00143826
1888 | 0.00143852
1889 | 0.00143878
1890 | 0.00143902
1891 | 0.00143925
1892 | 0.00143947
1893 | 0.00143967
1894 | 0.00143987
1895 | 0.00144005
1896 | 0.00144022
1897 | 0.00144038
1898 | 0.00144052
1899 | 0.00144066
1900 | 0.00144078
1901 | 0.00144089
1902 | 0.00144099
1903 | 0.00144107
1904 | 0.00144115
1905 | 0.00144121
1906 | 0.00144126
1907 | 0.0014413
1908 | 0.00144132
1909 | 0.00144134
1910 | 0.00144134
1911 | 0
1912 | 0.00144133
1913 | 0.00144131
1914 | 0.00144127
1915 | 0.00144122
1916 | 0.00144116
1917 | 0.00144109
1918 | 0.00144101
1919 | 0.00144091
1920 | 0.00144081
1921 | 0.00144069
1922 | 0.00144055
1923 | 0.00144041
1924 | 0.00144025
1925 | 0.00144008
1926 | 0.0014399
1927 | 0.00143971
1928 | 0.0014395
1929 | 0.00143928
1930 | 0.00143905
1931 | 0.00143881
1932 | 0.00143855
1933 | 0.00143828
1934 | 0.001438
1935 | 0.00143771
1936 | 0.0014374
1937 | 0.00143709
1938 | 0.00143676
1939 | 0.00143641
1940 | 0.00143606
1941 | 0.00143569
1942 | 0.00143531
1943 | 0.00143492
1944 | 0.00143452
1945 | 0.0014341
1946 | 0.00143367
1947 | 0.00143323
1948 | 0.00143277
1949 | 0.0014323
1950 | 0.00143182
1951 | 0.00143133
1952 | 0.00143083
1953 | 0.00143031
1954 | 0.00142978
1955 | 0.00142924
1956 | 0.00142868
1957 | 0.00142812
1958 | 0.00142754
1959 | 0.00142694
1960 | 0.00142634
1961 | 0.00142572
1962 | 0.00142509
1963 | 0.00142445
1964 | 0.00142379
1965 | 0.00142312
1966 | 0.00142244
1967 | 0.00142175
1968 | 0.00142104
1969 | 0.00142032
1970 | 0.00141959
1971 | 0.00141885
1972 | 0.00141809
1973 | 0.00141732
1974 | 0.00141654
1975 | 0.00141575
1976 | 0.00141494
1977 | 0.00141412
1978 | 0.00141329
1979 | 0.00141244
1980 | 0.00141158
1981 | 0.00141071
1982 | 0.00140983
1983 | 0.00140893
1984 | 0.00140802
1985 | 0.0014071
1986 | 0.00140617
1987 | 0.00140522
1988 | 0.00140426
1989 | 0.00140329
1990 | 0.00140231
1991 | 0.00140131
1992 | 0.0014003
1993 | 0.00139928
1994 | 0.00139824
1995 | 0.0013972
1996 | 0.00139613
1997 | 0.00139506
1998 | 0.00139398
1999 | 0.00139288
2000 | 0.00139177
2001 | 0.00139064
2002 | 0.0013895
2003 | 0.00138836
2004 | 0.00138719
2005 | 0.00138602
2006 | 0.00138483
2007 | 0.00138363
2008 | 0.00138242
2009 | 0.00138119
2010 | 0.00137996
2011 | 0.0013787
2012 | 0.00137744
2013 | 0.00137617
2014 | 0.00137488
2015 | 0.00137358
2016 | 0.00137226
2017 | 0.00137093
2018 | 0.0013696
2019 | 0.00136824
2020 | 0.00136688
2021 | 0.0013655
2022 | 0.00136411
2023 | 0.00136271
2024 | 0.0013613
2025 | 0.00135987
2026 | 0.00135843
2027 | 0.00135697
2028 | 0.00135551
2029 | 0.00135403
2030 | 0.00135254
2031 | 0.00135104
2032 | 0.00134952
2033 | 0.00134799
2034 | 0.00134645
2035 | 0.0013449
2036 | 0.00134333
2037 | 0.00134176
2038 | 0.00134017
2039 | 0.00133856
2040 | 0.00133695
2041 | 0.00133532
2042 | 0.00133368
2043 | 0.00133202
2044 | 0.00133036
2045 | 0.00132868
2046 | 0.00132699
2047 | 0.00132528
2048 | 0.00132357
2049 | 0.00132184
2050 | 0.0013201
2051 | 0.00131835
2052 | 0.00131658
2053 | 0.0013148
2054 | 0.00131301
2055 | 0.00131121
2056 | 0.00130939
2057 | 0.00130757
2058 | 0.00130573
2059 | 0.00130388
2060 | 0.00130201
2061 | 0.00130013
2062 | 0.00129824
2063 | 0.00129634
2064 | 0.00129443
2065 | 0.0012925
2066 | 0.00129057
2067 | 0.00128861
2068 | 0.00128665
2069 | 0.00128468
2070 | 0.00128269
2071 | 0.00128069
2072 | 0.00127868
2073 | 0.00127665
2074 | 0.00127462
2075 | 0.00127257
2076 | 0.00127051
2077 | 0.00126844
2078 | 0.00126635
2079 | 0.00126426
2080 | 0.00126215
2081 | 0.00126003
2082 | 0.00125789
2083 | 0.00125575
2084 | 0.00125359
2085 | 0.00125142
2086 | 0.00124924
2087 | 0.00124705
2088 | 0.00124484
2089 | 0.00124263
2090 | 0.0012404
2091 | 0.00123816
2092 | 0.0012359
2093 | 0.00123364
2094 | 0.00123136
2095 | 0.00122908
2096 | 0.00122678
2097 | 0.00122446
2098 | 0.00122214
2099 | 0.0012198
2100 | 0.00121746
2101 | 0.0012151
2102 | 0.00121273
2103 | 0.00121034
2104 | 0.00120795
2105 | 0.00120554
2106 | 0.00120312
2107 | 0.0012007
2108 | 0.00119825
2109 | 0.0011958
2110 | 0.00119334
2111 | 0.00119086
2112 | 0.00118837
2113 | 0.00118587
2114 | 0.00118336
2115 | 0.00118084
2116 | 0.00117831
2117 | 0.00117576
2118 | 0.00117321
2119 | 0.00117064
2120 | 0.00116806
2121 | 0.00116547
2122 | 0.00116287
2123 | 0.00116025
2124 | 0.00115763
2125 | 0.00115499
2126 | 0.00115234
2127 | 0.00114969
2128 | 0.00114702
2129 | 0.00114433
2130 | 0.00114164
2131 | 0.00113894
2132 | 0.00113622
2133 | 0.0011335
2134 | 0.00113076
2135 | 0.00112801
2136 | 0.00112525
2137 | 0.00112248
2138 | 0.0011197
2139 | 0.00111691
2140 | 0.00111411
2141 | 0.00111129
2142 | 0.00110847
2143 | 0.00110563
2144 | 0.00110279
2145 | 0.00109993
2146 | 0.00109706
2147 | 0.00109418
2148 | 0.00109129
2149 | 0.00108839
2150 | 0.00108548
2151 | 0.00108255
2152 | 0.00107962
2153 | 0.00107668
2154 | 0.00107372
2155 | 0.00107076
2156 | 0.00106778
2157 | 0.0010648
2158 | 0.0010618
2159 | 0.00105879
2160 | 0.00105577
2161 | 0.00105275
2162 | 0.00104971
2163 | 0.00104666
2164 | 0.0010436
2165 | 0.00104053
2166 | 0.00103745
2167 | 0.00103436
2168 | 0.00103126
2169 | 0.00102815
2170 | 0.00102503
2171 | 0.00102189
2172 | 0.00101875
2173 | 0.0010156
2174 | 0.00101244
2175 | 0.00100927
2176 | 0.00100609
2177 | 0.00100289
2178 | 0.000999692
2179 | 0.00099648
2180 | 0.000993258
2181 | 0.000990026
2182 | 0.000986784
2183 | 0.000983533
2184 | 0.000980272
2185 | 0.000977
2186 | 0.00097372
2187 | 0.000970429
2188 | 0.000967129
2189 | 0.000963819
2190 | 0.000960499
2191 | 0.00095717
2192 | 0.000953831
2193 | 0.000950482
2194 | 0.000947124
2195 | 0.000943757
2196 | 0.00094038
2197 | 0.000936994
2198 | 0.000933598
2199 | 0.000930193
2200 | 0.000926779
2201 | 0.000923355
2202 | 0.000919922
2203 | 0.00091648
2204 | 0.000913028
2205 | 0.000909568
2206 | 0.000906098
2207 | 0.000902619
2208 | 0.000899131
2209 | 0.000895634
2210 | 0.000892128
2211 | 0.000888613
2212 | 0.000885089
2213 | 0.000881556
2214 | 0.000878014
2215 | 0.000874464
2216 | 0.000870904
2217 | 0.000867336
2218 | 0.000863759
2219 | 0.000860173
2220 | 0.000856579
2221 | 0.000852976
2222 | 0.000849364
2223 | 0.000845744
2224 | 0.000842115
2225 | 0.000838478
2226 | 0.000834832
2227 | 0.000831178
2228 | 0.000827515
2229 | 0.000823844
2230 | 0.000820165
2231 | 0.000816477
2232 | 0.000812781
2233 | 0.000809077
2234 | 0.000805365
2235 | 0.000801645
2236 | 0.000797916
2237 | 0.000794179
2238 | 0.000790434
2239 | 0.000786682
2240 | 0.000782921
2241 | 0.000779152
2242 | 0.000775376
2243 | 0.000771591
2244 | 0.000767799
2245 | 0.000763999
2246 | 0.000760191
2247 | 0.000756375
2248 | 0.000752552
2249 | 0.000748721
2250 | 0.000744882
2251 | 0.000741036
2252 | 0.000737183
2253 | 0.000733321
2254 | 0.000729453
2255 | 0.000725577
2256 | 0.000721693
2257 | 0.000717803
2258 | 0.000713904
2259 | 0.000709999
2260 | 0.000706086
2261 | 0.000702167
2262 | 0.00069824
2263 | 0.000694305
2264 | 0.000690364
2265 | 0.000686416
2266 | 0.000682461
2267 | 0.000678499
2268 | 0.00067453
2269 | 0.000670554
2270 | 0.000666571
2271 | 0.000662581
2272 | 0.000658585
2273 | 0.000654581
2274 | 0.000650572
2275 | 0.000646555
2276 | 0.000642532
2277 | 0.000638502
2278 | 0.000634466
2279 | 0.000630423
2280 | 0.000626374
2281 | 0.000622319
2282 | 0.000618257
2283 | 0.000614189
2284 | 0.000610114
2285 | 0.000606033
2286 | 0.000601946
2287 | 0.000597853
2288 | 0.000593754
2289 | 0.000589648
2290 | 0.000585537
2291 | 0.00058142
2292 | 0.000577296
2293 | 0.000573167
2294 | 0.000569032
2295 | 0.000564891
2296 | 0.000560744
2297 | 0.000556591
2298 | 0.000552433
2299 | 0.000548269
2300 | 0.0005441
2301 | 0.000539924
2302 | 0.000535744
2303 | 0.000531557
2304 | 0.000527366
2305 | 0.000523169
2306 | 0.000518966
2307 | 0.000514758
2308 | 0.000510545
2309 | 0.000506327
2310 | 0.000502104
2311 | 0.000497875
2312 | 0.000493641
2313 | 0.000489402
2314 | 0.000485158
2315 | 0.000480909
2316 | 0.000476655
2317 | 0.000472397
2318 | 0.000468133
2319 | 0.000463865
2320 | 0.000459591
2321 | 0.000455313
2322 | 0.000451031
2323 | 0.000446743
2324 | 0.000442452
2325 | 0.000438155
2326 | 0.000433854
2327 | 0.000429549
2328 | 0.000425239
2329 | 0.000420925
2330 | 0.000416606
2331 | 0.000412283
2332 | 0.000407956
2333 | 0.000403625
2334 | 0.000399289
2335 | 0.00039495
2336 | 0.000390606
2337 | 0.000386258
2338 | 0.000381907
2339 | 0.000377551
2340 | 0.000373191
2341 | 0.000368828
2342 | 0.000364461
2343 | 0.00036009
2344 | 0.000355715
2345 | 0.000351337
2346 | 0.000346955
2347 | 0.000342569
2348 | 0.00033818
2349 | 0.000333788
2350 | 0.000329392
2351 | 0.000324992
2352 | 0.000320589
2353 | 0.000316183
2354 | 0.000311774
2355 | 0.000307361
2356 | 0.000302946
2357 | 0.000298527
2358 | 0.000294105
2359 | 0.00028968
2360 | 0.000285252
2361 | 0.000280821
2362 | 0.000276387
2363 | 0.00027195
2364 | 0.000267511
2365 | 0.000263068
2366 | 0.000258623
2367 | 0.000254175
2368 | 0.000249725
2369 | 0.000245272
2370 | 0.000240817
2371 | 0.000236359
2372 | 0.000231898
2373 | 0.000227436
2374 | 0.000222971
2375 | 0.000218503
2376 | 0.000214033
2377 | 0.000209561
2378 | 0.000205087
2379 | 0.000200611
2380 | 0.000196133
2381 | 0.000191653
2382 | 0.00018717
2383 | 0.000182686
2384 | 0.0001782
2385 | 0.000173712
2386 | 0.000169222
2387 | 0.000164731
2388 | 0.000160237
2389 | 0.000155742
2390 | 0.000151246
2391 | 0.000146748
2392 | 0.000142248
2393 | 0.000137747
2394 | 0.000133245
2395 | 0.000128741
2396 | 0.000124236
2397 | 0.000119729
2398 | 0.000115221
2399 | 0.000110713
2400 | 0.000106202
2401 | 0.000101691
2402 | 9.71791e-05
2403 | 9.26658e-05
2404 | 8.81516e-05
2405 | 8.36365e-05
2406 | 7.91206e-05
2407 | 7.46038e-05
2408 | 7.00862e-05
2409 | 6.55679e-05
2410 | 6.10489e-05
2411 | 5.65293e-05
2412 | 5.20091e-05
2413 | 4.74884e-05
2414 | 4.29672e-05
2415 | 3.84455e-05
2416 | 3.39235e-05
2417 | 2.9401e-05
2418 | 2.48783e-05
2419 | 2.03553e-05
2420 | 1.58321e-05
2421 | 1.13088e-05
2422 | 6.78532e-06
2423 | 2.26178e-06
2424 | -2.26178e-06
2425 | -6.78532e-06
2426 | -1.13088e-05
2427 | -1.58321e-05
2428 | -2.03553e-05
2429 | -2.48783e-05
2430 | -2.9401e-05
2431 | -3.39235e-05
2432 | -3.84455e-05
2433 | -4.29672e-05
2434 | -4.74884e-05
2435 | -5.20091e-05
2436 | -5.65293e-05
2437 | -6.10489e-05
2438 | -6.55679e-05
2439 | -7.00862e-05
2440 | -7.46038e-05
2441 | -7.91206e-05
2442 | -8.36365e-05
2443 | -8.81516e-05
2444 | -9.26658e-05
2445 | -9.71791e-05
2446 | -0.000101691
2447 | -0.000106202
2448 | -0.000110713
2449 | -0.000115221
2450 | -0.000119729
2451 | -0.000124236
2452 | -0.000128741
2453 | -0.000133245
2454 | -0.000137747
2455 | -0.000142248
2456 | -0.000146748
2457 | -0.000151246
2458 | -0.000155742
2459 | -0.000160237
2460 | -0.000164731
2461 | -0.000169222
2462 | -0.000173712
2463 | -0.0001782
2464 | -0.000182686
2465 | -0.00018717
2466 | -0.000191653
2467 | -0.000196133
2468 | -0.000200611
2469 | -0.000205087
2470 | -0.000209561
2471 | -0.000214033
2472 | -0.000218503
2473 | -0.000222971
2474 | -0.000227436
2475 | -0.000231898
2476 | -0.000236359
2477 | -0.000240817
2478 | -0.000245272
2479 | -0.000249725
2480 | -0.000254175
2481 | -0.000258623
2482 | -0.000263068
2483 | -0.000267511
2484 | -0.00027195
2485 | -0.000276387
2486 | -0.000280821
2487 | -0.000285252
2488 | -0.00028968
2489 | -0.000294105
2490 | -0.000298527
2491 | -0.000302946
2492 | -0.000307361
2493 | -0.000311774
2494 | -0.000316183
2495 | -0.000320589
2496 | -0.000324992
2497 | -0.000329392
2498 | -0.000333788
2499 | -0.00033818
2500 | -0.000342569
2501 | -0.000346955
2502 | -0.000351337
2503 | -0.000355715
2504 | -0.00036009
2505 | -0.000364461
2506 | -0.000368828
2507 | -0.000373191
2508 | -0.000377551
2509 | -0.000381907
2510 | -0.000386258
2511 | -0.000390606
2512 | -0.00039495
2513 | -0.000399289
2514 | -0.000403625
2515 | -0.000407956
2516 | -0.000412283
2517 | -0.000416606
2518 | -0.000420925
2519 | -0.000425239
2520 | -0.000429549
2521 | -0.000433854
2522 | -0.000438155
2523 | -0.000442452
2524 | -0.000446743
2525 | -0.000451031
2526 | -0.000455313
2527 | -0.000459591
2528 | -0.000463865
2529 | -0.000468133
2530 | -0.000472397
2531 | -0.000476655
2532 | -0.000480909
2533 | -0.000485158
2534 | -0.000489402
2535 | -0.000493641
2536 | -0.000497875
2537 | -0.000502104
2538 | -0.000506327
2539 | -0.000510545
2540 | -0.000514758
2541 | -0.000518966
2542 | -0.000523169
2543 | -0.000527366
2544 | -0.000531557
2545 | -0.000535744
2546 | -0.000539924
2547 | -0.0005441
2548 | -0.000548269
2549 | -0.000552433
2550 | -0.000556591
2551 | -0.000560744
2552 | -0.000564891
2553 | -0.000569032
2554 | -0.000573167
2555 | -0.000577296
2556 | -0.00058142
2557 | -0.000585537
2558 | -0.000589648
2559 | -0.000593754
2560 | -0.000597853
2561 | -0.000601946
2562 | -0.000606033
2563 | -0.000610114
2564 | -0.000614189
2565 | -0.000618257
2566 | -0.000622319
2567 | -0.000626374
2568 | -0.000630423
2569 | -0.000634466
2570 | -0.000638502
2571 | -0.000642532
2572 | -0.000646555
2573 | -0.000650572
2574 | -0.000654581
2575 | -0.000658585
2576 | -0.000662581
2577 | -0.000666571
2578 | -0.000670554
2579 | -0.00067453
2580 | -0.000678499
2581 | -0.000682461
2582 | -0.000686416
2583 | -0.000690364
2584 | -0.000694305
2585 | -0.00069824
2586 | -0.000702167
2587 | -0.000706086
2588 | -0.000709999
2589 | -0.000713904
2590 | -0.000717803
2591 | -0.000721693
2592 | -0.000725577
2593 | -0.000729453
2594 | -0.000733321
2595 | -0.000737183
2596 | -0.000741036
2597 | -0.000744882
2598 | -0.000748721
2599 | -0.000752552
2600 | -0.000756375
2601 | -0.000760191
2602 | -0.000763999
2603 | -0.000767799
2604 | -0.000771591
2605 | -0.000775376
2606 | -0.000779152
2607 | -0.000782921
2608 | -0.000786682
2609 | -0.000790434
2610 | -0.000794179
2611 | -0.000797916
2612 | -0.000801645
2613 | -0.000805365
2614 | -0.000809077
2615 | -0.000812781
2616 | -0.000816477
2617 | -0.000820165
2618 | -0.000823844
2619 | -0.000827515
2620 | -0.000831178
2621 | -0.000834832
2622 | -0.000838478
2623 | -0.000842115
2624 | -0.000845744
2625 | -0.000849364
2626 | -0.000852976
2627 | -0.000856579
2628 | -0.000860173
2629 | -0.000863759
2630 | -0.000867336
2631 | -0.000870904
2632 | -0.000874464
2633 | -0.000878014
2634 | -0.000881556
2635 | -0.000885089
2636 | -0.000888613
2637 | -0.000892128
2638 | -0.000895634
2639 | -0.000899131
2640 | -0.000902619
2641 | -0.000906098
2642 | -0.000909568
2643 | -0.000913028
2644 | -0.00091648
2645 | -0.000919922
2646 | -0.000923355
2647 | -0.000926779
2648 | -0.000930193
2649 | -0.000933598
2650 | -0.000936994
2651 | -0.00094038
2652 | -0.000943757
2653 | -0.000947124
2654 | -0.000950482
2655 | -0.000953831
2656 | -0.00095717
2657 | -0.000960499
2658 | -0.000963819
2659 | -0.000967129
2660 | -0.000970429
2661 | -0.00097372
2662 | -0.000977
2663 | -0.000980272
2664 | -0.000983533
2665 | -0.000986784
2666 | -0.000990026
2667 | -0.000993258
2668 | -0.00099648
2669 | -0.000999692
2670 | -0.00100289
2671 | -0.00100609
2672 | -0.00100927
2673 | -0.00101244
2674 | -0.0010156
2675 | -0.00101875
2676 | -0.00102189
2677 | -0.00102503
2678 | -0.00102815
2679 | -0.00103126
2680 | -0.00103436
2681 | -0.00103745
2682 | -0.00104053
2683 | -0.0010436
2684 | -0.00104666
2685 | -0.00104971
2686 | -0.00105275
2687 | -0.00105577
2688 | -0.00105879
2689 | -0.0010618
2690 | -0.0010648
2691 | -0.00106778
2692 | -0.00107076
2693 | -0.00107372
2694 | -0.00107668
2695 | -0.00107962
2696 | -0.00108255
2697 | -0.00108548
2698 | -0.00108839
2699 | -0.00109129
2700 | -0.00109418
2701 | -0.00109706
2702 | -0.00109993
2703 | -0.00110279
2704 | -0.00110563
2705 | -0.00110847
2706 | -0.00111129
2707 | -0.00111411
2708 | -0.00111691
2709 | -0.0011197
2710 | -0.00112248
2711 | -0.00112525
2712 | -0.00112801
2713 | -0.00113076
2714 | -0.0011335
2715 | -0.00113622
2716 | -0.00113894
2717 | -0.00114164
2718 | -0.00114433
2719 | -0.00114702
2720 | -0.00114969
2721 | -0.00115234
2722 | -0.00115499
2723 | -0.00115763
2724 | -0.00116025
2725 | -0.00116287
2726 | -0.00116547
2727 | -0.00116806
2728 | -0.00117064
2729 | -0.00117321
2730 | -0.00117576
2731 | -0.00117831
2732 | -0.00118084
2733 | -0.00118336
2734 | -0.00118587
2735 | -0.00118837
2736 | -0.00119086
2737 | -0.00119334
2738 | -0.0011958
2739 | -0.00119825
2740 | -0.0012007
2741 | -0.00120312
2742 | -0.00120554
2743 | -0.00120795
2744 | -0.00121034
2745 | -0.00121273
2746 | -0.0012151
2747 | -0.00121746
2748 | -0.0012198
2749 | -0.00122214
2750 | -0.00122446
2751 | -0.00122678
2752 | -0.00122908
2753 | -0.00123136
2754 | -0.00123364
2755 | -0.0012359
2756 | -0.00123816
2757 | -0.0012404
2758 | -0.00124263
2759 | -0.00124484
2760 | -0.00124705
2761 | -0.00124924
2762 | -0.00125142
2763 | -0.00125359
2764 | -0.00125575
2765 | -0.00125789
2766 | -0.00126003
2767 | -0.00126215
2768 | -0.00126426
2769 | -0.00126635
2770 | -0.00126844
2771 | -0.00127051
2772 | -0.00127257
2773 | -0.00127462
2774 | -0.00127665
2775 | -0.00127868
2776 | -0.00128069
2777 | -0.00128269
2778 | -0.00128468
2779 | -0.00128665
2780 | -0.00128861
2781 | -0.00129057
2782 | -0.0012925
2783 | -0.00129443
2784 | -0.00129634
2785 | -0.00129824
2786 | -0.00130013
2787 | -0.00130201
2788 | -0.00130388
2789 | -0.00130573
2790 | -0.00130757
2791 | -0.00130939
2792 | -0.00131121
2793 | -0.00131301
2794 | -0.0013148
2795 | -0.00131658
2796 | -0.00131835
2797 | -0.0013201
2798 | -0.00132184
2799 | -0.00132357
2800 | -0.00132528
2801 | -0.00132699
2802 | -0.00132868
2803 | -0.00133036
2804 | -0.00133202
2805 | -0.00133368
2806 | -0.00133532
2807 | -0.00133695
2808 | -0.00133856
2809 | -0.00134017
2810 | -0.00134176
2811 | -0.00134333
2812 | -0.0013449
2813 | -0.00134645
2814 | -0.00134799
2815 | -0.00134952
2816 | -0.00135104
2817 | -0.00135254
2818 | -0.00135403
2819 | -0.00135551
2820 | -0.00135697
2821 | -0.00135843
2822 | -0.00135987
2823 | -0.0013613
2824 | -0.00136271
2825 | -0.00136411
2826 | -0.0013655
2827 | -0.00136688
2828 | -0.00136824
2829 | -0.0013696
2830 | -0.00137093
2831 | -0.00137226
2832 | -0.00137358
2833 | -0.00137488
2834 | -0.00137617
2835 | -0.00137744
2836 | -0.0013787
2837 | -0.00137996
2838 | -0.00138119
2839 | -0.00138242
2840 | -0.00138363
2841 | -0.00138483
2842 | -0.00138602
2843 | -0.00138719
2844 | -0.00138836
2845 | -0.0013895
2846 | -0.00139064
2847 | -0.00139177
2848 | -0.00139288
2849 | -0.00139398
2850 | -0.00139506
2851 | -0.00139613
2852 | -0.0013972
2853 | -0.00139824
2854 | -0.00139928
2855 | -0.0014003
2856 | -0.00140131
2857 | -0.00140231
2858 | -0.00140329
2859 | -0.00140426
2860 | -0.00140522
2861 | -0.00140617
2862 | -0.0014071
2863 | -0.00140802
2864 | -0.00140893
2865 | -0.00140983
2866 | -0.00141071
2867 | -0.00141158
2868 | -0.00141244
2869 | -0.00141329
2870 | -0.00141412
2871 | -0.00141494
2872 | -0.00141575
2873 | -0.00141654
2874 | -0.00141732
2875 | -0.00141809
2876 | -0.00141885
2877 | -0.00141959
2878 | -0.00142032
2879 | -0.00142104
2880 | -0.00142175
2881 | -0.00142244
2882 | -0.00142312
2883 | -0.00142379
2884 | -0.00142445
2885 | -0.00142509
2886 | -0.00142572
2887 | -0.00142634
2888 | -0.00142694
2889 | -0.00142754
2890 | -0.00142812
2891 | -0.00142868
2892 | -0.00142924
2893 | -0.00142978
2894 | -0.00143031
2895 | -0.00143083
2896 | -0.00143133
2897 | -0.00143182
2898 | -0.0014323
2899 | -0.00143277
2900 | -0.00143323
2901 | -0.00143367
2902 | -0.0014341
2903 | -0.00143452
2904 | -0.00143492
2905 | -0.00143531
2906 | -0.00143569
2907 | -0.00143606
2908 | -0.00143641
2909 | -0.00143676
2910 | -0.00143709
2911 | -0.0014374
2912 | -0.00143771
2913 | -0.001438
2914 | -0.00143828
2915 | -0.00143855
2916 | -0.00143881
2917 | -0.00143905
2918 | -0.00143928
2919 | -0.0014395
2920 | -0.00143971
2921 | -0.0014399
2922 | -0.00144008
2923 | -0.00144025
2924 | -0.00144041
2925 | -0.00144055
2926 | -0.00144069
2927 | -0.00144081
2928 | -0.00144091
2929 | -0.00144101
2930 | -0.00144109
2931 | -0.00144116
2932 | -0.00144122
2933 | -0.00144127
2934 | -0.00144131
2935 | -0.00144133
2936 | -0.00144134
2937 | -0.00144134
2938 | 0
2939 | -0.00144132
2940 | -0.0014413
2941 | -0.00144126
2942 | -0.00144121
2943 | -0.00144115
2944 | -0.00144107
2945 | -0.00144099
2946 | -0.00144089
2947 | -0.00144078
2948 | -0.00144066
2949 | -0.00144052
2950 | -0.00144038
2951 | -0.00144022
2952 | -0.00144005
2953 | -0.00143987
2954 | -0.00143967
2955 | -0.00143947
2956 | -0.00143925
2957 | -0.00143902
2958 | -0.00143878
2959 | -0.00143852
2960 | -0.00143826
2961 | -0.00143798
2962 | -0.00143769
2963 | -0.00143739
2964 | -0.00143708
2965 | -0.00143676
2966 | -0.00143642
2967 | -0.00143607
2968 | -0.00143572
2969 | -0.00143535
2970 | -0.00143496
2971 | -0.00143457
2972 | -0.00143416
2973 | -0.00143375
2974 | -0.00143332
2975 | -0.00143288
2976 | -0.00143243
2977 | -0.00143196
2978 | -0.00143149
2979 | -0.001431
2980 | -0.0014305
2981 | -0.00143
2982 | -0.00142947
2983 | -0.00142894
2984 | -0.0014284
2985 | -0.00142784
2986 | -0.00142728
2987 | -0.0014267
2988 | -0.00142611
2989 | -0.00142551
2990 | -0.0014249
2991 | -0.00142428
2992 | -0.00142364
2993 | -0.001423
2994 | -0.00142234
2995 | -0.00142168
2996 | -0.001421
2997 | -0.00142031
2998 | -0.00141961
2999 | -0.0014189
3000 | -0.00141817
3001 | -0.00141744
3002 | -0.00141669
3003 | -0.00141594
3004 | -0.00141517
3005 | -0.00141439
3006 | -0.0014136
3007 | -0.0014128
3008 | -0.00141199
3009 | -0.00141117
3010 | -0.00141034
3011 | -0.0014095
3012 | -0.00140864
3013 | -0.00140778
3014 | -0.0014069
3015 | -0.00140602
3016 | -0.00140512
3017 | -0.00140421
3018 | -0.00140329
3019 | -0.00140237
3020 | -0.00140143
3021 | -0.00140048
3022 | -0.00139952
3023 | -0.00139854
3024 | -0.00139756
3025 | -0.00139657
3026 | -0.00139557
3027 | -0.00139455
3028 | -0.00139353
3029 | -0.0013925
3030 | -0.00139145
3031 | -0.0013904
3032 | -0.00138933
3033 | -0.00138826
3034 | -0.00138717
3035 | -0.00138608
3036 | -0.00138497
3037 | -0.00138386
3038 | -0.00138273
3039 | -0.00138159
3040 | -0.00138045
3041 | -0.00137929
3042 | -0.00137812
3043 | -0.00137695
3044 | -0.00137576
3045 | -0.00137456
3046 | -0.00137336
3047 | -0.00137214
3048 | -0.00137091
3049 | -0.00136968
3050 | -0.00136843
3051 | -0.00136717
3052 | -0.00136591
3053 | -0.00136463
3054 | -0.00136335
3055 | -0.00136205
3056 | -0.00136075
3057 | -0.00135943
3058 | -0.00135811
3059 | -0.00135678
3060 | -0.00135543
3061 | -0.00135408
3062 | -0.00135272
3063 | -0.00135135
3064 | -0.00134997
3065 | -0.00134857
3066 | -0.00134717
3067 | -0.00134577
3068 | -0.00134435
3069 | -0.00134292
3070 | -0.00134148
3071 | -0.00134003
3072 | -0.00133858
3073 | -0.00133711
3074 | -0.00133564
3075 | -0.00133416
3076 | -0.00133266
3077 | -0.00133116
3078 | -0.00132965
3079 | -0.00132813
3080 | -0.0013266
3081 | -0.00132507
3082 | -0.00132352
3083 | -0.00132196
3084 | -0.0013204
3085 | -0.00131883
3086 | -0.00131725
3087 | -0.00131565
3088 | -0.00131406
3089 | -0.00131245
3090 | -0.00131083
3091 | -0.00130921
3092 | -0.00130757
3093 | -0.00130593
3094 | -0.00130428
3095 | -0.00130262
3096 | -0.00130095
3097 | -0.00129927
3098 | -0.00129759
3099 | -0.00129589
3100 | -0.00129419
3101 | -0.00129248
3102 | -0.00129076
3103 | -0.00128904
3104 | -0.0012873
3105 | -0.00128556
3106 | -0.00128381
3107 | -0.00128205
3108 | -0.00128028
3109 | -0.0012785
3110 | -0.00127672
3111 | -0.00127493
3112 | -0.00127313
3113 | -0.00127132
3114 | -0.0012695
3115 | -0.00126768
3116 | -0.00126585
3117 | -0.00126401
3118 | -0.00126216
3119 | -0.00126031
3120 | -0.00125844
3121 | -0.00125657
3122 | -0.00125469
3123 | -0.00125281
3124 | -0.00125092
3125 | -0.00124901
3126 | -0.00124711
3127 | -0.00124519
3128 | -0.00124327
3129 | -0.00124134
3130 | -0.0012394
3131 | -0.00123745
3132 | -0.0012355
3133 | -0.00123354
3134 | -0.00123157
3135 | -0.0012296
3136 | -0.00122761
3137 | -0.00122563
3138 | -0.00122363
3139 | -0.00122163
3140 | -0.00121962
3141 | -0.0012176
3142 | -0.00121557
3143 | -0.00121354
3144 | -0.0012115
3145 | -0.00120946
3146 | -0.00120741
3147 | -0.00120535
3148 | -0.00120328
3149 | -0.00120121
3150 | -0.00119913
3151 | -0.00119705
3152 | -0.00119495
3153 | -0.00119286
3154 | -0.00119075
3155 | -0.00118864
3156 | -0.00118652
3157 | -0.00118439
3158 | -0.00118226
3159 | -0.00118013
3160 | -0.00117798
3161 | -0.00117583
3162 | -0.00117367
3163 | -0.00117151
3164 | -0.00116934
3165 | -0.00116717
3166 | -0.00116498
3167 | -0.0011628
3168 | -0.0011606
3169 | -0.0011584
3170 | -0.0011562
3171 | -0.00115399
3172 | -0.00115177
3173 | -0.00114954
3174 | -0.00114731
3175 | -0.00114508
3176 | -0.00114284
3177 | -0.00114059
3178 | -0.00113834
3179 | -0.00113608
3180 | -0.00113382
3181 | -0.00113155
3182 | -0.00112927
3183 | -0.00112699
3184 | -0.0011247
3185 | -0.00112241
3186 | -0.00112012
3187 | -0.00111781
3188 | -0.0011155
3189 | -0.00111319
3190 | -0.00111087
3191 | -0.00110855
3192 | -0.00110622
3193 | -0.00110389
3194 | -0.00110155
3195 | -0.0010992
3196 | -0.00109685
3197 | -0.0010945
3198 | -0.00109214
3199 | -0.00108977
3200 | -0.00108741
3201 | -0.00108503
3202 | -0.00108265
3203 | -0.00108027
3204 | -0.00107788
3205 | -0.00107549
3206 | -0.00107309
3207 | -0.00107068
3208 | -0.00106828
3209 | -0.00106587
3210 | -0.00106345
3211 | -0.00106103
3212 | -0.0010586
3213 | -0.00105617
3214 | -0.00105374
3215 | -0.0010513
3216 | -0.00104886
3217 | -0.00104641
3218 | -0.00104396
3219 | -0.0010415
3220 | -0.00103904
3221 | -0.00103658
3222 | -0.00103411
3223 | -0.00103163
3224 | -0.00102916
3225 | -0.00102668
3226 | -0.00102419
3227 | -0.0010217
3228 | -0.00101921
3229 | -0.00101671
3230 | -0.00101421
3231 | -0.00101171
3232 | -0.0010092
3233 | -0.00100669
3234 | -0.00100418
3235 | -0.00100166
3236 | -0.000999136
3237 | -0.00099661
3238 | -0.00099408
3239 | -0.000991548
3240 | -0.000989011
3241 | -0.000986472
3242 | -0.000983928
3243 | -0.000981382
3244 | -0.000978832
3245 | -0.000976279
3246 | -0.000973723
3247 | -0.000971163
3248 | -0.000968601
3249 | -0.000966035
3250 | -0.000963466
3251 | -0.000960894
3252 | -0.000958319
3253 | -0.000955741
3254 | -0.00095316
3255 | -0.000950576
3256 | -0.00094799
3257 | -0.0009454
3258 | -0.000942808
3259 | -0.000940213
3260 | -0.000937615
3261 | -0.000935015
3262 | -0.000932412
3263 | -0.000929806
3264 | -0.000927198
3265 | -0.000924587
3266 | -0.000921974
3267 | -0.000919358
3268 | -0.00091674
3269 | -0.000914119
3270 | -0.000911496
3271 | -0.000908871
3272 | -0.000906244
3273 | -0.000903614
3274 | -0.000900982
3275 | -0.000898348
3276 | -0.000895712
3277 | -0.000893073
3278 | -0.000890433
3279 | -0.00088779
3280 | -0.000885146
3281 | -0.000882499
3282 | -0.000879851
3283 | -0.000877201
3284 | -0.000874549
3285 | -0.000871895
3286 | -0.000869239
3287 | -0.000866582
3288 | -0.000863923
3289 | -0.000861262
3290 | -0.0008586
3291 | -0.000855936
3292 | -0.00085327
3293 | -0.000850603
3294 | -0.000847935
3295 | -0.000845265
3296 | -0.000842593
3297 | -0.00083992
3298 | -0.000837246
3299 | -0.000834571
3300 | -0.000831894
3301 | -0.000829216
3302 | -0.000826537
3303 | -0.000823857
3304 | -0.000821176
3305 | -0.000818493
3306 | -0.00081581
3307 | -0.000813125
3308 | -0.000810439
3309 | -0.000807753
3310 | -0.000805065
3311 | -0.000802377
3312 | -0.000799688
3313 | -0.000796998
3314 | -0.000794307
3315 | -0.000791616
3316 | -0.000788924
3317 | -0.000786231
3318 | -0.000783537
3319 | -0.000780843
3320 | -0.000778149
3321 | -0.000775454
3322 | -0.000772758
3323 | -0.000770062
3324 | -0.000767365
3325 | -0.000764668
3326 | -0.000761971
3327 | -0.000759273
3328 | -0.000756576
3329 | -0.000753877
3330 | -0.000751179
3331 | -0.00074848
3332 | -0.000745782
3333 | -0.000743083
3334 | -0.000740384
3335 | -0.000737685
3336 | -0.000734986
3337 | -0.000732287
3338 | -0.000729589
3339 | -0.00072689
3340 | -0.000724191
3341 | -0.000721493
3342 | -0.000718794
3343 | -0.000716096
3344 | -0.000713398
3345 | -0.000710701
3346 | -0.000708004
3347 | -0.000705307
3348 | -0.000702611
3349 | -0.000699915
3350 | -0.000697219
3351 | -0.000694524
3352 | -0.000691829
3353 | -0.000689136
3354 | -0.000686442
3355 | -0.000683749
3356 | -0.000681057
3357 | -0.000678366
3358 | -0.000675675
3359 | -0.000672985
3360 | -0.000670296
3361 | -0.000667608
3362 | -0.000664921
3363 | -0.000662234
3364 | -0.000659549
3365 | -0.000656864
3366 | -0.00065418
3367 | -0.000651498
3368 | -0.000648816
3369 | -0.000646135
3370 | -0.000643456
3371 | -0.000640778
3372 | -0.000638101
3373 | -0.000635425
3374 | -0.00063275
3375 | -0.000630077
3376 | -0.000627405
3377 | -0.000624734
3378 | -0.000622065
3379 | -0.000619397
3380 | -0.00061673
3381 | -0.000614065
3382 | -0.000611402
3383 | -0.00060874
3384 | -0.000606079
3385 | -0.000603421
3386 | -0.000600763
3387 | -0.000598108
3388 | -0.000595454
3389 | -0.000592802
3390 | -0.000590151
3391 | -0.000587503
3392 | -0.000584856
3393 | -0.000582211
3394 | -0.000579567
3395 | -0.000576926
3396 | -0.000574287
3397 | -0.000571649
3398 | -0.000569014
3399 | -0.000566381
3400 | -0.000563749
3401 | -0.00056112
3402 | -0.000558493
3403 | -0.000555868
3404 | -0.000553245
3405 | -0.000550624
3406 | -0.000548006
3407 | -0.000545389
3408 | -0.000542775
3409 | -0.000540164
3410 | -0.000537554
3411 | -0.000534947
3412 | -0.000532343
3413 | -0.000529741
3414 | -0.000527141
3415 | -0.000524544
3416 | -0.000521949
3417 | -0.000519357
3418 | -0.000516768
3419 | -0.000514181
3420 | -0.000511596
3421 | -0.000509015
3422 | -0.000506436
3423 | -0.000503859
3424 | -0.000501286
3425 | 0.000498715
3426 | 0.000496147
3427 | 0.000493582
3428 | 0.00049102
3429 | 0.00048846
3430 | 0.000485904
3431 | 0.00048335
3432 | 0.000480799
3433 | 0.000478252
3434 | 0.000475707
3435 | 0.000473165
3436 | 0.000470627
3437 | 0.000468091
3438 | 0.000465559
3439 | 0.000463029
3440 | 0.000460503
3441 | 0.000457981
3442 | 0.000455461
3443 | 0.000452944
3444 | 0.000450431
3445 | 0.000447921
3446 | 0.000445415
3447 | 0.000442912
3448 | 0.000440412
3449 | 0.000437916
3450 | 0.000435423
3451 | 0.000432933
3452 | 0.000430447
3453 | 0.000427965
3454 | 0.000425486
3455 | 0.00042301
3456 | 0.000420538
3457 | 0.00041807
3458 | 0.000415605
3459 | 0.000413144
3460 | 0.000410687
3461 | 0.000408234
3462 | 0.000405784
3463 | 0.000403338
3464 | 0.000400895
3465 | 0.000398457
3466 | 0.000396022
3467 | 0.000393591
3468 | 0.000391164
3469 | 0.000388741
3470 | 0.000386322
3471 | 0.000383906
3472 | 0.000381495
3473 | 0.000379088
3474 | 0.000376684
3475 | 0.000374285
3476 | 0.00037189
3477 | 0.000369499
3478 | 0.000367112
3479 | 0.000364729
3480 | 0.00036235
3481 | 0.000359975
3482 | 0.000357605
3483 | 0.000355238
3484 | 0.000352876
3485 | 0.000350519
3486 | 0.000348165
3487 | 0.000345816
3488 | 0.000343471
3489 | 0.000341131
3490 | 0.000338794
3491 | 0.000336463
3492 | 0.000334135
3493 | 0.000331812
3494 | 0.000329494
3495 | 0.00032718
3496 | 0.00032487
3497 | 0.000322565
3498 | 0.000320265
3499 | 0.000317969
3500 | 0.000315677
3501 | 0.00031339
3502 | 0.000311108
3503 | 0.00030883
3504 | 0.000306558
3505 | 0.000304289
3506 | 0.000302026
3507 | 0.000299767
3508 | 0.000297513
3509 | 0.000295263
3510 | 0.000293019
3511 | 0.000290779
3512 | 0.000288544
3513 | 0.000286313
3514 | 0.000284088
3515 | 0.000281868
3516 | 0.000279652
3517 | 0.000277441
3518 | 0.000275235
3519 | 0.000273034
3520 | 0.000270838
3521 | 0.000268647
3522 | 0.000266461
3523 | 0.00026428
3524 | 0.000262104
3525 | 0.000259933
3526 | 0.000257768
3527 | 0.000255607
3528 | 0.000253451
3529 | 0.0002513
3530 | 0.000249155
3531 | 0.000247015
3532 | 0.000244879
3533 | 0.000242749
3534 | 0.000240624
3535 | 0.000238505
3536 | 0.00023639
3537 | 0.000234281
3538 | 0.000232177
3539 | 0.000230079
3540 | 0.000227985
3541 | 0.000225897
3542 | 0.000223815
3543 | 0.000221737
3544 | 0.000219665
3545 | 0.000217598
3546 | 0.000215537
3547 | 0.000213481
3548 | 0.000211431
3549 | 0.000209386
3550 | 0.000207346
3551 | 0.000205312
3552 | 0.000203283
3553 | 0.00020126
3554 | 0.000199242
3555 | 0.00019723
3556 | 0.000195223
3557 | 0.000193222
3558 | 0.000191226
3559 | 0.000189236
3560 | 0.000187252
3561 | 0.000185273
3562 | 0.0001833
3563 | 0.000181332
3564 | 0.00017937
3565 | 0.000177414
3566 | 0.000175463
3567 | 0.000173518
3568 | 0.000171578
3569 | 0.000169645
3570 | 0.000167717
3571 | 0.000165794
3572 | 0.000163878
3573 | 0.000161967
3574 | 0.000160062
3575 | 0.000158163
3576 | 0.000156269
3577 | 0.000154381
3578 | 0.0001525
3579 | 0.000150623
3580 | 0.000148753
3581 | 0.000146889
3582 | 0.00014503
3583 | 0.000143177
3584 | 0.00014133
3585 | 0.000139489
3586 | 0.000137654
3587 | 0.000135825
3588 | 0.000134002
3589 | 0.000132184
3590 | 0.000130373
3591 | 0.000128567
3592 | 0.000126768
3593 | 0.000124974
3594 | 0.000123187
3595 | 0.000121405
3596 | 0.000119629
3597 | 0.000117859
3598 | 0.000116096
3599 | 0.000114338
3600 | 0.000112586
3601 | 0.000110841
3602 | 0.000109101
3603 | 0.000107368
3604 | 0.00010564
3605 | 0.000103919
3606 | 0.000102203
3607 | 0.000100494
3608 | 9.87906e-05
3609 | 9.70935e-05
3610 | 9.54025e-05
3611 | 9.37176e-05
3612 | 9.20388e-05
3613 | 9.03661e-05
3614 | 8.86996e-05
3615 | 8.70392e-05
3616 | 8.53849e-05
3617 | 8.37368e-05
3618 | 8.20949e-05
3619 | 8.04591e-05
3620 | 7.88295e-05
3621 | 7.7206e-05
3622 | 7.55888e-05
3623 | 7.39777e-05
3624 | 7.23729e-05
3625 | 7.07742e-05
3626 | 6.91817e-05
3627 | 6.75955e-05
3628 | 6.60155e-05
3629 | 6.44417e-05
3630 | 6.28741e-05
3631 | 6.13127e-05
3632 | 5.97576e-05
3633 | 5.82088e-05
3634 | 5.66662e-05
3635 | 5.51298e-05
3636 | 5.35997e-05
3637 | 5.20759e-05
3638 | 5.05583e-05
3639 | 4.90471e-05
3640 | 4.7542e-05
3641 | 4.60433e-05
3642 | 4.45509e-05
3643 | 4.30647e-05
3644 | 4.15848e-05
3645 | 4.01112e-05
3646 | 3.8644e-05
3647 | 3.7183e-05
3648 | 3.57283e-05
3649 | 3.42799e-05
3650 | 3.28379e-05
3651 | 3.14021e-05
3652 | 2.99727e-05
3653 | 2.85496e-05
3654 | 2.71328e-05
3655 | 2.57224e-05
3656 | 2.43182e-05
3657 | 2.29204e-05
3658 | 2.1529e-05
3659 | 2.01438e-05
3660 | 1.8765e-05
3661 | 1.73925e-05
3662 | 1.60264e-05
3663 | 1.46666e-05
3664 | 1.33132e-05
3665 | 1.19661e-05
3666 | 1.06253e-05
3667 | 9.29087e-06
3668 | 7.9628e-06
3669 | 6.64107e-06
3670 | 5.32569e-06
3671 | 4.01666e-06
3672 | 2.71398e-06
3673 | 1.41764e-06
3674 | 1.27658e-07
3675 | -1.15598e-06
3676 | -2.43326e-06
3677 | -3.7042e-06
3678 | -4.96879e-06
3679 | -6.22702e-06
3680 | -7.47891e-06
3681 | -8.72445e-06
3682 | -9.96364e-06
3683 | -1.11965e-05
3684 | -1.2423e-05
3685 | -1.36431e-05
3686 | -1.48569e-05
3687 | -1.60644e-05
3688 | -1.72655e-05
3689 | -1.84603e-05
3690 | -1.96488e-05
3691 | -2.08309e-05
3692 | -2.20066e-05
3693 | -2.3176e-05
3694 | -2.43391e-05
3695 | -2.54959e-05
3696 | -2.66464e-05
3697 | -2.77905e-05
3698 | -2.89282e-05
3699 | -3.00597e-05
3700 | -3.11849e-05
3701 | -3.23037e-05
3702 | -3.34162e-05
3703 | -3.45224e-05
3704 | -3.56223e-05
3705 | -3.67159e-05
3706 | -3.78031e-05
3707 | -3.88841e-05
3708 | -3.99588e-05
3709 | -4.10272e-05
3710 | -4.20893e-05
3711 | -4.31451e-05
3712 | -4.41947e-05
3713 | -4.52379e-05
3714 | -4.62749e-05
3715 | -4.73056e-05
3716 | -4.83301e-05
3717 | -4.93482e-05
3718 | -5.03602e-05
3719 | -5.13658e-05
3720 | -5.23653e-05
3721 | -5.33584e-05
3722 | -5.43454e-05
3723 | -5.53261e-05
3724 | -5.63006e-05
3725 | -5.72688e-05
3726 | -5.82308e-05
3727 | -5.91866e-05
3728 | -6.01363e-05
3729 | -6.10797e-05
3730 | -6.20169e-05
3731 | -6.29479e-05
3732 | -6.38727e-05
3733 | -6.47913e-05
3734 | -6.57038e-05
3735 | -6.66101e-05
3736 | -6.75102e-05
3737 | -6.84042e-05
3738 | -6.9292e-05
3739 | -7.01737e-05
3740 | -7.10493e-05
3741 | -7.19187e-05
3742 | -7.2782e-05
3743 | -7.36391e-05
3744 | -7.44902e-05
3745 | -7.53351e-05
3746 | -7.6174e-05
3747 | -7.70068e-05
3748 | -7.78334e-05
3749 | -7.8654e-05
3750 | -7.94686e-05
3751 | -8.02771e-05
3752 | -8.10795e-05
3753 | -8.18759e-05
3754 | -8.26662e-05
3755 | -8.34505e-05
3756 | -8.42288e-05
3757 | -8.50011e-05
3758 | -8.57674e-05
3759 | -8.65276e-05
3760 | -8.72819e-05
3761 | -8.80302e-05
3762 | -8.87725e-05
3763 | -8.95089e-05
3764 | -9.02393e-05
3765 | -9.09638e-05
3766 | -9.16823e-05
3767 | -9.23949e-05
3768 | -9.31016e-05
3769 | -9.38024e-05
3770 | -9.44972e-05
3771 | -9.51862e-05
3772 | -9.58693e-05
3773 | -9.65465e-05
3774 | -9.72179e-05
3775 | -9.78834e-05
3776 | -9.8543e-05
3777 | -9.91968e-05
3778 | -9.98448e-05
3779 | -0.000100487
3780 | -0.000101123
3781 | -0.000101754
3782 | -0.000102379
3783 | -0.000102998
3784 | -0.000103611
3785 | -0.000104219
3786 | -0.00010482
3787 | -0.000105416
3788 | -0.000106007
3789 | -0.000106591
3790 | -0.00010717
3791 | -0.000107743
3792 | -0.000108311
3793 | -0.000108873
3794 | -0.000109429
3795 | -0.000109979
3796 | -0.000110524
3797 | -0.000111064
3798 | -0.000111597
3799 | -0.000112125
3800 | -0.000112648
3801 | -0.000113165
3802 | -0.000113676
3803 | -0.000114182
3804 | -0.000114682
3805 | -0.000115177
3806 | -0.000115666
3807 | -0.00011615
3808 | -0.000116628
3809 | -0.000117101
3810 | -0.000117568
3811 | -0.00011803
3812 | -0.000118486
3813 | -0.000118937
3814 | -0.000119383
3815 | -0.000119823
3816 | -0.000120258
3817 | -0.000120687
3818 | -0.000121111
3819 | -0.00012153
3820 | -0.000121943
3821 | -0.000122351
3822 | -0.000122754
3823 | -0.000123151
3824 | -0.000123543
3825 | -0.00012393
3826 | -0.000124311
3827 | -0.000124688
3828 | -0.000125059
3829 | -0.000125425
3830 | -0.000125785
3831 | -0.000126141
3832 | -0.000126491
3833 | -0.000126836
3834 | -0.000127176
3835 | -0.000127511
3836 | -0.000127841
3837 | -0.000128165
3838 | -0.000128485
3839 | -0.000128799
3840 | -0.000129108
3841 | -0.000129413
3842 | -0.000129712
3843 | -0.000130006
3844 | -0.000130295
3845 | -0.00013058
3846 | -0.000130859
3847 | -0.000131133
3848 | -0.000131402
3849 | -0.000131667
3850 | -0.000131926
3851 | -0.000132181
3852 | -0.000132431
3853 | -0.000132675
3854 | -0.000132915
3855 | -0.000133151
3856 | -0.000133381
3857 | -0.000133606
3858 | -0.000133827
3859 | -0.000134043
3860 | -0.000134254
3861 | -0.00013446
3862 | -0.000134662
3863 | -0.000134859
3864 | -0.000135051
3865 | -0.000135239
3866 | -0.000135422
3867 | -0.0001356
3868 | -0.000135773
3869 | -0.000135942
3870 | -0.000136107
3871 | -0.000136267
3872 | -0.000136422
3873 | -0.000136572
3874 | -0.000136718
3875 | -0.00013686
3876 | -0.000136997
3877 | -0.00013713
3878 | -0.000137258
3879 | -0.000137381
3880 | -0.0001375
3881 | -0.000137615
3882 | -0.000137725
3883 | -0.000137831
3884 | -0.000137933
3885 | -0.00013803
3886 | -0.000138123
3887 | -0.000138211
3888 | -0.000138296
3889 | -0.000138375
3890 | -0.000138451
3891 | -0.000138522
3892 | -0.00013859
3893 | -0.000138652
3894 | -0.000138711
3895 | -0.000138766
3896 | -0.000138816
3897 | -0.000138862
3898 | -0.000138904
3899 | -0.000138942
3900 | -0.000138976
3901 | -0.000139005
3902 | -0.000139031
3903 | -0.000139053
3904 | -0.00013907
3905 | -0.000139084
3906 | -0.000139084
3907 | 4
3908 | -0.000139081
3909 | -0.000139067
3910 | -0.000139049
3911 | -0.000139027
3912 | -0.000139002
3913 | -0.000138972
3914 | -0.000138939
3915 | -0.000138901
3916 | -0.000138861
3917 | -0.000138816
3918 | -0.000138767
3919 | -0.000138715
3920 | -0.00013866
3921 | -0.0001386
3922 | -0.000138537
3923 | -0.00013847
3924 | -0.0001384
3925 | -0.000138326
3926 | -0.000138248
3927 | -0.000138167
3928 | -0.000138082
3929 | -0.000137994
3930 | -0.000137902
3931 | -0.000137807
3932 | -0.000137708
3933 | -0.000137606
3934 | -0.0001375
3935 | -0.000137391
3936 | -0.000137278
3937 | -0.000137162
3938 | -0.000137043
3939 | -0.00013692
3940 | -0.000136794
3941 | -0.000136665
3942 | -0.000136533
3943 | -0.000136397
3944 | -0.000136258
3945 | -0.000136115
3946 | -0.00013597
3947 | -0.000135821
3948 | -0.000135669
3949 | -0.000135514
3950 | -0.000135356
3951 | -0.000135194
3952 | -0.00013503
3953 | -0.000134862
3954 | -0.000134691
3955 | -0.000134518
3956 | -0.000134341
3957 | -0.000134161
3958 | -0.000133978
3959 | -0.000133793
3960 | -0.000133604
3961 | -0.000133412
3962 | -0.000133218
3963 | -0.00013302
3964 | -0.00013282
3965 | -0.000132617
3966 | -0.000132411
3967 | -0.000132202
3968 | -0.00013199
3969 | -0.000131775
3970 | -0.000131558
3971 | -0.000131338
3972 | -0.000131115
3973 | -0.00013089
3974 | -0.000130662
3975 | -0.000130431
3976 | -0.000130197
3977 | -0.000129961
3978 | -0.000129723
3979 | -0.000129481
3980 | -0.000129237
3981 | -0.000128991
3982 | -0.000128742
3983 | -0.00012849
3984 | -0.000128236
3985 | -0.00012798
3986 | -0.000127721
3987 | -0.000127459
3988 | -0.000127195
3989 | -0.000126929
3990 | -0.00012666
3991 | -0.000126389
3992 | -0.000126116
3993 | -0.00012584
3994 | -0.000125562
3995 | -0.000125282
3996 | -0.000124999
3997 | -0.000124714
3998 | -0.000124427
3999 | -0.000124138
4000 | -0.000123846
4001 | -0.000123553
4002 | -0.000123257
4003 | -0.000122959
4004 | -0.000122658
4005 | -0.000122356
4006 | -0.000122052
4007 | -0.000121745
4008 | -0.000121437
4009 | -0.000121126
4010 | -0.000120814
4011 | -0.000120499
4012 | -0.000120183
4013 | -0.000119864
4014 | -0.000119544
4015 | -0.000119222
4016 | -0.000118898
4017 | -0.000118572
4018 | -0.000118244
4019 | -0.000117914
4020 | -0.000117582
4021 | -0.000117249
4022 | -0.000116914
4023 | -0.000116577
4024 | -0.000116238
4025 | -0.000115897
4026 | -0.000115555
4027 | -0.000115211
4028 | -0.000114866
4029 | -0.000114519
4030 | -0.00011417
4031 | -0.00011382
4032 | -0.000113468
4033 | -0.000113114
4034 | -0.000112759
4035 | -0.000112402
4036 | -0.000112044
4037 | -0.000111684
4038 | -0.000111323
4039 | -0.00011096
4040 | -0.000110596
4041 | -0.00011023
4042 | -0.000109863
4043 | -0.000109495
4044 | -0.000109125
4045 | -0.000108754
4046 | -0.000108381
4047 | -0.000108008
4048 | -0.000107633
4049 | -0.000107256
4050 | -0.000106878
4051 | -0.0001065
4052 | -0.000106119
4053 | -0.000105738
4054 | -0.000105356
4055 | -0.000104972
4056 | -0.000104587
4057 | -0.000104201
4058 | -0.000103814
4059 | -0.000103425
4060 | -0.000103036
4061 | -0.000102646
4062 | -0.000102254
4063 | -0.000101862
4064 | -0.000101468
4065 | -0.000101074
4066 | -0.000100678
4067 | -0.000100282
4068 | -9.98842e-05
4069 | -9.94859e-05
4070 | -9.90866e-05
4071 | -9.86865e-05
4072 | -9.82855e-05
4073 | -9.78836e-05
4074 | -9.74809e-05
4075 | -9.70774e-05
4076 | -9.6673e-05
4077 | -9.62679e-05
4078 | -9.5862e-05
4079 | -9.54554e-05
4080 | -9.5048e-05
4081 | -9.46399e-05
4082 | -9.42311e-05
4083 | -9.38217e-05
4084 | -9.34115e-05
4085 | -9.30007e-05
4086 | -9.25893e-05
4087 | -9.21773e-05
4088 | -9.17647e-05
4089 | -9.13515e-05
4090 | -9.09377e-05
4091 | -9.05234e-05
4092 | -9.01085e-05
4093 | -8.96932e-05
4094 | -8.92773e-05
4095 | -8.8861e-05
4096 | -8.84442e-05
4097 | -8.8027e-05
4098 | -8.76093e-05
4099 | -8.71912e-05
4100 | -8.67728e-05
4101 | -8.63539e-05
4102 | -8.59347e-05
4103 | -8.55151e-05
4104 | -8.50953e-05
4105 | -8.46751e-05
4106 | -8.42546e-05
4107 | -8.38338e-05
4108 | -8.34128e-05
4109 | -8.29915e-05
4110 | -8.257e-05
4111 | -8.21483e-05
4112 | -8.17263e-05
4113 | -8.13042e-05
4114 | -8.0882e-05
4115 | -8.04595e-05
4116 | -8.0037e-05
4117 | -7.96143e-05
4118 | -7.91915e-05
4119 | -7.87687e-05
4120 | -7.83457e-05
4121 | -7.79228e-05
4122 | -7.74997e-05
4123 | -7.70767e-05
4124 | -7.66536e-05
4125 | -7.62306e-05
4126 | -7.58075e-05
4127 | -7.53845e-05
4128 | -7.49616e-05
4129 | -7.45387e-05
4130 | -7.41159e-05
4131 | -7.36932e-05
4132 | -7.32707e-05
4133 | -7.28482e-05
4134 | -7.24259e-05
4135 | -7.20038e-05
4136 | -7.15818e-05
4137 | -7.11601e-05
4138 | -7.07385e-05
4139 | -7.03171e-05
4140 | -6.9896e-05
4141 | -6.94751e-05
4142 | -6.90545e-05
4143 | -6.86342e-05
4144 | -6.82142e-05
4145 | -6.77945e-05
4146 | -6.73751e-05
4147 | -6.6956e-05
4148 | -6.65373e-05
4149 | -6.61189e-05
4150 | -6.5701e-05
4151 | -6.52834e-05
4152 | -6.48662e-05
4153 | -6.44495e-05
4154 | -6.40332e-05
4155 | -6.36173e-05
4156 | -6.32019e-05
4157 | -6.2787e-05
4158 | -6.23726e-05
4159 | -6.19586e-05
4160 | -6.15452e-05
4161 | -6.11324e-05
4162 | -6.072e-05
4163 | -6.03083e-05
4164 | -5.98971e-05
4165 | -5.94865e-05
4166 | -5.90765e-05
4167 | -5.86671e-05
4168 | -5.82583e-05
4169 | -5.78502e-05
4170 | -5.74427e-05
4171 | -5.70359e-05
4172 | -5.66298e-05
4173 | -5.62244e-05
4174 | -5.58197e-05
4175 | -5.54157e-05
4176 | -5.50124e-05
4177 | -5.46099e-05
4178 | -5.42081e-05
4179 | -5.38071e-05
4180 | -5.34069e-05
4181 | -5.30074e-05
4182 | -5.26088e-05
4183 | -5.2211e-05
4184 | -5.1814e-05
4185 | -5.14179e-05
4186 | -5.10226e-05
4187 | -5.06282e-05
4188 | -5.02347e-05
4189 | -4.98421e-05
4190 | -4.94504e-05
4191 | -4.90596e-05
4192 | -4.86697e-05
4193 | -4.82807e-05
4194 | -4.78927e-05
4195 | -4.75057e-05
4196 | -4.71197e-05
4197 | -4.67346e-05
4198 | -4.63505e-05
4199 | -4.59675e-05
4200 | -4.55854e-05
4201 | -4.52044e-05
4202 | -4.48245e-05
4203 | -4.44456e-05
4204 | -4.40677e-05
4205 | -4.3691e-05
4206 | -4.33153e-05
4207 | -4.29407e-05
4208 | -4.25672e-05
4209 | -4.21949e-05
4210 | -4.18237e-05
4211 | -4.14536e-05
4212 | -4.10847e-05
4213 | -4.07169e-05
4214 | -4.03503e-05
4215 | -3.99849e-05
4216 | -3.96207e-05
4217 | -3.92577e-05
4218 | -3.88959e-05
4219 | -3.85353e-05
4220 | -3.8176e-05
4221 | -3.78179e-05
4222 | -3.7461e-05
4223 | -3.71055e-05
4224 | -3.67512e-05
4225 | -3.63981e-05
4226 | -3.60464e-05
4227 | -3.5696e-05
4228 | -3.53469e-05
4229 | -3.49991e-05
4230 | -3.46526e-05
4231 | -3.43075e-05
4232 | -3.39637e-05
4233 | -3.36213e-05
4234 | -3.32803e-05
4235 | -3.29406e-05
4236 | -3.26023e-05
4237 | -3.22655e-05
4238 | -3.193e-05
4239 | -3.15959e-05
4240 | -3.12633e-05
4241 | -3.09321e-05
4242 | -3.06023e-05
4243 | -3.0274e-05
4244 | -2.99471e-05
4245 | -2.96217e-05
4246 | -2.92977e-05
4247 | -2.89753e-05
4248 | -2.86543e-05
4249 | -2.83348e-05
4250 | -2.80169e-05
4251 | -2.77004e-05
4252 | -2.73855e-05
4253 | -2.70721e-05
4254 | -2.67602e-05
4255 | -2.64499e-05
4256 | -2.61411e-05
4257 | -2.58339e-05
4258 | -2.55282e-05
4259 | -2.52242e-05
4260 | -2.49217e-05
4261 | -2.46208e-05
4262 | -2.43215e-05
4263 | -2.40238e-05
4264 | -2.37277e-05
4265 | -2.34332e-05
4266 | -2.31403e-05
4267 | -2.28491e-05
4268 | -2.25595e-05
4269 | -2.22716e-05
4270 | -2.19853e-05
4271 | -2.17006e-05
4272 | -2.14177e-05
4273 | -2.11364e-05
4274 | -2.08567e-05
4275 | -2.05788e-05
4276 | -2.03026e-05
4277 | -2.0028e-05
4278 | -1.97551e-05
4279 | -1.9484e-05
4280 | -1.92146e-05
4281 | -1.89468e-05
4282 | -1.86809e-05
4283 | -1.84166e-05
4284 | -1.81541e-05
4285 | -1.78933e-05
4286 | -1.76343e-05
4287 | -1.7377e-05
4288 | -1.71214e-05
4289 | -1.68677e-05
4290 | -1.66157e-05
4291 | -1.63655e-05
4292 | -1.6117e-05
4293 | -1.58704e-05
4294 | -1.56255e-05
4295 | -1.53825e-05
4296 | -1.51412e-05
4297 | -1.49017e-05
4298 | -1.46641e-05
4299 | -1.44282e-05
4300 | -1.41942e-05
4301 | -1.3962e-05
4302 | -1.37316e-05
4303 | -1.3503e-05
4304 | -1.32763e-05
4305 | -1.30514e-05
4306 | -1.28284e-05
4307 | -1.26072e-05
4308 | -1.23879e-05
4309 | -1.21704e-05
4310 | -1.19548e-05
4311 | -1.1741e-05
4312 | -1.15291e-05
4313 | -1.13191e-05
4314 | -1.11109e-05
4315 | -1.09046e-05
4316 | -1.07002e-05
4317 | -1.04977e-05
4318 | -1.02971e-05
4319 | -1.00984e-05
4320 | -9.90151e-06
4321 | -9.70656e-06
4322 | -9.5135e-06
4323 | -9.32235e-06
4324 | -9.13311e-06
4325 | -8.94577e-06
4326 | -8.76034e-06
4327 | -8.57682e-06
4328 | -8.39522e-06
4329 | -8.21554e-06
4330 | -8.03777e-06
4331 | -7.86193e-06
4332 | -7.68801e-06
4333 | -7.51602e-06
4334 | -7.34596e-06
4335 | -7.17783e-06
4336 | -7.01163e-06
4337 | -6.84737e-06
4338 | -6.68504e-06
4339 | -6.52465e-06
4340 | -6.3662e-06
4341 | -6.2097e-06
4342 | -6.05513e-06
4343 | -5.90251e-06
4344 | -5.75184e-06
4345 | -5.60312e-06
4346 | -5.45634e-06
4347 | -5.31152e-06
4348 | -5.16864e-06
4349 | -5.02772e-06
4350 | -4.88875e-06
4351 | -4.75174e-06
4352 | -4.61668e-06
4353 | -4.48357e-06
4354 | -4.35243e-06
4355 | -4.22324e-06
4356 | -4.09601e-06
4357 | -3.97073e-06
4358 | -3.84742e-06
4359 | -3.72606e-06
4360 | -3.60667e-06
4361 | -3.48923e-06
4362 | -3.37376e-06
4363 | -3.26025e-06
4364 | -3.14869e-06
4365 | -3.0391e-06
4366 | -2.93147e-06
4367 | -2.82579e-06
4368 | -2.72208e-06
4369 | -2.62033e-06
4370 | -2.52053e-06
4371 | -2.4227e-06
4372 | -2.32682e-06
4373 | -2.2329e-06
4374 | -2.14094e-06
4375 | -2.05093e-06
4376 | -1.96289e-06
4377 | -1.87679e-06
4378 | -1.79265e-06
4379 | -1.71046e-06
4380 | -1.63023e-06
4381 | -1.55195e-06
4382 | -1.47561e-06
4383 | -1.40123e-06
4384 | -1.32879e-06
4385 | -1.2583e-06
4386 | -1.18976e-06
4387 | -1.12315e-06
4388 | -1.05849e-06
4389 | -9.95773e-07
4390 | -9.34991e-07
4391 | -8.76146e-07
4392 | -8.19236e-07
4393 | -7.6426e-07
4394 | -7.11214e-07
4395 | -6.60098e-07
4396 | -6.1091e-07
4397 | -5.63646e-07
4398 | -5.18306e-07
4399 | -4.74886e-07
4400 | -4.33385e-07
4401 | -3.938e-07
4402 | -3.56129e-07
4403 | -3.20368e-07
4404 | -2.86517e-07
4405 | -2.54572e-07
4406 | -2.2453e-07
4407 | -1.96389e-07
4408 | -1.70145e-07
4409 | -1.45797e-07
4410 | -1.23341e-07
4411 | -1.02774e-07
4412 | -8.40932e-08
4413 | -6.72953e-08
4414 | -5.23773e-08
4415 | -3.93359e-08
4416 | -2.81679e-08
4417 | -2.81679e-08
4418 | 34
4419 |
4420 | shape_id 2
4421 | num_samples 4130
4422 | 0
4423 | 0
4424 | 98
4425 | 0.5
4426 | 0
4427 | 0
4428 | 996
4429 | -0.5
4430 | 0
4431 | 0
4432 | 1998
4433 | 0.5
4434 | 0
4435 | 0
4436 | 996
4437 | -0.5
4438 | 0
4439 | 0
4440 | 28
4441 |
4442 |
--------------------------------------------------------------------------------
/sar4seq/Q_mat_gen.m:
--------------------------------------------------------------------------------
1 | function Q= Q_mat_gen(SAR_type,model,qmat_write)
2 |
3 | %% Read the required data in
4 | % Author: Sairam Geethanath, Ph.D.
5 | % 01/2012
6 | % phantom data has e fields files named as_Ex while the VHM has _ex
7 | addpath(genpath('.'));
8 | close all;
9 |
10 |
11 | %% Load required EM model data
12 | Ex = model.Ex;
13 | Ey= model.Ey;
14 | Ez = model.Ez;
15 | Tissue_types = model.Tissue_types;
16 | SigmabyRhox = model.SigmabyRhox;
17 | Mass_cell = model.Mass_cell;
18 |
19 | % if(parpool('local') == 0)
20 | % parpool local 8;
21 | % end
22 |
23 | %%
24 | t0 = cputime;
25 | switch SAR_type
26 |
27 | case 'Global'
28 | clc;disp('SAR type: GLOBAL');
29 |
30 | %% Read from df files and check local computation, using index - whole body
31 | clc;disp('Q - Whole body calculation started ....');
32 | [Qavg_df,Tissue_types,SbRx,Mass_cell,Mass_body] = gen_Qpwr(Ex,Ey,Ez,Tissue_types,SigmabyRhox, Mass_cell,'global','wholebody');%SbR stands for SigmabyRho
33 | Qavg_tm = Qavg_df./Mass_body;
34 | figure(1);imagesc(abs((Qavg_tm)));colorbar;title('Implemented - Mass normalized BODY');
35 |
36 | %% Head
37 | disp('Q -Head calculation started ....');
38 | [Qavg_df,~,~,~,Mass_head] = gen_Qpwr(Ex,Ey,Ez,Tissue_types,SigmabyRhox, Mass_cell,'global','head');%SbR stands for SigmabyRho
39 | Qavg_hm = Qavg_df./Mass_head;
40 | figure(2);imagesc(abs(Qavg_hm));colorbar;title('Implemented - Mass normalized HEAD');
41 |
42 | %% Torso
43 | % disp('Q - torso calculation started ....');
44 | % [Qavg_df,~,~,~,Mass_torso] = gen_Q(dirname,'global','torso');%SbR stands for SigmabyRho
45 | % Qavg_tom = Qavg_df./Mass_torso;
46 | % figure(2);imagesc(abs(Qavg_tom));colorbar;title('Implemented - Mass normalized TORSO');
47 |
48 |
49 | %% Make structure for writing it to a file
50 | Q.Qtmf = Qavg_tm;
51 | Q.Qhmf = Qavg_hm;
52 | % Q.Qemf = Qavg_tom; %TODO have not implemented this at all, need to figure out
53 | if (qmat_write)
54 | [status] = write_qmat(Q,'Global');
55 | end
56 |
57 | case 'Local'
58 | disp('SAR type: LOCAL');
59 | [Qavg] = read_qmat('avgQMatrix');
60 | %%
61 | S = squeeze(Qavg.index(1:3,:));
62 |
63 | x =find(S(1,:)== 60);
64 | y =find(S(2,:)==49);
65 | z =find(S(3,:)==42);
66 |
67 | s = intersect(x,y);
68 | s = intersect(s,z);
69 |
70 | Qpt = squeeze(Qavg.avg(s,:,:));
71 | figure;imagesc(abs(Qpt));
72 |
73 | dirname = uigetdir('');
74 | disp('Starting calculation of local Q matrices.....');
75 | t0_local = cputime;
76 | [Qavg_df,Tissue_types,SbRx,Mass_cell,Mass_body] = gen_Qpwr(dirname,'local','wholebody');%SbR stands for SigmabyRho
77 | t1_local = cputime - t0_local;
78 | clc;disp(['Done calculating local Q-matrices in ',num2str(t1_local),' seconds']);
79 |
80 | Qpt_design = squeeze(Qavg_df(61,50,42,:,:));
81 | figure;imagesc(abs((Qpt_design)));
82 | figure;imagesc(abs(Qpt)./abs((Qpt_design)));
83 | figure;imagesc(abs(abs(Qpt) -abs((Qpt_design))));
84 | %%
85 | [RMSE_map, Qtri_map, Qimp_map,NRMSE_map] = get_RMSE(Qavg,Qavg_df,Mass_cell);
86 |
87 | %% Global Display of local Q
88 | figure;imshow(squeeze(Qtri_map(:,:,193)),'InitialMagnification',200);colorbar;colormap(jet);caxis([0 2]);
89 | figure;imshow(squeeze(Qimp_map(:,:,193)),'InitialMagnification',200);colorbar;colormap(jet);caxis([0 2]);
90 | diff_map = abs(Qtri_map - Qimp_map);
91 | figure;imshow(squeeze(diff_map(:,:,193)),'InitialMagnification',200);colorbar;colormap(jet);caxis([0 0.1])
92 |
93 | %% Save
94 | Qavg.imp= Qavg_df;
95 | if(qmat_write)
96 | save('LocalQ','Qavg','-v7.3');
97 | end
98 |
99 |
100 | end
101 | % parpool close;
102 | t1 = cputime - t0;
103 | disp(['Q matrices calculated in ',num2str(t1),' seconds']);
104 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/sar4seq/Qmat.mat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imr-framework/sar4seq/31575179ac940861b491978773c22d694fa79dbf/sar4seq/Qmat.mat
--------------------------------------------------------------------------------
/sar4seq/SAR4seq.m:
--------------------------------------------------------------------------------
1 | %% File details
2 | %
3 | % 1. Computes RF safety metrics for Pulseq sequences
4 | % a. For Pulseq sequences for deployment on Siemens scanners -
5 | % computes time averaged RF power for the sequence
6 | % b. For Pulseq sequences for deployment on GE scanners (via TOPPE) -
7 | % computes the whole body SAR in W/kg
8 | %
9 | %
10 | % Parameters
11 | % ----------
12 | % seq_path : Path to Pulseq sequence file - string
13 | % seq : Pulseq sequence object determining system parameters - seq
14 | % object
15 | % Sample_weight : weight of the sample being imaged - double
16 | %
17 | % Returns
18 | % -------
19 | % Time averaged RF power : double
20 | % Whole body SAR : double
21 | %
22 | %
23 | %
24 | % Copyright of the Board of Trustees of Columbia University in the City of New York
25 |
26 | function [RFwbg_tavg,RFhg_tavg,SARwbg_pred] = SAR4seq(seq_path,seq,Sample_weight)
27 |
28 | %% Paths
29 | addpath(genpath('/Users/sairamgeethanath/Documents/Columbia/Github-SG/pulseq-master/'));
30 | addpath(genpath('.'));
31 |
32 |
33 | if(nargin < 1)
34 | seq_path = './seq_files/180_tse500ms.seq';
35 | system = mr.opts('MaxGrad', 32, 'GradUnit', 'mT/m', ...
36 | 'MaxSlew', 130, 'SlewUnit', 'T/m/s', 'rfRingdownTime', 30e-6, ...
37 | 'rfDeadTime', 100e-6);
38 | seq=mr.Sequence(system);
39 | Sample_weight = 40;% kg
40 | elseif(nargin <2)
41 | system = mr.opts('MaxGrad', 32, 'GradUnit', 'mT/m', ...
42 | 'MaxSlew', 130, 'SlewUnit', 'T/m/s', 'rfRingdownTime', 30e-6, ...
43 | 'rfDeadTime', 100e-6);
44 | seq=mr.Sequence(system);
45 | Sample_weight = 10;% kg
46 | elseif(nargin <3)
47 | Sample_weight = 10;% kg
48 | end
49 |
50 |
51 | %% Constants
52 | SiemensB1fact = 1.32;%need to explore this further - B1+ factor
53 | GEB1fact = 1.1725;% need to explore this further - B1+ factor
54 |
55 | Wbody_weight = 103.45; %kg - from Visible Human Male
56 | Head_weight = 6.024; %kg - from Visible Human Male
57 |
58 | %% SAR limits
59 | SixMinThresh_wbg =4; %W/Kg
60 | TenSecThresh_wbg = 8;
61 |
62 | SixMinThresh_hg =3.2;%W/Kg
63 | TenSecThresh_hg = 6.4;
64 |
65 | if(~(exist('Qmat.mat','file')))
66 | %% Load relevant model - ONLY once per site if somebody needs to explore the Q matrix formulation
67 | dirname = uigetdir(''); %Load dir with files for EM model
68 | cdir = pwd;
69 | cd(dirname)
70 | load Ex.mat; model.Ex =Ex; clear Ex;
71 | load Ey.mat; model.Ey =Ey; clear Ey;
72 | load Ez.mat; model.Ez =Ez; clear Ez;
73 | load Tissue_types.mat; model.Tissue_types =Tissue_types; clear Tissue_types;
74 | load SigmabyRhox.mat; model.SigmabyRhox =SigmabyRhox; clear SigmabyRhox;
75 | load Mass_cell.mat; model.Mass_cell =Mass_cell; clear Mass_cell;
76 | cd(cdir)
77 |
78 | %% Compute and store Q matrices once- if not done already - per model - will write relevant qmat files
79 | tic;
80 | Q = Q_mat_gen('Global', model,0);
81 | save('Qmat.mat','Q');
82 | toc;
83 | else
84 | load('Qmat.mat','Q'); %Loads Q
85 | end
86 |
87 | %% Import a seq file to compute SAR for
88 | seq.read(seq_path); %Import the seq file you want to check; alternately you can perform the check in the sequence code.
89 |
90 | %% Identify RF blocks and compute SAR - 10 seconds must be less than twice and 6 minutes must be less than 4 (WB) and 3.2 (head-20)
91 | obj = seq;
92 | t_vec = zeros(1, length(obj.blockEvents));
93 | SARwbg_vec = zeros(size(t_vec));
94 | SARhg_vec =SARwbg_vec;
95 | t_prev=0;
96 |
97 | for iB=1:length(obj.blockEvents)
98 | block = obj.getBlock(iB);
99 | ev={block.rf, block.gx, block.gy, block.gz, block.adc, block.delay};
100 | ind=~cellfun(@isempty,ev);
101 | block_dur=mr.calcDuration(ev{ind});
102 | t_vec(iB) = t_prev + block_dur;
103 | t_prev = t_vec(iB);
104 |
105 | if ~isempty(block.rf)
106 | rf=block.rf;
107 | t=rf.t; signal = rf.signal;
108 | %Calculate SAR - Global: Wholebody, Head, Exposed Mass
109 | SARwbg_vec(iB) = calc_SAR(Q.Qtmf,signal,Wbody_weight); %This rf could be parallel transmit as well
110 | SARhg_vec(iB) = calc_SAR(Q.Qhmf,signal,Head_weight); %This rf could be parallel transmit as well
111 | % if((SARwbg_vec(iB) > 4) || (SAR_head > 3.2))
112 | % error('Pulse exceeding Global SAR limits');
113 | % end
114 | %% Incorporate time averaged SAR
115 | end
116 | end
117 |
118 | %% Filter out zeros in iB
119 | T_scan = t_vec(end); %find a better way to get to end of scan time
120 | idx = find(abs(SARwbg_vec) > 0);
121 | SARwbg_vec = squeeze(SARwbg_vec(idx));
122 | SARhg_vec = squeeze(SARhg_vec(idx));
123 |
124 |
125 | %% Time averaged RF power - match Siemens data
126 | RFwbg_tavg = sum(SARwbg_vec)./T_scan./SiemensB1fact;
127 | RFhg_tavg = sum(SARhg_vec)./T_scan./SiemensB1fact;
128 | disp(['Time averaged RF power-Siemens is - Body: ', num2str(RFwbg_tavg),'W & Head: ', num2str(RFhg_tavg), 'W']);
129 |
130 | SARwbg = max(SARwbg_vec); %W/kg but Siemens reports W/lb
131 | SARhg = max(SARhg_vec);
132 |
133 | Sample_head_weight = (Head_weight/Wbody_weight)*Sample_weight;
134 |
135 | SARwbg_predSiemens = SARwbg.* sqrt(Wbody_weight/Sample_weight)/2;
136 | SARhg_predSiemens = SARhg.* sqrt(Head_weight/Sample_head_weight)/2;
137 |
138 |
139 | % SARwbg_predSiemens = SARwbg_predSiemens/2.20462; %Siemens reports W/lb
140 | disp(['Predicted SAR-Siemens is - Body:', num2str(SARwbg_predSiemens), 'W/kg & Head: ',num2str(SARhg_predSiemens), 'W/kg'])
141 | %% SAR whole body - match GE data
142 | SARwbg_predGE = SARwbg.* sqrt(Wbody_weight/Sample_weight).*GEB1fact;
143 | disp(['Predicted SAR-GE is ', num2str(SARwbg_predGE), 'W/kg'])
144 |
145 | %% Check for each instant of the time averaged SAR with appropriate time limits
146 | if(sum(SARwbg_predGE > TenSecThresh_wbg))
147 | error('Pulse sequence exceeding 10 second Global SAR limits, increase TR');
148 | end
149 |
150 |
151 |
152 |
153 |
154 |
--------------------------------------------------------------------------------
/sar4seq/VOP_Qmatrices_v3.m:
--------------------------------------------------------------------------------
1 | %% This script describes the implementation of the VOP paper by Eichfelder based on the calculations of Q matrices -imp
2 | % clear all;
3 | if(matlabpool('size') == 0)
4 | matlabpool local 8;
5 | end
6 | Nc=8;
7 | %%
8 |
9 | [Filename,Pathname]=uigetfile('');
10 | load(fullfile(Pathname,Filename));
11 | Qavg_df = Qavg.imp;
12 | % matlabpool local 8;
13 | [M,N,P,~,~]=size(Qavg_df);
14 | Qavg_df = reshape(Qavg_df,[M*N*P,8,8]);
15 | clear Qavg;
16 |
17 | %% Reduce data size - verify
18 | S = abs(Qavg_df)>0;
19 | ind = find(squeeze(S(:,4,4)));
20 | Qinds = squeeze(Qavg_df(ind,:,:));
21 | Qind = Qinds; %Store Qind for later.
22 | obs_pts = length(ind);
23 | cluster=zeros(1,100); %preallocating for speed.- more than 100 clusters is not effecient
24 | % eph = cluster;
25 | normplot = cluster;
26 | vop_ind = cluster;
27 | %%
28 | vop_map = zeros(M*N*P,1);
29 | indr = 1:length(ind);
30 | figure;
31 | dbstop if error;
32 | VOPm = zeros(500,8,8);
33 | VOP=0;
34 |
35 |
36 | tic;
37 | while(obs_pts ~= 0)
38 | %% Selection of core matrix
39 | lenindr = length(indr);
40 | switch lenindr
41 | case length(ind)
42 | [Bstar,ind_sorta,vopin,myu_def] = get_coremat(Qind,indr);
43 | case 1
44 | disp('Done clustering for all obs pts');break;
45 | %TODO - if last point is a new cluster
46 | otherwise
47 | [Bstar,ind_sorta,vopin] = get_coremat(Qind,indr);
48 | end
49 | q=2;
50 | A = Bstar;
51 | %% Set-up problem to find Z*
52 | Z=zeros(8); %start with a init Z every time for a new cluster.
53 | cluster_done=0;
54 | obs_pts = obs_pts -1; %corresponding to A.
55 | while (cluster_done==0)
56 |
57 | % Spectral decomposition
58 | Q = A - squeeze(Qind(ind_sorta(q),:,:));
59 | [V,E] = eig(Q);
60 | Ep = E;
61 | Ep(Ep<0)=0;
62 | Em = Ep - E;
63 | Z_new = V*Em*V'; %Qm = V*E-*V';
64 | Z = Z + Z_new;
65 | myu_calc = norm(Z,2);
66 |
67 |
68 | if(myu_calc >=myu_def)
69 | %% end of current cluster
70 | cluster_done=1;
71 | VOP = VOP +1;
72 | VOPm(VOP,:,:) =A;
73 | cluster(VOP) = q-1;%this one broke it, so count upto previous one.
74 | % eph(VOP) = -min(eig(A - squeeze(Qind(ind_sorta(q-1),:,:))));
75 | normplot(VOP) = norm(Bstar);
76 | indr = squeeze(setdiff(indr,(squeeze(ind_sorta(1:q-1)))));
77 | obs_pts_check = sum(cluster) + length(indr);
78 | disp([VOP myu_calc obs_pts_check/1e4]);
79 |
80 | vop_ind(VOP) = ind(vopin);
81 | vop_map(ind(ind_sorta(1:q-1)))=normplot(VOP);
82 | S = reshape(vop_map,[M,N,P]);imagesc(abs(squeeze(S(:,45,:))));drawnow;
83 | else
84 | %% continue clustering
85 | if(q < length(ind_sorta))
86 | A = Bstar + Z;
87 | obs_pts = obs_pts -1;
88 | q = q+1; %for next Q matrix
89 | if(mod(q,1e4)==0)
90 | disp(q/1e4);
91 | end
92 | elseif(q==length(ind_sorta))
93 | disp('Reached end of clustering process');
94 | obs_pts = obs_pts -1;
95 | cluster_done=1;
96 | VOP = VOP +1;
97 | VOPm(VOP,:,:) =A;
98 | cluster(VOP) = q;%this is the last one, so here it ends.
99 | % eph(VOP) = -min(eig(A - squeeze(Qind(ind_sorta(q),:,:))));
100 | normplot(VOP) = norm(Bstar);
101 | vop_ind(VOP) = ind(vopin);
102 | vop_map(ind(ind_sorta(1:q-1)))=normplot(VOP);
103 | indr = squeeze(setdiff(indr,(squeeze(ind_sorta(1:q)))));
104 | obs_pts_check = sum(cluster) + length(indr);
105 | disp([VOP myu_calc obs_pts_check/1e4]);
106 | indr=0;
107 | break;
108 | end
109 | end
110 | end
111 | end
112 | toc;
113 | VOPm = squeeze(VOPm(1:VOP,:,:));
114 | normplot = squeeze(normplot(1:VOP));
115 | vop_ind = squeeze(vop_ind(1:VOP));
116 | matlabpool close;
117 | %% Prepare VOP for writing to scanner compatible format
118 | VOP_imp = zeros(M,N,P,8,8);
119 | for k=1:VOP
120 | [x,y,z] = ind2sub([M,N,P],vop_ind(k));
121 | VOP_imp(x,y,z,:,:) = squeeze(VOPm(k,:,:));
122 | end
123 |
124 | %% Plot norm of the VOPs - Figure 5 from Eichfelder
125 | figure;plot(1:size(VOPm,1),abs(normplot),'ko');
126 | xlabel('Index of VOP');ylabel('Spectral norm of VOP');
127 |
128 | % Also save myu_def
--------------------------------------------------------------------------------
/sar4seq/utils/SAR4seq_arxiv.m:
--------------------------------------------------------------------------------
1 | %% File details
2 |
3 |
4 | %% Paths
5 | addpath(genpath('/Users/sairamgeethanath/Documents/Columbia/Github-SG/pulseq-master/'));
6 | addpath(genpath('.'));
7 |
8 | SiemensB1fact = 1.5;%need to explore this further
9 | GEB1fact = 1.1725;% need to explore this further
10 |
11 | Wbody_weight = 103.45; %kg
12 | Head_weight = 6.024; %kg
13 | Sample_weight = 40;% kg
14 | %% SAR limits
15 | SixMinThresh_wbg =4; %W/Kg
16 | TenSecThresh_wbg = 8;
17 |
18 | SixMinThresh_hg =3.2;%W/Kg
19 | TenSecThresh_hg = 6.4;
20 | if(~exist('Q','var'))
21 | %% Load relevant model - ONLY once per test
22 | dirname = uigetdir(''); %Load dir with files for EM model
23 | cdir = pwd;
24 | cd(dirname)
25 | load Ex.mat; model.Ex =Ex; clear Ex;
26 | load Ey.mat; model.Ey =Ey; clear Ey;
27 | load Ez.mat; model.Ez =Ez; clear Ez;
28 | load Tissue_types.mat; model.Tissue_types =Tissue_types; clear Tissue_types;
29 | load SigmabyRhox.mat; model.SigmabyRhox =SigmabyRhox; clear SigmabyRhox;
30 | load Mass_cell.mat; model.Mass_cell =Mass_cell; clear Mass_cell;
31 | cd(cdir)
32 |
33 | %% Compute and store Q matrices once- if not done already - per model - will write relevant qmat files
34 | tic;
35 | Q = Q_mat_gen('Global', model,0);
36 | toc;
37 | end
38 | %% Import a seq file to compute SAR for
39 | system = mr.opts('MaxGrad', 32, 'GradUnit', 'mT/m', ...
40 | 'MaxSlew', 130, 'SlewUnit', 'T/m/s', 'rfRingdownTime', 30e-6, ...
41 | 'rfDeadTime', 100e-6);
42 | seq=mr.Sequence(system);
43 | seq.read('160_tse500ms.seq'); %Import the seq file you want to check; alternately you can perform the check in the sequence code.
44 |
45 | %% Identify RF blocks and compute SAR - 10 seconds must be less than twice and 6 minutes must be less than 4 (WB) and 3.2 (head-20)
46 | obj = seq;
47 | t_vec = zeros(1, length(obj.blockEvents));
48 | SARwbg_vec = zeros(size(t_vec));
49 | SARhg_vec =SARwbg_vec;
50 | t_prev=0;
51 |
52 | for iB=1:length(obj.blockEvents)
53 | block = obj.getBlock(iB);
54 | ev={block.rf, block.gx, block.gy, block.gz, block.adc, block.delay};
55 | ind=~cellfun(@isempty,ev);
56 | block_dur=mr.calcDuration(ev{ind});
57 | t_vec(iB) = t_prev + block_dur;
58 | t_prev = t_vec(iB);
59 |
60 | if ~isempty(block.rf)
61 | rf=block.rf;
62 | t=rf.t; signal = rf.signal;
63 | %Calculate SAR - Global: Wholebody, Head, Exposed Mass
64 | SARwbg_vec(iB) = calc_SAR(Q.Qtmf,signal,Wbody_weight); %This rf could be parallel transmit as well
65 | SARhg_vec(iB) = calc_SAR(Q.Qhmf,signal,Head_weight); %This rf could be parallel transmit as well
66 | % if((SARwbg_vec(iB) > 4) || (SAR_head > 3.2))
67 | % error('Pulse exceeding Global SAR limits');
68 | % end
69 | %% Incorporate time averaged SAR
70 | end
71 | end
72 |
73 | %% Filter out zeros in iB
74 | T_scan = t_vec(end); %find a better way to get to end of scan time
75 | idx = find(abs(SARwbg_vec) > 0);
76 | SARwbg_vec = squeeze(SARwbg_vec(idx));
77 | SARhg_vec = squeeze(SARhg_vec(idx));
78 | t_vec = squeeze(t_vec(idx));
79 |
80 |
81 | %% Time averaged RF power - match Siemens data
82 | RFwbg_tavg = sum(SARwbg_vec)./T_scan./SiemensB1fact;
83 | RFhg_tavg = sum(SARhg_vec)./T_scan./SiemensB1fact;
84 | disp(['Time averaged RF power for Siemens is - Body: ', num2str(RFwbg_tavg),'W Head: ', num2str(RFhg_tavg), 'W']);
85 |
86 |
87 |
88 | %% SAR whole body - match GE data
89 | SARwbg = max(SARwbg_vec);
90 | SARwbg_pred = SARwbg.* sqrt(Wbody_weight/Sample_weight).*GEB1fact;
91 | disp(['Predicted SAR-GE is ', num2str(SARwbg_pred), 'W/kg'])
92 |
93 |
94 |
95 |
96 |
97 | % %% Interpolate SAR - Pictorial representation only
98 | % tsec = 1:t_vec(end);
99 | % [SARwbg_lim_s] = interp1(t_vec, SARwbg_vec, tsec,'spline'); %< 2 SARmax
100 | % [SARhg_lim_s] = interp1(t_vec, SARhg_vec, tsec,'spline'); %< 2 SARmax
101 | %
102 | % figure(101); plot(t_vec, SARwbg_vec); hold on;
103 | % SARwbg_lim_s(SARwbg_lim_s < 0) = 0;
104 | % SARhg_lim_s(SARhg_lim_s < 0) = 0;
105 | %
106 | % plot(tsec, SARwbg_lim_s); hold on;
107 | % plot(tsec, SARhg_lim_s); hold on;
108 | % legend('Whole body', 'Head only');
109 | % %% Calculate time averaged SAR 1 -N, better to do -N/2 to N/2
110 | % SAR_wbg_tensec = do_sw_sar(SARwbg_lim_s,tsec, 10);%< 2 SARmax
111 | % SAR_wbg_sixmin = do_sw_sar(SARwbg_lim_s,tsec, 600);
112 | %
113 | % SAR_hg_tensec = do_sw_sar(SARhg_lim_s,tsec, 10);%< 2 SARmax
114 | % SAR_hg_sixmin = do_sw_sar(SARhg_lim_s,tsec, 600);
115 | %
116 | % figure(102);
117 | % plot(tsec, SAR_wbg_tensec); hold on;
118 | % plot(tsec, SAR_hg_tensec); hold on;
119 | % legend('Whole body', 'Head only');
120 | %
121 | % %% Check for each instant of the time averaged SAR with appropriate time limits
122 | % if(sum(SAR_wbg_tensec > TenSecThresh_wbg)|| sum(SAR_hg_tensec > TenSecThresh_hg))
123 | % error('Pulse exceeding 10 second Global SAR limits, increase TR');
124 | % end
125 | %
126 | % if(sum(SAR_hg_sixmin > SixMinThresh_wbg)|| sum(SAR_hg_sixmin > SixMinThresh_hg))
127 | % error('Pulse exceeding 10 second Global SAR limits, increase TR');
128 | % end
129 | %
130 | %
131 | %
132 |
133 |
134 |
135 |
--------------------------------------------------------------------------------
/sar4seq/utils/calc_SAR.m:
--------------------------------------------------------------------------------
1 | function [SAR] = calc_SAR(Q,I,weight)
2 | %% I has Nc rows and Nt columns
3 | % Ifact = zeros(size(I,1));
4 |
5 | % for nc = 1:size(I,1)
6 | % for nc2 = 1:size(I,1)
7 | % Ifact(nc, nc2) = I(nc,:)'.*I(nc2,:)./size(I,2);
8 | % end
9 | % end
10 |
11 | Iexp = conj(I).*I; %this is assuming only 1 channel at the moment
12 | Iexp = sum(Iexp(:))./length(Iexp);
13 | Ifact = Iexp;
14 |
15 | % if(size(Q,1) > 1)
16 | % ph = 0:2*pi/size(Q,1):(size(Q,1)-1)*(pi/4);
17 | % tx_ph = exp(1i*ph).';
18 | % tx_ph = repmat(tx_ph, [1 size(I,1)]);
19 | % I = repmat((I).', [size(Q,1), 1]);
20 | % I = I.*tx_ph;
21 | % end
22 |
23 |
24 |
25 | if(ndims(Q) > 2)
26 | SAR_temp = zeros(size(Q));
27 | SAR_norm = zeros(size(Q,1));
28 | for k=1:size(Q,1)
29 | Qtemp = squeeze(Q(k,:,:));
30 | SAR_temp(k,:,:) = Qtemp.*Ifact;
31 | SAR_norm(k) = norm(squeeze(SAR_temp(k,:,:)));
32 | end
33 | [~,ind] = max(SAR_norm);
34 | SAR_chosen = SAR_temp(ind,:,:);
35 | SAR = abs(sum(SAR_chosen(:)));
36 | else
37 | SAR_temp = Q.*Ifact;
38 | SAR = abs(sum(SAR_temp(:)));
39 | SAR = SAR./weight;
40 | end
--------------------------------------------------------------------------------
/sar4seq/utils/chkcubair_global.m:
--------------------------------------------------------------------------------
1 | function chk = chkcubair_global(dim,Mass_cell,Mass_air,x,y,z)
2 | %% Check if cube's face is in air
3 |
4 | xface0 = squeeze(Mass_cell(x-dim,y-dim:y+dim,z-dim:z+dim));
5 | yface0 = squeeze(Mass_cell(x-dim:x+dim,y-dim,z-dim:z+dim));
6 | zface0 = squeeze(Mass_cell(x-dim:x+dim,y-dim:y+dim,z-dim));
7 |
8 |
9 | xface1 = squeeze(Mass_cell(x+dim,y-dim:y+dim,z-dim:z+dim));
10 | yface1 = squeeze(Mass_cell(x-dim:x+dim,y+dim,z-dim:z+dim));
11 | zface1 = squeeze(Mass_cell(x-dim:x+dim,y-dim:y+dim,z+dim));
12 |
13 | chk=1;
14 |
15 |
16 |
17 | if((max(xface0(:)) <= Mass_air)||(max(yface0(:)) <= Mass_air)||(max(zface0(:)) <= Mass_air) ||...
18 | (max(xface1(:)) <= Mass_air)||(max(yface1(:)) <= Mass_air)||(max(zface1(:)) <= Mass_air))
19 | chk=0;
20 | % disp('Invalid cell to calculate SAR');
21 | end
22 |
23 |
--------------------------------------------------------------------------------
/sar4seq/utils/do_sw_sar.m:
--------------------------------------------------------------------------------
1 | function SAR_timeavg = do_sw_sar(SARwbg_lim_s, tsec,t)
2 |
3 | SAR_timeavg = zeros(1, length(tsec));
4 | for instant=1:(tsec(end) - t) %better to go from -sw/2:sw/2
5 | SAR_timeavg(instant) = sum(SARwbg_lim_s(instant:instant+t-1))./t;
6 | end
7 |
8 |
--------------------------------------------------------------------------------
/sar4seq/utils/gen_E12ptQ.m:
--------------------------------------------------------------------------------
1 | function Epwr = gen_E12ptQ(Ex,Ey,Ez,X,SigmabyRhox)
2 | SigmabyRhoy=SigmabyRhox;
3 | SigmabyRhoz=SigmabyRhox;
4 | dbstop if error;
5 | %% Get co-ordinates
6 | if(numel(X)==1)
7 | M = size(Ex,1);
8 | N = size(Ex,2);
9 | P = size(Ex,3);
10 | [x,y,z]=ind2sub([M,N,P],X);
11 | X = [x;y;z];
12 | else
13 | x=X(1);
14 | y=X(2);
15 | z=X(3);
16 | end
17 |
18 | %% Define co-ordinates of the 12-point cube formulation
19 | X1 = [x,y+1,z];
20 | X2 = [x,y,z+1];
21 | X3 = [x,y+1,z+1];
22 |
23 | %%
24 | Y1 = [x+1,y,z];
25 | Y2 = [x,y,z+1];
26 | Y3 = [x+1,y,z+1];
27 |
28 | %%
29 | Z1 = [x+1,y,z];
30 | Z2 = [x,y+1,z];
31 | Z3 = [x+1,y+1,z];
32 |
33 | %%
34 | Ex1 = get_E(squeeze(Ex(X(1),X(2),X(3),:)),squeeze(SigmabyRhox(X(1),X(2),X(3))));
35 | Ey1 = get_E(squeeze(Ey(X(1),X(2),X(3),:)),squeeze(SigmabyRhoy(X(1),X(2),X(3))));
36 | Ez1 = get_E(squeeze(Ez(X(1),X(2),X(3),:)),squeeze(SigmabyRhoz(X(1),X(2),X(3))));
37 |
38 | Expwr = Ex1 + get_E(squeeze(Ex(X1(1),X1(2),X1(3),:)),squeeze(SigmabyRhox(X1(1),X1(2),X1(3)))) + get_E(squeeze(Ex(X2(1),X2(2),X2(3),:)),squeeze(SigmabyRhox(X2(1),X2(2),X2(3)))) + get_E(squeeze(Ex(X3(1),X3(2),X3(3),:)),squeeze(SigmabyRhox(X3(1),X3(2),X3(3))));
39 | Eypwr = Ey1 + get_E(squeeze(Ey(Y1(1),Y1(2),Y1(3),:)),squeeze(SigmabyRhoy(Y1(1),Y1(2),Y1(3)))) + get_E(squeeze(Ey(Y2(1),Y2(2),Y2(3),:)),squeeze(SigmabyRhoy(Y2(1),Y2(2),Y2(3)))) + get_E(squeeze(Ey(Y3(1),Y3(2),Y3(3),:)),squeeze(SigmabyRhoy(Y3(1),Y3(2),Y3(3))));
40 | Ezpwr = Ez1 + get_E(squeeze(Ez(Z1(1),Z1(2),Z1(3),:)),squeeze(SigmabyRhoz(Z1(1),Z1(2),Z1(3)))) + get_E(squeeze(Ez(Z2(1),Z2(2),Z2(3),:)),squeeze(SigmabyRhoz(Z2(1),Z2(2),Z2(3)))) + get_E(squeeze(Ez(Z3(1),Z3(2),Z3(3),:)),squeeze(SigmabyRhoz(Z3(1),Z3(2),Z3(3))));
41 | Epwr =0.125.*(Expwr + Eypwr + Ezpwr); %actually 0.25 but 0.25/2*Rho not captured by the SigmabyRho matrix
42 |
43 |
44 | function Epwr =get_E(E,SigmabyRho)
45 | Epwr = SigmabyRho.*(E*E');
46 |
--------------------------------------------------------------------------------
/sar4seq/utils/gen_Qpwr.m:
--------------------------------------------------------------------------------
1 | function [Qpwr_df, Tissue_types,SigmabyRhox,Mass_cell,Mass_corr,Qpwr2] = gen_Qpwr(Ex,Ey,Ez,Tissue_types,SigmabyRhox, Mass_cell,SAR_type,anatomy)
2 | %% Read input df files and generate Q matrices based on them
3 | % [Ex, Ey, Ez, Tissue_types,SigmabyRhox,Mass_cell] = get_EMmodel(dirname);
4 |
5 | D = size(Tissue_types);
6 | Mass_corr=0;
7 | Mass_air = 1.625e-7 + 1e-9;
8 |
9 | switch SAR_type
10 |
11 | case 'global'
12 | %% Based on BodySegmentation.df
13 | switch anatomy
14 | case 'wholebody'
15 | R = find(Tissue_types>0);
16 | [X,Y,Z]=ind2sub(size(Tissue_types),R);
17 |
18 | case 'head'
19 | R = find(Tissue_types==1);
20 | [X,Y,Z]=ind2sub(size(Tissue_types),R);
21 |
22 | case 'torso'
23 | R = find(Tissue_types==2);
24 | [X,Y,Z]=ind2sub(size(Tissue_types),R);
25 |
26 | case 'extremities'
27 | % TODO
28 | end
29 |
30 | Qpwr =0;Mass_corr =0;
31 |
32 | disp('Performing global Q calculations....');
33 | dim =2;
34 | t0_gQ = cputime;
35 | for r =1:length(X)
36 | Cr = [X(r),Y(r),Z(r)];
37 | M = Mass_cell(X(r),Y(r),Z(r));
38 |
39 | chk = chkcubair_global(dim,Mass_cell,Mass_air,X(r),Y(r),Z(r));
40 |
41 | if((M > Mass_air) && (chk==1))
42 | Qpwr = Qpwr + (M.*(gen_E12ptQ(Ex,Ey,Ez,Cr,SigmabyRhox)));
43 | Mass_corr = Mass_corr + M;
44 | if(mod(r,1000)==0)
45 | disp (r);
46 | % figure(101); imagesc(abs(Qpwr)); pause(0.1);
47 | end
48 |
49 | end
50 | end
51 | t1_gQ = cputime - t0_gQ;
52 | disp(['Global Q matrices calculated in ',num2str(t1_gQ),' seconds']);
53 | disp (r);
54 | Qpwr_df = Qpwr;
55 | clear Qpwr;
56 |
57 | case 'local'
58 | %% Prepare for parfor
59 | M= D(1);
60 | N= D(2);
61 | P = D(3);
62 |
63 |
64 | disp('Preparing for parfor loop... making indices');
65 | %% Store indices only which have mass > air, try to make this smarter
66 | ind = Mass_cell > Mass_air;
67 | [ms]=find(ind);
68 | disp('Calculating Qpwr now');
69 | Qpwr = zeros(length(ms),8,8); %Remove hardcoding for coils later
70 |
71 | t0_lQ =cputime;
72 |
73 | parfor k=1:length(ms)
74 | [m,n,p]=ind2sub(D,ms(k));
75 | Qpwr(k,:,:) = gen_E12ptQ(Ex,Ey,Ez, [m,n,p],SigmabyRhox);
76 | end
77 |
78 | disp('Creating the 5D Qpwr matrix...');
79 | Qpwr2 = zeros(M*N*P,8,8);
80 | Qpwr2(ms,:,:) = squeeze(Qpwr(1:end,:,:));
81 | Qpwr2 = reshape(Qpwr2,[M,N,P,8,8]);
82 |
83 |
84 | t1_lQ = cputime - t0_lQ;
85 | disp(['Local Q matrices calculated in ',num2str(t1_lQ),' seconds']);
86 |
87 | % clear Ex Ey Ez Tissue_types SigmabyRhox SAR_type Mass_corr anatomy Qpwr t0_df t1_df t0_lQ t1_lQ;
88 | disp('Cleared variables to make space....');
89 |
90 |
91 |
92 |
93 | %% Average Q over 10g volumes.
94 | disp('Calculating Mass-averaged local Q matrices...');
95 | Mdef =0.01; %kg for IEC required mass per an arbitrary volume V
96 | [Qpwr_df] = squeeze(get_Qavg(Mass_cell,Mdef,Qpwr2,ms));
97 |
98 |
99 |
100 | end
101 |
102 |
103 |
104 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/sar4seq/utils/get_EMmodel.m:
--------------------------------------------------------------------------------
1 | function [Ex, Ey, Ez, Tissue_types,SigmabyRhox,Mass_cell] = get_EMmodel(dirname)
2 |
3 | %% Currently for ICL data but this file can be replaced to read mat files
4 |
5 |
6 | disp('Reading deadface files...');
7 | t0_df = cputime;
8 | % Air_seg = df_read(fullfile(dirname,'airSeg.df')); %Tissue density
9 | Tissue_types= df_read(fullfile(dirname,'BodySegmentation.df')); %Tissue density
10 | S = df_read(fullfile(dirname,'material.df'));
11 | % D = size(Tissue_types);
12 | SigmabyRhox = real(S);
13 | Mass_cell =imag(S);
14 | % Mass_corr=0;
15 | % Mass_air = 1.625e-7 + 1e-9;
16 | clear S S2;
17 |
18 | Ex = zeros([size(SigmabyRhox),8]); %dir, vector, tx channels
19 | Ey=Ex;
20 | Ez=Ex;
21 |
22 |
23 |
24 | %% Lot of hardcoding for now, make it better later
25 |
26 | parfor k=1:8 %num_channels
27 | Ex(:,:,:,k) = df_read(fullfile(dirname,['multix_coil',num2str(k),'_ex.df']));
28 | Ey(:,:,:,k) = df_read(fullfile(dirname,['multix_coil',num2str(k),'_ey.df']));
29 | Ez(:,:,:,k) = df_read(fullfile(dirname,['multix_coil',num2str(k),'_ez.df']));
30 | end
31 |
32 | clear k dirname;
33 | fclose('all');
34 | t1_df = cputime - t0_df;
35 | disp(['Deadface files read in ',num2str(t1_df),' seconds']);
36 |
--------------------------------------------------------------------------------
/sar4seq/utils/get_coremat.m:
--------------------------------------------------------------------------------
1 | function [Bstar,ind_sort,vop_ind,myu_def] = get_coremat(Qinds,ind)
2 | %% Implementation of steps 1 and 2 from the VOP paper
3 | % Step 1 - Identify B*
4 | % Step 2 - Sort matrices
5 | myu_per =0.01; %change back to 0.05
6 |
7 | %% Size of Q changes on every iteration.
8 | B = zeros(1,length(ind));
9 | Lambdamin = B;
10 | Qind = squeeze(Qinds(ind,:,:));
11 |
12 | %% Identify Bstar Cant use pair-wise to use parforloop
13 | parfor k=1:length(B)
14 | Qtemp = squeeze(Qind(k,:,:));
15 | B(k) = norm(Qtemp,2);
16 | end
17 | [maxB,maxk] = max(B(:));
18 | vop_ind = ind(maxk);
19 | myu_def = myu_per* maxB;
20 | Bstar = squeeze(Qind((maxk),:,:));
21 |
22 | %% Generate diff matrices, try to make this part smarter
23 | parfor k=1:length(B)
24 | Qtemp = Bstar - squeeze(Qind(k,:,:));
25 | Lambdamin(k) = min(eig(Qtemp));
26 | end
27 | [~,ind_sort]=sort(Lambdamin,'descend');
28 | ind_sort = ind(ind_sort);
29 |
30 |
--------------------------------------------------------------------------------
/sar4seq/utils/read_qmat.m:
--------------------------------------------------------------------------------
1 | function [Q] = read_qmat(fname)
2 |
3 | %% Read global matrix
4 | % fid = fopen('globalQMatrix.tri','r','l');
5 | fname1 = [fname,'.qmat'];
6 | fid = fopen(fname1,'r','l');
7 | header = fread(fid,'uint32');
8 | header = squeeze(header(1:3));
9 | fclose(fid);
10 |
11 | fid = fopen(fname1,'r','l');
12 | data = fread(fid,'float');
13 | data = squeeze(data(4:end));
14 | fclose(fid);
15 |
16 |
17 | %% Header goes - NrofCoils, NrofCoil, NrofCells (4 x3 =12)
18 | % NrofCoils = data1(1);
19 | NrofCoils = header(2);
20 | NrofCells = header(3);
21 | disp('Reading Q matrices....');
22 | switch NrofCells
23 |
24 | case 3 %Global SAR q-matrices.
25 | %% Exploit hardcoding here because these matrix sizes will not change
26 | R = data(1:2:end);
27 | I = data(2:2:end);
28 |
29 | Qavg = complex(R,I);
30 |
31 | %presence of only three cells.
32 | Qtm = Qavg(1:(end/3));%Qtotalmass (i.e. corresponding to 104.874706 kgs)
33 | Qhm = Qavg((end/3)+1:(2*end/3));%Qheadmass (i.e. corresponding to 6.503450 kgs)
34 | Qem = Qavg((2*end/3)+1:(end));%Qexposedmass (i.e. corresponding to 36.666021 kgs)
35 |
36 |
37 | %% Put them as upper triangular matrices.
38 | Qtmfu = triu(ones(NrofCoils),0);
39 | Qtmfu(Qtmfu==1) = Qtm;
40 | Qtmf = (triu(Qtmfu,1))' + Qtmfu; %adding upper and lower matrices to form the full matrix, Hermetian.
41 |
42 | Qhmfu = triu(ones(NrofCoils),0);
43 | Qhmfu(Qhmfu==1) = Qhm;
44 | Qhmf = (triu(Qhmfu,1))' + Qhmfu;
45 |
46 | Qemfu = triu(ones(NrofCoils),0);
47 | Qemfu(Qemfu==1) = Qem;
48 | Qemf = (triu(Qemfu,1))' + Qemfu;
49 |
50 | Q.Qtmf = Qtmf;
51 | Q.Qhmf = Qhmf;
52 | Q.Qemf = Qemf;
53 |
54 |
55 |
56 |
57 |
58 | otherwise
59 |
60 |
61 |
62 |
63 |
64 |
65 | %% Read associated index file - better to have 2 seperate matrices
66 | % than one big one.
67 | disp('Reading index file now....');
68 | fname = [fname,'.index'];
69 | fid = fopen(fname,'r','l');
70 | data_ind = fread(fid,'uint32');
71 | data_ind = squeeze(data_ind(1:4));
72 | fclose(fid);
73 |
74 | dimx = data_ind(1);
75 | dimy =data_ind(2);
76 | dimz = data_ind(3);
77 | NrOfSarCells = data_ind(4);
78 | % NrOfSarCells = (length(data_ind)-8)/4;
79 |
80 | fid = fopen(fname,'r','l');
81 | data_ind = fread(fid,'uint16');
82 | fclose(fid);
83 |
84 |
85 | index = zeros(4,NrOfSarCells);
86 | index(1,:) = data_ind(9:4:end); %x
87 | index(2,:) = data_ind(10:4:end); %y
88 | index(3,:) = data_ind(11:4:end); %z
89 | index(4,:) = data_ind(12:4:end); %label
90 |
91 |
92 |
93 |
94 | R = data(1:2:end);
95 | I = data(2:2:end);
96 | NrofCells= NrOfSarCells;
97 | %% Make ind NrofCells based on header and read 36 values into each.
98 | Qstore = reshape(complex(R,I),[36,NrOfSarCells]);
99 | clear R I data header fname1 fid;
100 | Qavg = zeros(NrofCells,NrofCoils,NrofCoils);
101 |
102 | parfor k=1:NrofCells
103 |
104 | Qtm = squeeze(Qstore(:,k));
105 |
106 | %% Put them as upper triangular matrices.
107 | Qtmfu = triu(ones(NrofCoils),0);
108 | Qtmfu(Qtmfu==1) = Qtm;
109 | Qavg(k,:,:) = (triu(Qtmfu,1))' + Qtmfu; %adding upper and lower matrices to form the full matrix, Hermetian.
110 |
111 | end
112 |
113 | %% Create output structure with details.
114 | Q.avg = Qavg;
115 | Q.index= index;
116 | Q.dimx = dimx;
117 | Q.dimy = dimy;
118 | Q.dimz = dimz;
119 | Q. NrOfSarCells = NrOfSarCells;
120 |
121 | disp('Done reading index files and creating Q structure....');
122 |
123 | % Clean up the function local variables anyway
124 | clear Qavg index Qstore dimx dimy dimz NrOfSarCells data fid fname NrofCoils NrofCells;
125 |
126 |
127 |
128 |
129 | end
130 |
--------------------------------------------------------------------------------
/sar4seq/utils/write_qmat.m:
--------------------------------------------------------------------------------
1 | function [status] = write_qmat(Q,SAR_type,Tissue_types)
2 |
3 | switch SAR_type
4 |
5 | case 'Global'
6 | [filename, pathname] = uiputfile('global.qmat', 'Save global Q matrix as');
7 | fid = fopen(fullfile(pathname,filename),'w+','l');
8 |
9 | %% Write header information in uint16
10 | NrofCoils = size(Q.Qtmf,1); %8
11 | NrofSarCells = 3; %body, head and exposed.
12 |
13 | fwrite(fid,NrofCoils,'uint32');
14 | fwrite(fid,NrofCoils,'uint32');
15 | fwrite(fid,NrofSarCells,'uint32');
16 |
17 |
18 | %% Write Q matrices in the order of body, head and exposed
19 | write_uppertri(Q.Qtmf,fid);
20 | write_uppertri(Q.Qhmf,fid);
21 | % write_uppertri(Q.Qemf,fid);
22 | status=0;
23 | fclose all;
24 |
25 |
26 |
27 | case 'Local'
28 | [tri_filename, tri_pathname] = uiputfile('Local.qmat', 'Save local Q matrix as');
29 | tri_fid = fopen(fullfile(tri_pathname,tri_filename),'w+','l');
30 |
31 | [index_filename, index_pathname] = uiputfile('Local.index', 'Save local Q matrix indices as');
32 | index_fid = fopen(fullfile(index_pathname,index_filename),'w+','l');
33 |
34 | %% Write header information in uint16
35 | Qavg = Q;clear Q;
36 | [M,N,P,~,NrofCoils]=size(Qavg);
37 | Qavg = reshape(Qavg,[M*N*P,NrofCoils,NrofCoils]);
38 | S = Qavg>0;
39 | ind = find(squeeze(S(:,4,4)));
40 | NrofSarCells = length(ind);
41 |
42 |
43 | fwrite(tri_fid,NrofCoils,'uint32');
44 | fwrite(tri_fid,NrofCoils,'uint32');
45 | fwrite(tri_fid,NrofSarCells,'uint32');
46 |
47 | fwrite(index_fid,M,'uint32');
48 | fwrite(index_fid,N,'uint32');
49 | fwrite(index_fid,P,'uint32');
50 | fwrite(index_fid,NrofSarCells,'uint32');
51 |
52 | for k=1:length(ind)
53 | [x,y,z]=ind2sub([M,N,P],ind(k));
54 | label = Tissue_types(x,y,z);
55 | write_uppertri(squeeze(Qavg(ind(k),:,:)),tri_fid);
56 | fwrite(index_fid,x-1,'uint16'); %compensate for the indexing in C
57 | fwrite(index_fid,y-1,'uint16');
58 | fwrite(index_fid,z-1,'uint16');
59 | fwrite(index_fid,label,'uint16');
60 | end
61 |
62 |
63 | status=0;
64 | end
65 |
66 | function write_uppertri(Qin,fid)
67 | Q = triu(Qin);
68 | Q_tri = Q(abs(Q)>0);
69 | % if(length(Q_tri)~=36)
70 | % error('Missing values in this matrix for 8 coils');
71 | % end
72 | for k=1:length(Q_tri)
73 | fwrite(fid,real(Q_tri(k)),'float');
74 | fwrite(fid,imag(Q_tri(k)),'float');
75 | end
76 |
77 |
78 |
--------------------------------------------------------------------------------
/sar4seq/writeTSE_500ms.m:
--------------------------------------------------------------------------------
1 | %% Create a TSE sequence and export for execution
2 | %
3 | % The |Sequence| class provides functionality to create magnetic
4 | % resonance sequences (MRI or NMR) from basic building blocks.
5 | %
6 | % This provides an implementation of the open file format for MR sequences
7 | % described here: http://pulseq.github.io/specification.pdf
8 | %
9 | % This example performs the following steps:
10 | %
11 | % # Create slice selective RF pulse for imaging.
12 | % # Create readout gradient and phase encode strategy.
13 | % # Loop through phase encoding and generate sequence blocks.
14 | % # Write the sequence to an open file format suitable for execution on a
15 | % scanner.
16 | %
17 | % Juergen Hennig
18 | % Maxim Zaitsev
19 |
20 |
21 | %% Instantiation and gradient limits
22 | % The system gradient limits can be specified in various units _mT/m_,
23 | % _Hz/cm_, or _Hz/m_. However the limits will be stored internally in units
24 | % of _Hz/m_ for amplitude and _Hz/m/s_ for slew. Unspecificied hardware
25 | % parameters will be assigned default values.
26 |
27 | dG=250e-6;
28 | system = mr.opts('MaxGrad', 30, 'GradUnit', 'mT/m', ...
29 | 'MaxSlew', 170, 'SlewUnit', 'T/m/s', 'rfRingdownTime', 100e-6, ...
30 | 'rfDeadTime', 100e-6, 'adcDeadTime', 10e-6);
31 |
32 | %%
33 | % A new sequence object is created by calling the class constructor.
34 | seq=mr.Sequence(system);
35 |
36 |
37 | %% Sequence events
38 | % Some sequence parameters are defined using standard MATLAB variables
39 | fov=256e-3;
40 | Nx=128; Ny=128; necho=16; Nslices=1;
41 |
42 |
43 | rflip=120;
44 |
45 |
46 |
47 | if (numel(rflip)==1), rflip=rflip+zeros([1 necho]); end
48 | sliceThickness=5e-3;
49 | TE=12e-3; TR=500e-3;
50 | TEeff=60e-3;
51 | k0=round(TEeff/TE);
52 | PEtype='linear';
53 |
54 | readoutTime = 6.4e-3 + 2*system.adcDeadTime;
55 | tEx=2.5e-3;
56 | tExwd=tEx+system.rfRingdownTime+system.rfDeadTime;
57 | tRef=2e-3;
58 | tRefwd=tRef+system.rfRingdownTime+system.rfDeadTime;
59 | tSp=0.5*(TE-readoutTime-tRefwd);
60 | tSpex=0.5*(TE-tExwd-tRefwd);
61 | fspR=1.0;
62 | fspS=0.5;
63 |
64 | rfex_phase=pi/2; % MZ: we need to maintain these as variables because we will overwrtite phase offsets for multiple slice positions
65 | rfref_phase=0;
66 |
67 | %%
68 | %%% Base gradients
69 | %%% Slice selection
70 | % Key concepts in the sequence description are *blocks* and *events*.
71 | % Blocks describe a group of events that are executed simultaneously. This
72 | % hierarchical structure means that one event can be used in multiple
73 | % blocks, a common occurrence in MR sequences, particularly in imaging
74 | % sequences.
75 | %
76 | % First, the slice selective RF pulses (and corresponding slice gradient)
77 | % are generated using the |makeSincPulse| function.
78 | % Gradients are recalculated such that their flattime covers the pulse plus
79 | % the rfdead- and rfringdown- times.
80 | %
81 | flipex=90*pi/180;
82 | [rfex, gz] = mr.makeSincPulse(flipex,system,'Duration',tEx,...
83 | 'SliceThickness',sliceThickness,'apodization',0.5,'timeBwProduct',4,'PhaseOffset',rfex_phase);
84 | GSex = mr.makeTrapezoid('z',system,'amplitude',gz.amplitude,'FlatTime',tExwd,'riseTime',dG);
85 | % plotPulse(rfex,GSex);
86 |
87 | flipref=rflip(1)*pi/180;
88 | [rfref, gz] = mr.makeSincPulse(flipref,system,'Duration',tRef,...
89 | 'SliceThickness',sliceThickness,'apodization',0.5,'timeBwProduct',4,'PhaseOffset',rfref_phase,'use','refocusing');
90 | GSref = mr.makeTrapezoid('z',system,'amplitude',GSex.amplitude,'FlatTime',tRefwd,'riseTime',dG);
91 | % plotPulse(rfref,GSref);
92 |
93 | AGSex=GSex.area/2;
94 | GSspr = mr.makeTrapezoid('z',system,'area',AGSex*(1+fspS),'duration',tSp,'riseTime',dG);
95 | GSspex = mr.makeTrapezoid('z',system,'area',AGSex*fspS,'duration',tSpex,'riseTime',dG);
96 |
97 | %%
98 | %%% Readout gradient
99 | % To define the remaining encoding gradients we need to calculate the
100 | % $k$-space sampling. The Fourier relationship
101 | %
102 | % $$\Delta k = \frac{1}{FOV}$$
103 | %
104 | % Therefore the area of the readout gradient is $n\Delta k$.
105 | deltak=1/fov;
106 | kWidth = Nx*deltak;
107 |
108 | GRacq = mr.makeTrapezoid('x',system,'FlatArea',kWidth,'FlatTime',readoutTime,'riseTime',dG);
109 | adc = mr.makeAdc(Nx,'Duration',GRacq.flatTime-40e-6, 'Delay', 20e-6);%,'Delay',GRacq.riseTime);
110 | GRspr = mr.makeTrapezoid('x',system,'area',GRacq.area*fspR,'duration',tSp,'riseTime',dG);
111 | GRspex = mr.makeTrapezoid('x',system,'area',GRacq.area*(1+fspR),'duration',tSpex,'riseTime',dG);
112 |
113 |
114 | AGRspr=GRspr.area;%GRacq.area/2*fspR;
115 | AGRpreph = GRacq.area/2+AGRspr;%GRacq.area*(1+fspR)/2;
116 | GRpreph = mr.makeTrapezoid('x',system,'Area',AGRpreph,'duration',tSpex,'riseTime',dG);
117 |
118 |
119 |
120 | %%
121 | %%% Phase encoding
122 | % To move the $k$-space trajectory away from 0 prior to the readout a
123 | % prephasing gradient must be used. Furthermore rephasing of the slice
124 | % select gradient is required.
125 |
126 | %[PEorder,Ny] = myTSE_PEorder(Ny,necho,k0,PEtype);
127 | nex=floor(Ny/necho);
128 | pe_steps=(1:(necho*nex))-0.5*necho*nex-1;
129 | if 0==mod(necho,2)
130 | pe_steps=circshift(pe_steps,[0,-round(nex/2)]); % for odd number of echoes we have to apply a shift to avoid a contrast jump at k=0
131 | end
132 | PEorder=reshape(pe_steps,[nex,necho])';
133 | phaseAreas = PEorder*deltak;
134 |
135 |
136 |
137 | %% split gradients and recombine into blocks
138 | % lets start with slice selection....
139 | GS1times=[0 GSex.riseTime];
140 | GS1amp=[0 GSex.amplitude];
141 | GS1 = mr.makeExtendedTrapezoid('z','times',GS1times,'amplitudes',GS1amp);
142 |
143 | GS2times=[0 GSex.flatTime];
144 | GS2amp=[GSex.amplitude GSex.amplitude];
145 | GS2 = mr.makeExtendedTrapezoid('z','times',GS2times,'amplitudes',GS2amp);
146 |
147 | GS3times=[0 GSspex.riseTime GSspex.riseTime+GSspex.flatTime GSspex.riseTime+GSspex.flatTime+GSspex.fallTime];
148 | GS3amp=[GSex.amplitude GSspex.amplitude GSspex.amplitude GSref.amplitude];
149 | GS3 = mr.makeExtendedTrapezoid('z','times',GS3times,'amplitudes',GS3amp);
150 |
151 | GS4times=[0 GSref.flatTime];
152 | GS4amp=[GSref.amplitude GSref.amplitude];
153 | GS4 = mr.makeExtendedTrapezoid('z','times',GS4times,'amplitudes',GS4amp);
154 |
155 | GS5times=[0 GSspr.riseTime GSspr.riseTime+GSspr.flatTime GSspr.riseTime+GSspr.flatTime+GSspr.fallTime];
156 | GS5amp=[GSref.amplitude GSspr.amplitude GSspr.amplitude 0];
157 | GS5 = mr.makeExtendedTrapezoid('z','times',GS5times,'amplitudes',GS5amp);
158 |
159 | GS7times=[0 GSspr.riseTime GSspr.riseTime+GSspr.flatTime GSspr.riseTime+GSspr.flatTime+GSspr.fallTime];
160 | GS7amp=[0 GSspr.amplitude GSspr.amplitude GSref.amplitude];
161 | GS7 = mr.makeExtendedTrapezoid('z','times',GS7times,'amplitudes',GS7amp);
162 |
163 | % and now the readout gradient....
164 |
165 | GR3=GRpreph;%GRspex;
166 |
167 | GR5times=[0 GRspr.riseTime GRspr.riseTime+GRspr.flatTime GRspr.riseTime+GRspr.flatTime+GRspr.fallTime];
168 | GR5amp=[0 GRspr.amplitude GRspr.amplitude GRacq.amplitude];
169 | GR5 = mr.makeExtendedTrapezoid('x','times',GR5times,'amplitudes',GR5amp);
170 |
171 | GR6times=[0 readoutTime];
172 | GR6amp=[GRacq.amplitude GRacq.amplitude];
173 | GR6 = mr.makeExtendedTrapezoid('x','times',GR6times,'amplitudes',GR6amp);
174 |
175 | GR7times=[0 GRspr.riseTime GRspr.riseTime+GRspr.flatTime GRspr.riseTime+GRspr.flatTime+GRspr.fallTime];
176 | GR7amp=[GRacq.amplitude GRspr.amplitude GRspr.amplitude 0];
177 | GR7 = mr.makeExtendedTrapezoid('x','times',GR7times,'amplitudes',GR7amp);
178 |
179 |
180 | % and filltimes
181 | tex=GS1.t(end)+GS2.t(end)+GS3.t(end);
182 | tref=GS4.t(end)+GS5.t(end)+GS7.t(end)+readoutTime;
183 | tend=GS4.t(end)+GS5.t(end);
184 | tETrain=tex+necho*tref+tend;
185 | TRfill=(TR-Nslices*tETrain)/Nslices;
186 | % round to gradient raster
187 | TRfill=system.gradRasterTime * round(TRfill / system.gradRasterTime);
188 | if TRfill<0, TRfill=1e-3;
189 | disp(strcat('Warning!!! TR too short, adapted to include all slices to : ',num2str(1000*Nslices*(tETrain+TRfill)),' ms'));
190 | else
191 | disp(strcat('TRfill : ',num2str(1000*TRfill),' ms'));
192 | end
193 | delayTR = mr.makeDelay(TRfill);
194 |
195 | %% Define sequence blocks
196 | % Next, the blocks are put together to form the sequence
197 | for kex=0:nex % MZ: we start at 0 to have one dummy
198 | for s=1:Nslices
199 | rfex.freqOffset=GSex.amplitude*sliceThickness*(s-1-(Nslices-1)/2);
200 | rfref.freqOffset=GSref.amplitude*sliceThickness*(s-1-(Nslices-1)/2);
201 | rfex.phaseOffset=rfex_phase-2*pi*rfex.freqOffset*mr.calcRfCenter(rfex); % align the phase for off-center slices
202 | rfref.phaseOffset=rfref_phase-2*pi*rfref.freqOffset*mr.calcRfCenter(rfref); % dito
203 |
204 | seq.addBlock(GS1);
205 | seq.addBlock(GS2,rfex);
206 | seq.addBlock(GS3,GR3);
207 | %GS4.first=GS4f;
208 | %GS4.first=GS3.last;
209 | for kech=1:necho,
210 | if (kex>0)
211 | phaseArea=phaseAreas(kech,kex);
212 | else
213 | phaseArea=0;
214 | end
215 | GPpre = mr.makeTrapezoid('y',system,'Area',phaseArea,'Duration',tSp,'riseTime',dG);
216 | GPrew = mr.makeTrapezoid('y',system,'Area',-phaseArea,'Duration',tSp,'riseTime',dG);
217 | seq.addBlock(GS4,rfref);
218 | seq.addBlock(GS5,GR5,GPpre);
219 | if (kex>0)
220 | seq.addBlock(GR6,adc);
221 | else
222 | seq.addBlock(GR6);
223 | end
224 | seq.addBlock(GS7,GR7,GPrew);
225 | %GS4.first=GS7.last;
226 | end
227 | seq.addBlock(GS4);
228 | seq.addBlock(GS5);
229 | seq.addBlock(delayTR);
230 | end
231 | end
232 |
233 | %% new single-function call for trajectory calculation
234 | [ktraj_adc, ktraj, t_excitation, t_refocusing] = seq.calculateKspace();
235 |
236 | %% plot k-spaces
237 |
238 | figure; plot(ktraj'); % plot the entire k-space trajectory
239 | figure; plot(ktraj(1,:),ktraj(2,:),'b',...
240 | ktraj_adc(1,:),ktraj_adc(2,:),'r.'); % a 2D plot
241 | axis('equal'); % enforce aspect ratio for the correct trajectory display
242 |
243 |
244 | %% Write to file
245 |
246 | % The sequence is written to file in compressed form according to the file
247 | % format specification using the |write| method.
248 | seq.write([num2str(rflip(1)),'_tse500ms.seq'])
249 |
250 | %%
251 | % Display the first few lines of the output file
252 | % s=fileread('myTSE.seq');
253 | % disp(s(1:300))
254 | seq.plot();
255 |
256 | % seq.install('siemens');
257 |
258 |
--------------------------------------------------------------------------------
/writeTSE_500ms.m:
--------------------------------------------------------------------------------
1 | %% Create a TSE sequence and export for execution
2 | %
3 | % The |Sequence| class provides functionality to create magnetic
4 | % resonance sequences (MRI or NMR) from basic building blocks.
5 | %
6 | % This provides an implementation of the open file format for MR sequences
7 | % described here: http://pulseq.github.io/specification.pdf
8 | %
9 | % This example performs the following steps:
10 | %
11 | % # Create slice selective RF pulse for imaging.
12 | % # Create readout gradient and phase encode strategy.
13 | % # Loop through phase encoding and generate sequence blocks.
14 | % # Write the sequence to an open file format suitable for execution on a
15 | % scanner.
16 | %
17 | % Juergen Hennig
18 | % Maxim Zaitsev
19 |
20 |
21 | %% Instantiation and gradient limits
22 | % The system gradient limits can be specified in various units _mT/m_,
23 | % _Hz/cm_, or _Hz/m_. However the limits will be stored internally in units
24 | % of _Hz/m_ for amplitude and _Hz/m/s_ for slew. Unspecificied hardware
25 | % parameters will be assigned default values.
26 |
27 | dG=250e-6;
28 | system = mr.opts('MaxGrad', 30, 'GradUnit', 'mT/m', ...
29 | 'MaxSlew', 170, 'SlewUnit', 'T/m/s', 'rfRingdownTime', 100e-6, ...
30 | 'rfDeadTime', 100e-6, 'adcDeadTime', 10e-6);
31 |
32 | %%
33 | % A new sequence object is created by calling the class constructor.
34 | seq=mr.Sequence(system);
35 |
36 |
37 | %% Sequence events
38 | % Some sequence parameters are defined using standard MATLAB variables
39 | fov=256e-3;
40 | Nx=128; Ny=128; necho=16; Nslices=1;
41 |
42 |
43 | rflip=120;
44 |
45 |
46 |
47 | if (numel(rflip)==1), rflip=rflip+zeros([1 necho]); end
48 | sliceThickness=5e-3;
49 | TE=12e-3; TR=500e-3;
50 | TEeff=60e-3;
51 | k0=round(TEeff/TE);
52 | PEtype='linear';
53 |
54 | readoutTime = 6.4e-3 + 2*system.adcDeadTime;
55 | tEx=2.5e-3;
56 | tExwd=tEx+system.rfRingdownTime+system.rfDeadTime;
57 | tRef=2e-3;
58 | tRefwd=tRef+system.rfRingdownTime+system.rfDeadTime;
59 | tSp=0.5*(TE-readoutTime-tRefwd);
60 | tSpex=0.5*(TE-tExwd-tRefwd);
61 | fspR=1.0;
62 | fspS=0.5;
63 |
64 | rfex_phase=pi/2; % MZ: we need to maintain these as variables because we will overwrtite phase offsets for multiple slice positions
65 | rfref_phase=0;
66 |
67 | %%
68 | %%% Base gradients
69 | %%% Slice selection
70 | % Key concepts in the sequence description are *blocks* and *events*.
71 | % Blocks describe a group of events that are executed simultaneously. This
72 | % hierarchical structure means that one event can be used in multiple
73 | % blocks, a common occurrence in MR sequences, particularly in imaging
74 | % sequences.
75 | %
76 | % First, the slice selective RF pulses (and corresponding slice gradient)
77 | % are generated using the |makeSincPulse| function.
78 | % Gradients are recalculated such that their flattime covers the pulse plus
79 | % the rfdead- and rfringdown- times.
80 | %
81 | flipex=90*pi/180;
82 | [rfex, gz] = mr.makeSincPulse(flipex,system,'Duration',tEx,...
83 | 'SliceThickness',sliceThickness,'apodization',0.5,'timeBwProduct',4,'PhaseOffset',rfex_phase);
84 | GSex = mr.makeTrapezoid('z',system,'amplitude',gz.amplitude,'FlatTime',tExwd,'riseTime',dG);
85 | % plotPulse(rfex,GSex);
86 |
87 | flipref=rflip(1)*pi/180;
88 | [rfref, gz] = mr.makeSincPulse(flipref,system,'Duration',tRef,...
89 | 'SliceThickness',sliceThickness,'apodization',0.5,'timeBwProduct',4,'PhaseOffset',rfref_phase,'use','refocusing');
90 | GSref = mr.makeTrapezoid('z',system,'amplitude',GSex.amplitude,'FlatTime',tRefwd,'riseTime',dG);
91 | % plotPulse(rfref,GSref);
92 |
93 | AGSex=GSex.area/2;
94 | GSspr = mr.makeTrapezoid('z',system,'area',AGSex*(1+fspS),'duration',tSp,'riseTime',dG);
95 | GSspex = mr.makeTrapezoid('z',system,'area',AGSex*fspS,'duration',tSpex,'riseTime',dG);
96 |
97 | %%
98 | %%% Readout gradient
99 | % To define the remaining encoding gradients we need to calculate the
100 | % $k$-space sampling. The Fourier relationship
101 | %
102 | % $$\Delta k = \frac{1}{FOV}$$
103 | %
104 | % Therefore the area of the readout gradient is $n\Delta k$.
105 | deltak=1/fov;
106 | kWidth = Nx*deltak;
107 |
108 | GRacq = mr.makeTrapezoid('x',system,'FlatArea',kWidth,'FlatTime',readoutTime,'riseTime',dG);
109 | adc = mr.makeAdc(Nx,'Duration',GRacq.flatTime-40e-6, 'Delay', 20e-6);%,'Delay',GRacq.riseTime);
110 | GRspr = mr.makeTrapezoid('x',system,'area',GRacq.area*fspR,'duration',tSp,'riseTime',dG);
111 | GRspex = mr.makeTrapezoid('x',system,'area',GRacq.area*(1+fspR),'duration',tSpex,'riseTime',dG);
112 |
113 |
114 | AGRspr=GRspr.area;%GRacq.area/2*fspR;
115 | AGRpreph = GRacq.area/2+AGRspr;%GRacq.area*(1+fspR)/2;
116 | GRpreph = mr.makeTrapezoid('x',system,'Area',AGRpreph,'duration',tSpex,'riseTime',dG);
117 |
118 |
119 |
120 | %%
121 | %%% Phase encoding
122 | % To move the $k$-space trajectory away from 0 prior to the readout a
123 | % prephasing gradient must be used. Furthermore rephasing of the slice
124 | % select gradient is required.
125 |
126 | %[PEorder,Ny] = myTSE_PEorder(Ny,necho,k0,PEtype);
127 | nex=floor(Ny/necho);
128 | pe_steps=(1:(necho*nex))-0.5*necho*nex-1;
129 | if 0==mod(necho,2)
130 | pe_steps=circshift(pe_steps,[0,-round(nex/2)]); % for odd number of echoes we have to apply a shift to avoid a contrast jump at k=0
131 | end
132 | PEorder=reshape(pe_steps,[nex,necho])';
133 | phaseAreas = PEorder*deltak;
134 |
135 |
136 |
137 | %% split gradients and recombine into blocks
138 | % lets start with slice selection....
139 | GS1times=[0 GSex.riseTime];
140 | GS1amp=[0 GSex.amplitude];
141 | GS1 = mr.makeExtendedTrapezoid('z','times',GS1times,'amplitudes',GS1amp);
142 |
143 | GS2times=[0 GSex.flatTime];
144 | GS2amp=[GSex.amplitude GSex.amplitude];
145 | GS2 = mr.makeExtendedTrapezoid('z','times',GS2times,'amplitudes',GS2amp);
146 |
147 | GS3times=[0 GSspex.riseTime GSspex.riseTime+GSspex.flatTime GSspex.riseTime+GSspex.flatTime+GSspex.fallTime];
148 | GS3amp=[GSex.amplitude GSspex.amplitude GSspex.amplitude GSref.amplitude];
149 | GS3 = mr.makeExtendedTrapezoid('z','times',GS3times,'amplitudes',GS3amp);
150 |
151 | GS4times=[0 GSref.flatTime];
152 | GS4amp=[GSref.amplitude GSref.amplitude];
153 | GS4 = mr.makeExtendedTrapezoid('z','times',GS4times,'amplitudes',GS4amp);
154 |
155 | GS5times=[0 GSspr.riseTime GSspr.riseTime+GSspr.flatTime GSspr.riseTime+GSspr.flatTime+GSspr.fallTime];
156 | GS5amp=[GSref.amplitude GSspr.amplitude GSspr.amplitude 0];
157 | GS5 = mr.makeExtendedTrapezoid('z','times',GS5times,'amplitudes',GS5amp);
158 |
159 | GS7times=[0 GSspr.riseTime GSspr.riseTime+GSspr.flatTime GSspr.riseTime+GSspr.flatTime+GSspr.fallTime];
160 | GS7amp=[0 GSspr.amplitude GSspr.amplitude GSref.amplitude];
161 | GS7 = mr.makeExtendedTrapezoid('z','times',GS7times,'amplitudes',GS7amp);
162 |
163 | % and now the readout gradient....
164 |
165 | GR3=GRpreph;%GRspex;
166 |
167 | GR5times=[0 GRspr.riseTime GRspr.riseTime+GRspr.flatTime GRspr.riseTime+GRspr.flatTime+GRspr.fallTime];
168 | GR5amp=[0 GRspr.amplitude GRspr.amplitude GRacq.amplitude];
169 | GR5 = mr.makeExtendedTrapezoid('x','times',GR5times,'amplitudes',GR5amp);
170 |
171 | GR6times=[0 readoutTime];
172 | GR6amp=[GRacq.amplitude GRacq.amplitude];
173 | GR6 = mr.makeExtendedTrapezoid('x','times',GR6times,'amplitudes',GR6amp);
174 |
175 | GR7times=[0 GRspr.riseTime GRspr.riseTime+GRspr.flatTime GRspr.riseTime+GRspr.flatTime+GRspr.fallTime];
176 | GR7amp=[GRacq.amplitude GRspr.amplitude GRspr.amplitude 0];
177 | GR7 = mr.makeExtendedTrapezoid('x','times',GR7times,'amplitudes',GR7amp);
178 |
179 |
180 | % and filltimes
181 | tex=GS1.t(end)+GS2.t(end)+GS3.t(end);
182 | tref=GS4.t(end)+GS5.t(end)+GS7.t(end)+readoutTime;
183 | tend=GS4.t(end)+GS5.t(end);
184 | tETrain=tex+necho*tref+tend;
185 | TRfill=(TR-Nslices*tETrain)/Nslices;
186 | % round to gradient raster
187 | TRfill=system.gradRasterTime * round(TRfill / system.gradRasterTime);
188 | if TRfill<0, TRfill=1e-3;
189 | disp(strcat('Warning!!! TR too short, adapted to include all slices to : ',num2str(1000*Nslices*(tETrain+TRfill)),' ms'));
190 | else
191 | disp(strcat('TRfill : ',num2str(1000*TRfill),' ms'));
192 | end
193 | delayTR = mr.makeDelay(TRfill);
194 |
195 | %% Define sequence blocks
196 | % Next, the blocks are put together to form the sequence
197 | for kex=0:nex % MZ: we start at 0 to have one dummy
198 | for s=1:Nslices
199 | rfex.freqOffset=GSex.amplitude*sliceThickness*(s-1-(Nslices-1)/2);
200 | rfref.freqOffset=GSref.amplitude*sliceThickness*(s-1-(Nslices-1)/2);
201 | rfex.phaseOffset=rfex_phase-2*pi*rfex.freqOffset*mr.calcRfCenter(rfex); % align the phase for off-center slices
202 | rfref.phaseOffset=rfref_phase-2*pi*rfref.freqOffset*mr.calcRfCenter(rfref); % dito
203 |
204 | seq.addBlock(GS1);
205 | seq.addBlock(GS2,rfex);
206 | seq.addBlock(GS3,GR3);
207 | %GS4.first=GS4f;
208 | %GS4.first=GS3.last;
209 | for kech=1:necho,
210 | if (kex>0)
211 | phaseArea=phaseAreas(kech,kex);
212 | else
213 | phaseArea=0;
214 | end
215 | GPpre = mr.makeTrapezoid('y',system,'Area',phaseArea,'Duration',tSp,'riseTime',dG);
216 | GPrew = mr.makeTrapezoid('y',system,'Area',-phaseArea,'Duration',tSp,'riseTime',dG);
217 | seq.addBlock(GS4,rfref);
218 | seq.addBlock(GS5,GR5,GPpre);
219 | if (kex>0)
220 | seq.addBlock(GR6,adc);
221 | else
222 | seq.addBlock(GR6);
223 | end
224 | seq.addBlock(GS7,GR7,GPrew);
225 | %GS4.first=GS7.last;
226 | end
227 | seq.addBlock(GS4);
228 | seq.addBlock(GS5);
229 | seq.addBlock(delayTR);
230 | end
231 | end
232 |
233 | %% new single-function call for trajectory calculation
234 | [ktraj_adc, ktraj, t_excitation, t_refocusing] = seq.calculateKspace();
235 |
236 | %% plot k-spaces
237 |
238 | figure; plot(ktraj'); % plot the entire k-space trajectory
239 | figure; plot(ktraj(1,:),ktraj(2,:),'b',...
240 | ktraj_adc(1,:),ktraj_adc(2,:),'r.'); % a 2D plot
241 | axis('equal'); % enforce aspect ratio for the correct trajectory display
242 |
243 |
244 | %% Write to file
245 |
246 | % The sequence is written to file in compressed form according to the file
247 | % format specification using the |write| method.
248 | seq.write([num2str(rflip(1)),'_tse500ms.seq'])
249 |
250 | %%
251 | % Display the first few lines of the output file
252 | % s=fileread('myTSE.seq');
253 | % disp(s(1:300))
254 | seq.plot();
255 |
256 | % seq.install('siemens');
257 |
258 |
--------------------------------------------------------------------------------