brukerapi 0.1.9__py3-none-any.whl → 0.1.10__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- brukerapi/cli.py +2 -2
- brukerapi/dataset.py +1 -1
- brukerapi/jcampdx.py +21 -21
- brukerapi/schemas.py +4 -1
- brukerapi/splitters.py +6 -6
- brukerapi-0.1.10.dist-info/METADATA +227 -0
- {brukerapi-0.1.9.dist-info → brukerapi-0.1.10.dist-info}/RECORD +11 -11
- {brukerapi-0.1.9.dist-info → brukerapi-0.1.10.dist-info}/WHEEL +1 -1
- brukerapi-0.1.9.dist-info/METADATA +0 -13
- {brukerapi-0.1.9.dist-info → brukerapi-0.1.10.dist-info}/entry_points.txt +0 -0
- {brukerapi-0.1.9.dist-info → brukerapi-0.1.10.dist-info/licenses}/LICENSE +0 -0
- {brukerapi-0.1.9.dist-info → brukerapi-0.1.10.dist-info}/top_level.txt +0 -0
brukerapi/cli.py
CHANGED
|
@@ -62,7 +62,7 @@ def main():
|
|
|
62
62
|
dest="path_out",
|
|
63
63
|
type=str,
|
|
64
64
|
required=False,
|
|
65
|
-
help="Folder to save
|
|
65
|
+
help="Folder to save split data sets",
|
|
66
66
|
)
|
|
67
67
|
parser_split.add_argument(
|
|
68
68
|
"-s",
|
|
@@ -81,7 +81,7 @@ def main():
|
|
|
81
81
|
parser_split.set_defaults(func=split)
|
|
82
82
|
|
|
83
83
|
# filter sub-command
|
|
84
|
-
parser_filter = subparsers.add_parser('filter', help='get files based on
|
|
84
|
+
parser_filter = subparsers.add_parser('filter', help='get files based on query')
|
|
85
85
|
parser_filter.add_argument(
|
|
86
86
|
"-i",
|
|
87
87
|
"--input",
|
brukerapi/dataset.py
CHANGED
|
@@ -461,7 +461,7 @@ class Dataset:
|
|
|
461
461
|
|
|
462
462
|
def _sub_parameters(self, recipe):
|
|
463
463
|
# entries with property e.g. VisuFGOrderDesc.nested to self._dataset['VisuFGOrderDesc'].nested
|
|
464
|
-
for match in re.finditer('#[a-zA-Z0-9_]+\.[a-zA-Z]+', recipe):
|
|
464
|
+
for match in re.finditer(r'#[a-zA-Z0-9_]+\.[a-zA-Z]+', recipe):
|
|
465
465
|
m = re.match('#[a-zA-Z0-9_]+', match.group())
|
|
466
466
|
recipe = recipe.replace(m.group(),"self['{}']".format(m.group()[1:]))
|
|
467
467
|
# entries without property e.g. VisuFGOrderDesc to self._dataset['VisuFGOrderDesc'].value
|
brukerapi/jcampdx.py
CHANGED
|
@@ -8,18 +8,18 @@ import json
|
|
|
8
8
|
|
|
9
9
|
SUPPORTED_VERSIONS = ['4.24', '5.0', '5.00 Bruker JCAMP library', '5.00 BRUKER JCAMP library', '5.01']
|
|
10
10
|
GRAMMAR = {
|
|
11
|
-
'COMMENT_LINE' : '\$\$[^\n]*\n',
|
|
11
|
+
'COMMENT_LINE' : r'\$\$[^\n]*\n',
|
|
12
12
|
'PARAMETER': '##',
|
|
13
|
-
'USER_DEFINED' : '\$',
|
|
14
|
-
'TRAILING_EOL' : '\n$',
|
|
15
|
-
'DATA_LABEL' : '\(XY..XY\)',
|
|
16
|
-
'DATA_DELIMETERS':', |\n',
|
|
17
|
-
'SIZE_BRACKET': '^\([^\(\)<>]*\)(?!$)',
|
|
13
|
+
'USER_DEFINED' : r'\$',
|
|
14
|
+
'TRAILING_EOL' : r'\n$',
|
|
15
|
+
'DATA_LABEL' : r'\(XY..XY\)',
|
|
16
|
+
'DATA_DELIMETERS': r', |\n',
|
|
17
|
+
'SIZE_BRACKET': r'^\([^\(\)<>]*\)(?!$)',
|
|
18
18
|
'LIST_DELIMETER': ', ',
|
|
19
19
|
'EQUAL_SIGN': '=',
|
|
20
|
-
'SINGLE_NUMBER':'-?[\d.]+(?:e[+-]?\d+)?',
|
|
21
|
-
'PARALLEL_BRACKET': '\) ',
|
|
22
|
-
'GEO_OBJ': '\(\(\([\s\S]*\)[\s\S]*\)[\s\S]*\)',
|
|
20
|
+
'SINGLE_NUMBER': r'-?[\d.]+(?:e[+-]?\d+)?',
|
|
21
|
+
'PARALLEL_BRACKET': r'\) ',
|
|
22
|
+
'GEO_OBJ': r'\(\(\([\s\S]*\)[\s\S]*\)[\s\S]*\)',
|
|
23
23
|
'HEADER':'TITLE|JCAMPDX|JCAMP-DX|DATA TYPE|DATATYPE|ORIGIN|OWNER',
|
|
24
24
|
'VERSION_TITLE':'JCAMPDX|JCAMP-DX'
|
|
25
25
|
}
|
|
@@ -107,7 +107,7 @@ class Parameter(object):
|
|
|
107
107
|
|
|
108
108
|
@property
|
|
109
109
|
def key(self):
|
|
110
|
-
return re.sub('##', '', re.sub('\$', '', self.key_str)).rstrip()
|
|
110
|
+
return re.sub('##', '', re.sub(r'\$', '', self.key_str)).rstrip()
|
|
111
111
|
|
|
112
112
|
@key.setter
|
|
113
113
|
def key(self, key):
|
|
@@ -203,10 +203,10 @@ class GenericParameter(Parameter):
|
|
|
203
203
|
@property
|
|
204
204
|
def value(self, **kwargs):
|
|
205
205
|
|
|
206
|
-
val_str = re.sub('\n', '', self.val_str)
|
|
206
|
+
val_str = re.sub(r'\n', '', self.val_str)
|
|
207
207
|
|
|
208
208
|
# unwrap wrapped list
|
|
209
|
-
if re.match('@[0-9]*\*',val_str) is not None:
|
|
209
|
+
if re.match(r'@[0-9]*\*',val_str) is not None:
|
|
210
210
|
val_str = self._unwrap_list(val_str)
|
|
211
211
|
|
|
212
212
|
val_str_list = GenericParameter.split_parallel_lists(val_str)
|
|
@@ -318,7 +318,7 @@ class GenericParameter(Parameter):
|
|
|
318
318
|
@classmethod
|
|
319
319
|
def parse_value(cls, val_str, size_bracket=None):
|
|
320
320
|
# remove \n
|
|
321
|
-
val_str = re.sub('\n','', val_str)
|
|
321
|
+
val_str = re.sub(r'\n','', val_str)
|
|
322
322
|
|
|
323
323
|
# sharp string
|
|
324
324
|
if val_str.startswith('<') and val_str.endswith('>'):
|
|
@@ -455,12 +455,12 @@ class GenericParameter(Parameter):
|
|
|
455
455
|
|
|
456
456
|
def _unwrap_list(self, val_str):
|
|
457
457
|
|
|
458
|
-
while re.search('@[0-9]*\*\(
|
|
459
|
-
match = re.search('@[0-9]*\*\(
|
|
458
|
+
while re.search(r'@[0-9]*\*\(-?\d*\.?\d*\)', val_str):
|
|
459
|
+
match = re.search(r'@[0-9]*\*\(-?\d*\.?\d*\)', val_str)
|
|
460
460
|
left = val_str[0:match.start()]
|
|
461
461
|
right = val_str[match.end():]
|
|
462
462
|
sub = val_str[match.start():match.end()]
|
|
463
|
-
size, value = re.split('\*', sub)
|
|
463
|
+
size, value = re.split(r'\*', sub)
|
|
464
464
|
size = int(size[1:])
|
|
465
465
|
middle = ''
|
|
466
466
|
for i in range(size):
|
|
@@ -506,7 +506,7 @@ class GeometryParameter(Parameter):
|
|
|
506
506
|
# :return: 4x4 3D Affine Transformation Matrix
|
|
507
507
|
# """
|
|
508
508
|
# # TODO support for multiple slice packages
|
|
509
|
-
# match = re.match('\(\(\([^\)]*\)', self.val_str)
|
|
509
|
+
# match = re.match(r'\(\(\([^\)]*\)', self.val_str)
|
|
510
510
|
# affine_str = self.val_str[match.start() + 3: match.end() - 1]
|
|
511
511
|
# orient, shift = affine_str.split(', ')
|
|
512
512
|
#
|
|
@@ -799,7 +799,7 @@ class JCAMPDX(object):
|
|
|
799
799
|
except:
|
|
800
800
|
raise InvalidJcampdxFile(path)
|
|
801
801
|
|
|
802
|
-
match = re.search('##{}[^\#\$]+|##\${}[^\#\$]+'.format(key,key), content)
|
|
802
|
+
match = re.search(r'##{}[^\#\$]+|##\${}[^\#\$]+'.format(key,key), content)
|
|
803
803
|
|
|
804
804
|
if match == None:
|
|
805
805
|
raise ParameterNotFound(key, path)
|
|
@@ -872,7 +872,7 @@ class JCAMPDX(object):
|
|
|
872
872
|
|
|
873
873
|
@classmethod
|
|
874
874
|
def split_key_value_pair(cls, line):
|
|
875
|
-
# ASSUMPTION the first
|
|
875
|
+
# ASSUMPTION the first occurrence of = in jcampdx line divides key and value pair
|
|
876
876
|
# example:
|
|
877
877
|
match = re.search(GRAMMAR['EQUAL_SIGN'], line)
|
|
878
878
|
key = line[0:match.start()]
|
|
@@ -903,10 +903,10 @@ class JCAMPDX(object):
|
|
|
903
903
|
|
|
904
904
|
@classmethod
|
|
905
905
|
def wrap_lines(cls, line):
|
|
906
|
-
line_wraps = re.split('\n', line)
|
|
906
|
+
line_wraps = re.split(r'\n', line)
|
|
907
907
|
tail = line_wraps[-1]
|
|
908
908
|
|
|
909
|
-
tail_bits = re.split('\s', tail)
|
|
909
|
+
tail_bits = re.split(r'\s', tail)
|
|
910
910
|
|
|
911
911
|
lines = 1
|
|
912
912
|
tail = ''
|
brukerapi/schemas.py
CHANGED
|
@@ -491,12 +491,15 @@ class SchemaRawdata(Schema):
|
|
|
491
491
|
def deserialize(self, data, layouts):
|
|
492
492
|
return data[0::2,...] + 1j * data[1::2,...]
|
|
493
493
|
|
|
494
|
-
def
|
|
494
|
+
def serialize(self, data, layouts):
|
|
495
495
|
data_ = np.zeros(layouts['shape_storage'], dtype=self.numpy_dtype, order='F')
|
|
496
496
|
data_[0,...] = data.real
|
|
497
497
|
data_[1, ...] = data.imag
|
|
498
498
|
return data_
|
|
499
499
|
|
|
500
|
+
# Compatibility alias for previous misspelling:
|
|
501
|
+
SchemaRawdata.seralize = SchemaRawdata.serialize
|
|
502
|
+
|
|
500
503
|
|
|
501
504
|
class SchemaSer(Schema):
|
|
502
505
|
|
brukerapi/splitters.py
CHANGED
|
@@ -136,7 +136,7 @@ class FrameGroupSplitter(Splitter):
|
|
|
136
136
|
# number of samples in self.fg dimension
|
|
137
137
|
fg_size = dataset.shape[fg_abs_index]
|
|
138
138
|
|
|
139
|
-
# If no index is specified, all elements of given dimension will be
|
|
139
|
+
# If no index is specified, all elements of given dimension will be split
|
|
140
140
|
if select is None:
|
|
141
141
|
select = list(range(0, fg_size))
|
|
142
142
|
|
|
@@ -266,9 +266,9 @@ class SlicePackageSplitter(Splitter):
|
|
|
266
266
|
This functionality might be used for instance when converting data to a different data format.
|
|
267
267
|
|
|
268
268
|
:param dataset: 2dseq dataset with multiple slice packages
|
|
269
|
-
:param write: if True,
|
|
269
|
+
:param write: if True, split data sets will be written to drive
|
|
270
270
|
:param path_out: a path to store data sets (optional)
|
|
271
|
-
:return: list of
|
|
271
|
+
:return: list of split data sets
|
|
272
272
|
"""
|
|
273
273
|
|
|
274
274
|
try:
|
|
@@ -276,7 +276,7 @@ class SlicePackageSplitter(Splitter):
|
|
|
276
276
|
except KeyError:
|
|
277
277
|
print('Parameter VisuCoreSlicePacksSlices not found')
|
|
278
278
|
|
|
279
|
-
# list of
|
|
279
|
+
# list of split data sets
|
|
280
280
|
datasets = []
|
|
281
281
|
|
|
282
282
|
# range of frames of given slice package
|
|
@@ -303,7 +303,7 @@ class SlicePackageSplitter(Splitter):
|
|
|
303
303
|
# construct a new Dataset, without loading data, the data will be supplied later
|
|
304
304
|
dataset_ = Dataset(dataset.path.parents[1] / name, load=False)
|
|
305
305
|
|
|
306
|
-
# SPLIT
|
|
306
|
+
# SPLIT parameters
|
|
307
307
|
dataset_.parameters = self._split_parameters(dataset, frame_range, fg_rel_index, fg_abs_index, sp_index, frame_count)
|
|
308
308
|
|
|
309
309
|
# construct properties from the new set of parameters
|
|
@@ -391,4 +391,4 @@ class SlicePackageSplitter(Splitter):
|
|
|
391
391
|
VisuCoreSlicePacksSliceDist = visu_pars_['VisuCoreSlicePacksSliceDist']
|
|
392
392
|
value = int(VisuCoreSlicePacksSliceDist.value[sp_index])
|
|
393
393
|
VisuCoreSlicePacksSliceDist.value = value
|
|
394
|
-
VisuCoreSlicePacksSliceDist.size = 1
|
|
394
|
+
VisuCoreSlicePacksSliceDist.size = 1
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: brukerapi
|
|
3
|
+
Version: 0.1.10
|
|
4
|
+
Summary: Bruker API
|
|
5
|
+
Author-email: Tomas Psorn <tomaspsorn@isibrno.cz>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/isi-nmr/brukerapi-python
|
|
8
|
+
Project-URL: Download, https://github.com/isi-nmr/brukerapi-python/releases/latest
|
|
9
|
+
Requires-Python: >=3.8
|
|
10
|
+
Description-Content-Type: text/x-rst
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Requires-Dist: numpy<2; python_version < "3.9"
|
|
13
|
+
Requires-Dist: numpy>=1.26.0; python_version >= "3.9"
|
|
14
|
+
Requires-Dist: pyyaml
|
|
15
|
+
Provides-Extra: dev
|
|
16
|
+
Requires-Dist: pytest; extra == "dev"
|
|
17
|
+
Requires-Dist: zenodo_get; extra == "dev"
|
|
18
|
+
Dynamic: license-file
|
|
19
|
+
|
|
20
|
+
brukerapi-python
|
|
21
|
+
======================
|
|
22
|
+
|
|
23
|
+
.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.3831320.svg
|
|
24
|
+
:target: https://doi.org/10.5281/zenodo.3831320
|
|
25
|
+
|
|
26
|
+
.. image:: https://github.com/isi-nmr/brukerapi-python/workflows/CI/badge.svg
|
|
27
|
+
:target: https://doi.org/10.5281/zenodo.3831320
|
|
28
|
+
|
|
29
|
+
.. image:: https://readthedocs.org/projects/bruker-api/badge/?version=latest
|
|
30
|
+
:target: https://bruker-api.readthedocs.io/en/latest/?badge=latest
|
|
31
|
+
:alt: Documentation Status
|
|
32
|
+
|
|
33
|
+
A Python package providing I/O interface for Bruker data sets.
|
|
34
|
+
|
|
35
|
+
tl;dr
|
|
36
|
+
========
|
|
37
|
+
|
|
38
|
+
Install using pip:
|
|
39
|
+
|
|
40
|
+
.. code-block:: shell
|
|
41
|
+
|
|
42
|
+
pip install brukerapi
|
|
43
|
+
|
|
44
|
+
Load any **data set**:
|
|
45
|
+
|
|
46
|
+
.. code-block:: python
|
|
47
|
+
|
|
48
|
+
from brukerapi.dataset import Dataset
|
|
49
|
+
dataset = Dataset('{path}/2dseq') # create data set, works for fid, 2dseq, rawdata.x, ser
|
|
50
|
+
dataset.data # access data array
|
|
51
|
+
dataset.VisuCoreSize # get a value of a single parameter
|
|
52
|
+
|
|
53
|
+
Load an entire **study**:
|
|
54
|
+
|
|
55
|
+
.. code-block:: python
|
|
56
|
+
|
|
57
|
+
from brukerapi.folders import Study
|
|
58
|
+
study = Study('{path_to_study_folder}')
|
|
59
|
+
dataset = study.get_dataset(exp_id='1', proc_id='1')
|
|
60
|
+
|
|
61
|
+
# get_dataset returns an empty dataset
|
|
62
|
+
# in order to load data into the data set, you can either use the context manager:
|
|
63
|
+
|
|
64
|
+
with dataset as d:
|
|
65
|
+
d.data # access data array
|
|
66
|
+
d.VisuCoreSize # get a value of a parameter
|
|
67
|
+
|
|
68
|
+
# or the load function
|
|
69
|
+
dataset.load()
|
|
70
|
+
dataset.data # access data array
|
|
71
|
+
dataset.VisuCoreSize # get a value of a single parameter
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
Features
|
|
77
|
+
========
|
|
78
|
+
|
|
79
|
+
* **I/O** interface for **fid** data sets
|
|
80
|
+
* **I/O** interface for **2dseq** data sets
|
|
81
|
+
* **I/O** interface for **ser** data sets
|
|
82
|
+
* **I/O** interface for **rawdata** data sets
|
|
83
|
+
* **Random access** for **fid** and **2dseq** data sets
|
|
84
|
+
* **Split** operation implemented over **2dseq** data sets
|
|
85
|
+
* **Filter** operation implemented over Bruker **folders** (allowing you to work with a subset of your study only)
|
|
86
|
+
|
|
87
|
+
Examples
|
|
88
|
+
========
|
|
89
|
+
|
|
90
|
+
* How to `read <examples/read_fid.ipynb>`_ a Bruker fid, 2dseq, rawdata, or ser file
|
|
91
|
+
* How to `split slice packages <examples/split_sp_demo.ipynb>`_ of a 2dseq data set
|
|
92
|
+
* How to `split FG_ECHO <examples/split_fg_echo_demo.ipynb>`_ of a 2dseq data set
|
|
93
|
+
* How to `split FG_ISA <examples/examples/split_fg_isa_demo.ipynb>`_ of a 2dseq data set
|
|
94
|
+
|
|
95
|
+
Documentation
|
|
96
|
+
==============
|
|
97
|
+
|
|
98
|
+
Online `documentation <https://bruker-api.readthedocs.io/en/latest/>`_ of the API is available at Read The Docs.
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
Install
|
|
102
|
+
=======
|
|
103
|
+
Using pip:
|
|
104
|
+
|
|
105
|
+
.. code-block:: shell
|
|
106
|
+
|
|
107
|
+
pip install brukerapi
|
|
108
|
+
|
|
109
|
+
From source:
|
|
110
|
+
|
|
111
|
+
.. code-block:: shell
|
|
112
|
+
|
|
113
|
+
git clone https://github.com/isi-nmr/brukerapi-python.git
|
|
114
|
+
cd brukerapi-python
|
|
115
|
+
python setup.py build
|
|
116
|
+
python setup.py install
|
|
117
|
+
|
|
118
|
+
Testing
|
|
119
|
+
========
|
|
120
|
+
To ensure reliability, every commit to this repository is tested against the following, publicly available
|
|
121
|
+
data sets:
|
|
122
|
+
|
|
123
|
+
* `BrukerAPI test data set (Bruker ParaVision v5.1) <https://doi.org/10.5281/zenodo.3899268>`_
|
|
124
|
+
* `BrukerAPI test data set (Bruker ParaVision v6.0.1) <https://doi.org/10.5281/zenodo.3894651>`_
|
|
125
|
+
* `bruker2nifti_qa data set <https://gitlab.com/naveau/bruker2nifti_qa>`_
|
|
126
|
+
|
|
127
|
+
Compatibility
|
|
128
|
+
=============
|
|
129
|
+
|
|
130
|
+
The API was tested using various data sets obtained by **ParaVision 5.1**, **6.0.1** and **360**. It it is compatible
|
|
131
|
+
with the following data set types from individual ParaVision versions.
|
|
132
|
+
|
|
133
|
+
ParaVision v5.1
|
|
134
|
+
"""""""""""""""
|
|
135
|
+
Compatible data set types:
|
|
136
|
+
|
|
137
|
+
* **fid**
|
|
138
|
+
* **2dseq**
|
|
139
|
+
* **rawdata.job0**
|
|
140
|
+
* **rawdata.Navigator**
|
|
141
|
+
|
|
142
|
+
Compatible pulse sequences for **fid** data sets:
|
|
143
|
+
|
|
144
|
+
* FLASH.ppg
|
|
145
|
+
* MGE.ppg
|
|
146
|
+
* MSME.ppg
|
|
147
|
+
* RARE.ppg
|
|
148
|
+
* FAIR_RARE.ppg
|
|
149
|
+
* RAREVTR.ppg
|
|
150
|
+
* RAREst.ppg
|
|
151
|
+
* MDEFT.ppg
|
|
152
|
+
* FISP.ppg
|
|
153
|
+
* FLOWMAP.ppg
|
|
154
|
+
* DtiStandard.ppg
|
|
155
|
+
* EPI.ppg
|
|
156
|
+
* FAIR_EPI.ppg
|
|
157
|
+
* DtiEpi.ppg
|
|
158
|
+
* T1_EPI.ppg
|
|
159
|
+
* T2_EPI.ppg
|
|
160
|
+
* T2S_EPI.ppg
|
|
161
|
+
* SPIRAL.ppg
|
|
162
|
+
* DtiSpiral.ppg
|
|
163
|
+
* UTE.ppg
|
|
164
|
+
* UTE3D.ppg
|
|
165
|
+
* ZTE.ppg
|
|
166
|
+
* CSI.ppg
|
|
167
|
+
* FieldMap.ppg
|
|
168
|
+
* NSPECT.ppg
|
|
169
|
+
* PRESS.ppg
|
|
170
|
+
* STEAM.ppg
|
|
171
|
+
* igFLASH.ppg
|
|
172
|
+
|
|
173
|
+
ParaVision v6.0.1
|
|
174
|
+
"""""""""""""""""
|
|
175
|
+
Compatible data set types:
|
|
176
|
+
|
|
177
|
+
* **fid**
|
|
178
|
+
* **2dseq**
|
|
179
|
+
* **rawdata.job0**
|
|
180
|
+
* **rawdata.Navigator**
|
|
181
|
+
|
|
182
|
+
Compatible pulse sequences for **fid** data sets:
|
|
183
|
+
|
|
184
|
+
* FLASH.ppg,
|
|
185
|
+
* FLASHAngio.ppg
|
|
186
|
+
* IgFLASH.ppg
|
|
187
|
+
* MGE.ppg
|
|
188
|
+
* MSME.ppg
|
|
189
|
+
* RARE.ppg
|
|
190
|
+
* FAIR_RARE.ppg
|
|
191
|
+
* RAREVTR.ppg
|
|
192
|
+
* RAREst.ppg
|
|
193
|
+
* MDEFT.ppg
|
|
194
|
+
* FISP.ppg
|
|
195
|
+
* FLOWMAP.ppg
|
|
196
|
+
* DtiStandard.ppg
|
|
197
|
+
* EPI.ppg
|
|
198
|
+
* FAIR_EPI.ppg
|
|
199
|
+
* CASL_EPI.ppg
|
|
200
|
+
* DtiEpi.ppg
|
|
201
|
+
* T1_EPI.ppg
|
|
202
|
+
* T2_EPI.ppg
|
|
203
|
+
* T2S_EPI.ppg
|
|
204
|
+
* SPIRAL.ppg
|
|
205
|
+
* DtiSpiral.ppg
|
|
206
|
+
* UTE.ppg
|
|
207
|
+
* UTE3D.ppg
|
|
208
|
+
* ZTE.ppg
|
|
209
|
+
* CSI.ppg
|
|
210
|
+
* FieldMap.ppg
|
|
211
|
+
* SINGLEPULSE.ppg
|
|
212
|
+
* NSPECT.ppg
|
|
213
|
+
* EPSI.ppg
|
|
214
|
+
* PRESS.ppg
|
|
215
|
+
* STEAM.ppg
|
|
216
|
+
* ISIS.ppg
|
|
217
|
+
* CPMG.ppg
|
|
218
|
+
* RfProfile.ppg
|
|
219
|
+
|
|
220
|
+
ParaVision v360
|
|
221
|
+
"""""""""""""""
|
|
222
|
+
Compatible data set types:
|
|
223
|
+
|
|
224
|
+
* **2dseq**
|
|
225
|
+
* **rawdata.job0**
|
|
226
|
+
* **rawdata.Navigator**
|
|
227
|
+
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
brukerapi/__init__.py,sha256=lT95qTFTZoyKk5vKYR3lPIdoLY6y4r8eOJcbk_wTy0g,83
|
|
2
|
-
brukerapi/cli.py,sha256=
|
|
2
|
+
brukerapi/cli.py,sha256=eHvbg7JHCRgS9LO8nkKplMu9q3ZDj03uvSGsqLZ4H0g,4167
|
|
3
3
|
brukerapi/data.py,sha256=qdG404FHfWqk2g59E1qmtGpEghTKWcavt_kzvbo2WN8,203
|
|
4
|
-
brukerapi/dataset.py,sha256=
|
|
4
|
+
brukerapi/dataset.py,sha256=otp-8N3n4HZc6IHp86PQ_2qXlPt3vzCdLiDYo3BviNk,25049
|
|
5
5
|
brukerapi/exceptions.py,sha256=XHX6vtjPCqNMConAbT0IDjdiTIhHZe8kqjL12eBJ0Fg,9234
|
|
6
6
|
brukerapi/folders.py,sha256=4JvAXbekqI0BTU3EBlSuObGio9wnKiuIm8Ggiprdjuw,17605
|
|
7
|
-
brukerapi/jcampdx.py,sha256=
|
|
7
|
+
brukerapi/jcampdx.py,sha256=he6Y0cdeMzbsg7Ls0UX3iQ37677YikNkEjGAr27aPws,25218
|
|
8
8
|
brukerapi/mergers.py,sha256=IyNMesrhkdmexQgpO7vetaCJ-TSgN6zIatkLOv3mRMo,4067
|
|
9
|
-
brukerapi/schemas.py,sha256=
|
|
10
|
-
brukerapi/splitters.py,sha256=
|
|
9
|
+
brukerapi/schemas.py,sha256=o9c9PsxfZt0bYoeN4JXycSpAyRYOXocZXDTcnR9G-IY,25061
|
|
10
|
+
brukerapi/splitters.py,sha256=GZFvuDryBiWL7u2QrldWyd3-5btmATaYpMynWJOPIwM,15402
|
|
11
11
|
brukerapi/utils.py,sha256=kDKq1FV_E4mnROHALPEfv9aTfNy_QfIeZE6wB6IAn_E,1604
|
|
12
12
|
brukerapi/config/properties_2dseq_core.json,sha256=3JlQyDWhRiczFhLTXR0NS1OIxWwRljDBRvwlBtUnsfg,3919
|
|
13
13
|
brukerapi/config/properties_2dseq_custom.json,sha256=Kxic-Asg2am-vFtFHaHN_lxZdA8VEBUXlVeSPLbWLBw,9282
|
|
@@ -17,9 +17,9 @@ brukerapi/config/properties_rawdata_core.json,sha256=yksvjh5o4-t1e2VVzDSy_WuF5Qz
|
|
|
17
17
|
brukerapi/config/properties_rawdata_custom.json,sha256=RBNvo1WzZ4oRRq0W9-hknpT7T8If536DEMBg9hyq_4o,2
|
|
18
18
|
brukerapi/config/properties_traj_core.json,sha256=zx2gnPkVj9fUAL1iwixrtoRV7BlJpVTSYA4I-7s9Mzc,1956
|
|
19
19
|
brukerapi/config/properties_traj_custom.json,sha256=-KWibjBW62-wbe6z28z9iK50kAIAyYxwtZZru37J1N4,4
|
|
20
|
-
brukerapi-0.1.
|
|
21
|
-
brukerapi-0.1.
|
|
22
|
-
brukerapi-0.1.
|
|
23
|
-
brukerapi-0.1.
|
|
24
|
-
brukerapi-0.1.
|
|
25
|
-
brukerapi-0.1.
|
|
20
|
+
brukerapi-0.1.10.dist-info/licenses/LICENSE,sha256=qrKdH1kPjQsHQZxAS6dOSoPKyhrI0nKtNFVhG-fjDJw,1064
|
|
21
|
+
brukerapi-0.1.10.dist-info/METADATA,sha256=sIQDg55peXquqazXBn75rj2QXVJcanAZEX3jpFfMH0U,5317
|
|
22
|
+
brukerapi-0.1.10.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
23
|
+
brukerapi-0.1.10.dist-info/entry_points.txt,sha256=GkMTo84oMksVEhkrItYbnegKXFu0jyQHfOAvAn8z-Wo,46
|
|
24
|
+
brukerapi-0.1.10.dist-info/top_level.txt,sha256=32V6nLorM2P3LQY_gPPKEgDbeTF0N-HCAyUeEUsf2GU,10
|
|
25
|
+
brukerapi-0.1.10.dist-info/RECORD,,
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: brukerapi
|
|
3
|
-
Version: 0.1.9
|
|
4
|
-
Summary: Bruker API
|
|
5
|
-
Home-page: https://github.com/isi-nmr/brukerapi-python
|
|
6
|
-
Download-URL: https://github.com/isi-nmr/brukerapi-python/releases/latest
|
|
7
|
-
Author: Tomas Psorn
|
|
8
|
-
Author-email: tomaspsorn@isibrno.cz
|
|
9
|
-
License: MIT
|
|
10
|
-
License-File: LICENSE
|
|
11
|
-
Requires-Dist: numpy
|
|
12
|
-
Requires-Dist: pyyaml
|
|
13
|
-
|
|
File without changes
|
|
File without changes
|
|
File without changes
|