Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions brukerapi/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,9 @@ def split(args):
dataset = Dataset(args.path_in)

if args.slice_package:
SlicePackageSplitter().split(dataset, write=True)
SlicePackageSplitter().split(dataset, write=True, path_out=args.path_out)
elif args.frame_group:
FrameGroupSplitter(args.frame_group).split(dataset, write=True)
FrameGroupSplitter(args.frame_group).split(dataset, write=True, path_out=args.path_out)


def report(args):
Expand All @@ -124,25 +124,25 @@ def report(args):
:return:
"""
input = Path(args.input)

if args.output is None:
output = None
else:
output = Path(args.output)
output = None if args.output is None else Path(args.output)

if input.is_dir():
# folder in-place
if output is None:
Folder(input).report(format_=args.format, props=args.props, verbose=args.verbose)
elif output.is_dir():
# folder to folder
else:
# folder to folder -- an output folder that does not exist yet is
# created rather than silently matching no branch and exiting 0
output.mkdir(parents=True, exist_ok=True)
Folder(input).report(path_out=output, format_=args.format, props=args.props, verbose=args.verbose)
# dataset in-place
elif output is None:
Dataset(input, add_parameters=["subject"]).report(props=args.props, verbose=args.verbose)
Dataset(input, add_parameters=["subject"]).report(props=args.props, verbose=args.verbose, format_=args.format)
# dataset to folder, or dataset to file
else:
Dataset(input, add_parameters=["subject"]).report(path=output, props=args.props, verbose=args.verbose)
if not output.suffix:
output.mkdir(parents=True, exist_ok=True)
Dataset(input, add_parameters=["subject"]).report(path=output, props=args.props, verbose=args.verbose, format_=args.format)


def filter(args):
Expand Down
9 changes: 5 additions & 4 deletions brukerapi/config/properties_2dseq_core.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
{
"pv_version": [
{
"cmd": "#VisuCreatorVersion[1:-1]",
"conditions": []
"cmd": "#VisuCreatorVersion[1:-1].split(';')[0]",
"conditions": [],
"comment": "spec 7.1: VisuCreator/VisuCreatorVersion are semicolon-separated lists; the first creator is the one that wrote the dataset"
}
],
"numpy_dtype": [
Expand Down Expand Up @@ -181,11 +182,11 @@
],
"dim_type": [
{
"cmd": "#VisuCoreDimDesc.list + ['spatial',] + #VisuFGOrderDesc.sub_list(1)",
"cmd": "#VisuCoreDimDesc.list + ['frame',] + #VisuFGOrderDesc.sub_list(1)",
"conditions": ["@is_single_slice==True"]
},
{
"cmd": "#VisuCoreDimDesc.list + ['spatial',]",
"cmd": "#VisuCoreDimDesc.list + ['frame',]",
"conditions": ["@is_single_slice==True"]
},
{
Expand Down
121 changes: 8 additions & 113 deletions brukerapi/config/properties_2dseq_custom.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,15 @@
{
"cmd": "np.array([#PVM_VoxArrSize[0,0] * #VisuAcqSize[1], #PVM_VoxArrSize[0,1] * #VisuAcqSize[2], #VisuCoreFrameThickness])",
"conditions": [
"#VisuCreatorVersion in ['<5.1>']",
"@pv_version.split('.')[0]=='5'",
"#VisuCoreDimDesc.list[0]=='spectroscopic'",
"#VisuCoreDimDesc.list[1]=='spatial'",
"#VisuCoreDimDesc.list[2]=='spatial'"]
},
{
"cmd": "np.array([#PVM_VoxArrSize[0,0], #PVM_VoxArrSize[0,1], #PVM_VoxArrSize[0,2]])",
"conditions": [
"#VisuCreatorVersion in ['<6.0.1>']",
"@pv_version.split('.')[0]!='5'",
"#VisuCoreDimDesc.list[0]=='spectroscopic'",
"#VisuCoreDimDesc.list[1]=='spatial'",
"#VisuCoreDimDesc.list[2]=='spatial'"]
Expand Down Expand Up @@ -97,49 +97,34 @@
{
"cmd": "np.array([#PVM_VoxArrSize[0,0], #PVM_VoxArrSize[0,1], #VisuCoreFrameThickness])",
"conditions": [
"#VisuCreatorVersion in ['<5.1>']",
"@pv_version.split('.')[0]=='5'",
"#VisuCoreDimDesc.list[0]=='spectroscopic'",
"#VisuCoreDimDesc.list[1]=='spatial'",
"#VisuCoreDimDesc.list[2]=='spatial'"]
},
{
"cmd": "np.array([#PVM_VoxArrSize[0,0] / #VisuCoreSize[1], #PVM_VoxArrSize[0,1] / #VisuCoreSize[2], #PVM_VoxArrSize[0,2]])",
"conditions": [
"#VisuCreatorVersion in ['<6.0.1>']",
"@pv_version.split('.')[0]!='5'",
"#VisuCoreDimDesc.list[0]=='spectroscopic'",
"#VisuCoreDimDesc.list[1]=='spatial'",
"#VisuCoreDimDesc.list[2]=='spatial'"]
},
{
"cmd": "np.array([#VisuCoreExtent[0] / #VisuCoreSize[0], #VisuCoreExtent[1] / #VisuCoreSize[1], #VisuCoreFrameThickness + #VisuCoreSlicePacksSliceDist.list[0]])",
"conditions": [
"#VisuCreatorVersion in ['<6.0.1>']",
"#VisuCoreDim==2"]
},
{
"cmd": "np.array([#VisuCoreExtent[0] / #VisuCoreSize[0], #VisuCoreExtent[1] / #VisuCoreSize[1], abs(#VisuCorePosition[0,2] - #VisuCorePosition[1,2])])",
"cmd": "np.array([#VisuCoreExtent[0] / #VisuCoreSize[0], #VisuCoreExtent[1] / #VisuCoreSize[1], np.linalg.norm(#VisuCorePosition[1,:] - #VisuCorePosition[0,:])])",
"conditions": [
"#VisuCreatorVersion in ['<5.1>']",
"#VisuCorePosition.size[0]>1",
"#VisuCoreDim==2"]
"#VisuCoreDim==2"],
"comment": "spec 7.10: the distance between two measured slice centres. VisuCoreSlicePacksSliceDist is already centre-to-centre, so it must not be added to VisuCoreFrameThickness"
},
{
"cmd": "np.array([#VisuCoreExtent[0] / #VisuCoreSize[0], #VisuCoreExtent[1] / #VisuCoreSize[1], #VisuCoreFrameThickness])",
"cmd": "np.array([#VisuCoreExtent[0] / #VisuCoreSize[0], #VisuCoreExtent[1] / #VisuCoreSize[1], #VisuCoreSlicePacksSliceDist.list[0]])",
"conditions": [
"#VisuCreatorVersion in ['<5.1>']",
"#VisuCorePosition.size[0]==1",
"#VisuCoreDim==2"]
},
{
"cmd": "np.array([#VisuCoreExtent[0] / #VisuCoreSize[0], #VisuCoreExtent[1] / #VisuCoreSize[1], np.linalg.norm(#VisuCorePosition[1,:] - #VisuCorePosition[0,:])])",
"conditions": [
"#VisuCorePosition.size[0]>1",
"#VisuCoreDim==2"]
},
{
"cmd": "np.array([#VisuCoreExtent[0] / #VisuCoreSize[0], #VisuCoreExtent[1] / #VisuCoreSize[1], #VisuCoreFrameThickness])",
"conditions": [
"#VisuCorePosition.size[0]==1",
"#VisuCoreDim==2"]
},
{
Expand All @@ -150,96 +135,6 @@
"#VisuCoreDimDesc.list[2]=='spatial'"]
}
],
"position_matrix": [
{
"cmd": "np.array([[np.cos(np.pi), -np.sin(np.pi), 0], [np.sin(np.pi), np.cos(np.pi), 0], [0, 0, 1]])",
"conditions": [
"#VisuSubjectPosition=='Head_Supine'"
],
"reference": "This recipe was taken from the version BrkRaw repository (https://github.com/BrkRaw/bruker) version 0.3.4 (10.5281/zenodo.3907018)"
},
{
"cmd": "np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])",
"conditions": [
"#VisuSubjectPosition=='Head_Prone'"
],
"reference": "This recipe was taken from the version BrkRaw repository (https://github.com/BrkRaw/bruker) version 0.3.4 (10.5281/zenodo.3907018)"
},
{
"cmd": "np.array([[np.cos(np.pi/2), -np.sin(np.pi/2), 0], [np.sin(np.pi/2), np.cos(np.pi/2), 0], [0, 0, 1]])",
"conditions": [
"#VisuSubjectPosition=='Head_Left'"
],
"reference": "This recipe was taken from the version BrkRaw repository (https://github.com/BrkRaw/bruker) version 0.3.4 (10.5281/zenodo.3907018)"
},
{
"cmd": "np.array([[np.cos(-np.pi/2), -np.sin(-np.pi/2), 0], [np.sin(-np.pi/2), np.cos(-np.pi/2), 0], [0, 0, 1]])",
"conditions": [
"#VisuSubjectPosition=='Head_Right'"
],
"reference": "This recipe was taken from the version BrkRaw repository (https://github.com/BrkRaw/bruker) version 0.3.4 (10.5281/zenodo.3907018)"
},
{
"cmd": "np.array([[1, 0, 0], [0, np.cos(np.pi), -np.sin(np.pi)], [0, np.sin(np.pi), np.cos(np.pi)]]).astype('float')",
"conditions": [
"#VisuSubjectPosition in ['Foot_Supine', 'Tail_Supine']"
],
"reference": "This recipe was taken from the version BrkRaw repository (https://github.com/BrkRaw/bruker) version 0.3.4 (10.5281/zenodo.3907018)"
},
{
"cmd": "np.array([[np.cos(np.pi), 0, np.sin(np.pi)], [0, 1, 0], [-np.sin(np.pi), 0, np.cos(np.pi)]]).astype('float')",
"conditions": [
"#VisuSubjectPosition in ['Foot_Prone', 'Tail_Prone']"
],
"reference": "This recipe was taken from the version BrkRaw repository (https://github.com/BrkRaw/bruker) version 0.3.4 (10.5281/zenodo.3907018)"
},
{
"cmd": "np.array([[np.cos(np.pi/2), -np.sin(np.pi/2), 0], [np.sin(np.pi/2), np.cos(np.pi/2), 0], [0, 0, 1]])",
"conditions": [
"#VisuSubjectPosition in ['Foot_Left', 'Tail_Left']"
],
"reference": "This recipe was taken from the version BrkRaw repository (https://github.com/BrkRaw/bruker) version 0.3.4 (10.5281/zenodo.3907018)"
},
{
"cmd": "np.array([[np.cos(-np.pi/2), -np.sin(-np.pi/2), 0], [np.sin(-np.pi/2), np.cos(-np.pi/2), 0], [0, 0, 1]])",
"conditions": [
"#VisuSubjectPosition in ['Foot_Right', 'Tail_Right']"
],
"reference": "This recipe was taken from the version BrkRaw repository (https://github.com/BrkRaw/bruker) version 0.3.4 (10.5281/zenodo.3907018)"
}
],
"rotation": [
{
"cmd": "np.dot(@position_matrix, np.reshape(#VisuCoreOrientation[0,:],(3,3)).T.dot(np.diag(@resolution)))",
"conditions": [
],
"reference": "This recipe was taken from the version BrkRaw repository (https://github.com/BrkRaw/bruker) version 0.3.4 (10.5281/zenodo.3907018)"
}
],
"position": [
{
"cmd": "#PVM_VoxArrPosition[0,:].astype(np.float64)",
"conditions": [
"#VisuCoreDimDesc.list[0]=='spectroscopic'",
"#VisuCoreDimDesc.list[1]=='spatial'",
"#VisuCoreDimDesc.list[2]=='spatial'"]
},
{
"cmd": "np.array([#VisuCorePosition[0,0] + @extent[0], #VisuCorePosition[0,1] + @extent[1], #VisuCorePosition[0,2]])",
"conditions": []
}
],
"affine": [
{
"cmd": "np.array([[@rotation[0,0], @rotation[0,1], @rotation[0,2], @position[0]],[@rotation[1,0], @rotation[1,1], @rotation[1,2], @position[1]],[@rotation[2,0], @rotation[2,1], @rotation[2,2], @position[2]],[0, 0, 0, 1]])",
"conditions": []
},
{
"cmd": "np.identity(4)",
"conditions": [],
"comment": "default value"
}
],
"TE": [
{
"cmd": "#VisuAcqEchoTime",
Expand Down
Loading