A free & open source python tool for population receptive field simulation of fMRI data.
Project description
# PyPRF
<img src="logo.svg" width=200 align="right" />
A free & open source *python package* for *population receptive field (PRF) simulation*. This package is mainly developed for functional magnetic resonance imaging (fMRI) experiments.
## Installation
The `prfsim` package can directly be installed from PyPI, in the following way:
```bash
pip install prfsim
```
## Dependencies
`prfsim` is implemented in [Python 3.6.4]
If you install `pyprf` using `pip` (as described above), all of the following dependencies are installed automatically - you do not have to take care of this yourself. Simply follow the above installation instructions.
| pRFsim dependencies | Tested version |
|-------------------------------------------------------|----------------|
| [NumPy](http://www.numpy.org/) | 1.14.0 |
| [Pandas](https://pandas.pydata.org/) | 0.22.0 |
| [SciPy](http://www.scipy.org/) | 1.0.0 |
| [Seaborn](https://seaborn.pydata.org/) | 0.8.1 |
## Contributions
For contributors, we suggest the following procedure:
* Create your own branch (in the web interface, or by `git checkout -b new_branch`)
* If you create the branch in the web interface, pull changes to your local repository (`git pull`)
* Change to new branch: `git checkout new_branch`
* Make changes
* Commit changes to new branch (`git add .` and `git commit -m`)
* Push changes to new branch (`git push origin new_branch`)
* Create a pull request using the web interface
## References
This application is based on the following work:
[1] Dumoulin, S. O. & Wandell, B. A. (2008). Population receptive field estimates in human visual cortex. NeuroImage 39, 647–660.
## Support
Please use the [github issues](https://github.com/arash-ash/prfsim/issues) for questions or bug reports.
## License
The project is licensed under [GNU General Public License Version 3](http://www.gnu.org/licenses/gpl.html).
## How to use
```bash
import prfsim.sim as psim
import numpy as np
# experiment parameters
radius = 10
precision = 0.1
barWidth = radius / 4
angles = [-90, 45, -180, 315, 90, 225, 0, 135]
nFrames = len(angles)*3
TR = 3.0
TRs = 5 # number of TRs for each frame
duration = nFrames*TRs
x, y = np.mgrid[-radius:radius:precision,
-radius:radius:precision]
pos = np.dstack((x, y))
length = len(x[0])
nVoxels = 6
# parameters for double gamma distribution function hrf:
n1 = 4
lmbd1 = 2.0
t01 = 0
n2 = 7
lmbd2 = 3
t02 = 0
a = 0.3
t = np.arange(0,nFrames*TRs*TR,TR)
hrf_gen = psim.hrf_double_gamma(t, n1, n2, lmbd1, lmbd2, t01, t02, a)
hrf_est = hrf_gen
stim = psim.generateStim(radius=radius, precision=precision,
barWidth=barWidth, angles=angles,
nFrames=nFrames, length=length,
TR=TR, TRs=TRs, isCheckerboard=False)
print('stimulus generated')
neuronal_responses = psim.getNeuronalResponse(stim=stim, nVoxels=nVoxels,
radius=radius, precision=precision,
duration=duration)
print('Neuronal responses generated')
bolds = psim.generateData(neuronal_responses=neuronal_responses,
hrf=hrf_gen,
duration=duration, nVoxels=nVoxels)
print('BOLD responses generated')
print('pRF estimations started...')
results = psim.estimateAll(bolds=bolds, stim=stim,
hrf=hrf_est, radius=radius,
precision=precision,
nVoxels=nVoxels, margin = 1)
print('pRF estimation errors generated')
```
<img src="logo.svg" width=200 align="right" />
A free & open source *python package* for *population receptive field (PRF) simulation*. This package is mainly developed for functional magnetic resonance imaging (fMRI) experiments.
## Installation
The `prfsim` package can directly be installed from PyPI, in the following way:
```bash
pip install prfsim
```
## Dependencies
`prfsim` is implemented in [Python 3.6.4]
If you install `pyprf` using `pip` (as described above), all of the following dependencies are installed automatically - you do not have to take care of this yourself. Simply follow the above installation instructions.
| pRFsim dependencies | Tested version |
|-------------------------------------------------------|----------------|
| [NumPy](http://www.numpy.org/) | 1.14.0 |
| [Pandas](https://pandas.pydata.org/) | 0.22.0 |
| [SciPy](http://www.scipy.org/) | 1.0.0 |
| [Seaborn](https://seaborn.pydata.org/) | 0.8.1 |
## Contributions
For contributors, we suggest the following procedure:
* Create your own branch (in the web interface, or by `git checkout -b new_branch`)
* If you create the branch in the web interface, pull changes to your local repository (`git pull`)
* Change to new branch: `git checkout new_branch`
* Make changes
* Commit changes to new branch (`git add .` and `git commit -m`)
* Push changes to new branch (`git push origin new_branch`)
* Create a pull request using the web interface
## References
This application is based on the following work:
[1] Dumoulin, S. O. & Wandell, B. A. (2008). Population receptive field estimates in human visual cortex. NeuroImage 39, 647–660.
## Support
Please use the [github issues](https://github.com/arash-ash/prfsim/issues) for questions or bug reports.
## License
The project is licensed under [GNU General Public License Version 3](http://www.gnu.org/licenses/gpl.html).
## How to use
```bash
import prfsim.sim as psim
import numpy as np
# experiment parameters
radius = 10
precision = 0.1
barWidth = radius / 4
angles = [-90, 45, -180, 315, 90, 225, 0, 135]
nFrames = len(angles)*3
TR = 3.0
TRs = 5 # number of TRs for each frame
duration = nFrames*TRs
x, y = np.mgrid[-radius:radius:precision,
-radius:radius:precision]
pos = np.dstack((x, y))
length = len(x[0])
nVoxels = 6
# parameters for double gamma distribution function hrf:
n1 = 4
lmbd1 = 2.0
t01 = 0
n2 = 7
lmbd2 = 3
t02 = 0
a = 0.3
t = np.arange(0,nFrames*TRs*TR,TR)
hrf_gen = psim.hrf_double_gamma(t, n1, n2, lmbd1, lmbd2, t01, t02, a)
hrf_est = hrf_gen
stim = psim.generateStim(radius=radius, precision=precision,
barWidth=barWidth, angles=angles,
nFrames=nFrames, length=length,
TR=TR, TRs=TRs, isCheckerboard=False)
print('stimulus generated')
neuronal_responses = psim.getNeuronalResponse(stim=stim, nVoxels=nVoxels,
radius=radius, precision=precision,
duration=duration)
print('Neuronal responses generated')
bolds = psim.generateData(neuronal_responses=neuronal_responses,
hrf=hrf_gen,
duration=duration, nVoxels=nVoxels)
print('BOLD responses generated')
print('pRF estimations started...')
results = psim.estimateAll(bolds=bolds, stim=stim,
hrf=hrf_est, radius=radius,
precision=precision,
nVoxels=nVoxels, margin = 1)
print('pRF estimation errors generated')
```
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file prfsim-0.1.8-py2.py3-none-any.whl.
File metadata
- Download URL: prfsim-0.1.8-py2.py3-none-any.whl
- Upload date:
- Size: 26.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67ff348f2909fb46c4c77f38900f2f4b5fc4b121fe07eb1555f7a2e2edb73798
|
|
| MD5 |
95305c69e2d36d7cb5350e5d69321193
|
|
| BLAKE2b-256 |
ddb2c9cb2a763f8c378b7d607d6f745952ac40103c1b4c8707722f987641d4b3
|