├── .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 | --------------------------------------------------------------------------------