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 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 splitted data sets",
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 querry')
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]*\*\(\d*\.?\d*\)', val_str):
459
- match = re.search('@[0-9]*\*\(\d*\.?\d*\)', val_str)
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 occurence of = in jcampdx line divides key and value pair
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 seralize(self, data, layouts):
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 splited
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, splitted data sets will we writen to drive
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 splitted data sets
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 splitted data sets
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 parameteres
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=2ABei7RcKh1yjXwjt1mjohhf_bs42KpcJ9VDgrs8xW0,4171
2
+ brukerapi/cli.py,sha256=eHvbg7JHCRgS9LO8nkKplMu9q3ZDj03uvSGsqLZ4H0g,4167
3
3
  brukerapi/data.py,sha256=qdG404FHfWqk2g59E1qmtGpEghTKWcavt_kzvbo2WN8,203
4
- brukerapi/dataset.py,sha256=azPsK0Z_BzCPre4Wc3d_QQK50JiihLD_koY3T419U_w,25048
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=WVTXJU4STAMz5aQXkmVp9ToU9PRLo2J9i9IDVpBKxYQ,25191
7
+ brukerapi/jcampdx.py,sha256=he6Y0cdeMzbsg7Ls0UX3iQ37677YikNkEjGAr27aPws,25218
8
8
  brukerapi/mergers.py,sha256=IyNMesrhkdmexQgpO7vetaCJ-TSgN6zIatkLOv3mRMo,4067
9
- brukerapi/schemas.py,sha256=5-D67KjSchtWy65CJlfcXb4NdJB02UoVIYrEfulCyVc,24962
10
- brukerapi/splitters.py,sha256=idDwerSDs9MKrXpuTDEOsAiMxrBKL8_pd1rPX5b-g-E,15412
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.9.dist-info/LICENSE,sha256=qrKdH1kPjQsHQZxAS6dOSoPKyhrI0nKtNFVhG-fjDJw,1064
21
- brukerapi-0.1.9.dist-info/METADATA,sha256=yszIVM8jtQF-dUwXGXPkTHhJJzuut_OAM1k3PypSG1k,337
22
- brukerapi-0.1.9.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
23
- brukerapi-0.1.9.dist-info/entry_points.txt,sha256=GkMTo84oMksVEhkrItYbnegKXFu0jyQHfOAvAn8z-Wo,46
24
- brukerapi-0.1.9.dist-info/top_level.txt,sha256=32V6nLorM2P3LQY_gPPKEgDbeTF0N-HCAyUeEUsf2GU,10
25
- brukerapi-0.1.9.dist-info/RECORD,,
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,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.38.4)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -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
-