|
import numpy as np |
|
import pandas as pd |
|
from scipy import stats |
|
|
|
|
|
def main(): |
|
|
|
rs = np.random.RandomState(24) |
|
n = 20 |
|
t = 10 |
|
|
|
x = np.linspace(0, t, 100) |
|
s = np.array([stats.gamma.pdf(x, a) for a in [3, 5, 7]]) |
|
d = s[:, np.newaxis, :] |
|
|
|
d = d * np.array([1, -1])[rs.binomial(1, .3, 3)][:, np.newaxis, np.newaxis] |
|
d = d + rs.normal(0, .15, (3, n))[:, :, np.newaxis] |
|
d = d + rs.uniform(0, .25, 3)[:, np.newaxis, np.newaxis] |
|
d *= 10 |
|
d = d.transpose((1, 2, 0)) |
|
|
|
p = pd.Panel(d, |
|
items=pd.Series(np.arange(n), name="subject"), |
|
major_axis=pd.Series(x, name="timepoint"), |
|
minor_axis=pd.Series(["IPS", "AG", "V1"], name="ROI"), |
|
) |
|
|
|
df = p.to_frame().stack().reset_index(name="BOLD signal") |
|
df.to_csv("gammas.csv", index=False) |
|
|
|
|
|
if __name__ == "__main__": |
|
main() |
|
|