-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathfileformats.html
260 lines (233 loc) · 18.5 KB
/
fileformats.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
<!DOCTYPE html>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Set or return list of registered file formats that we can read — fileformats • nat</title><!-- favicons --><link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png"><link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png"><link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png"><link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png"><link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png"><!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script><!-- Bootstrap --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous"><script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script><!-- bootstrap-toc --><link rel="stylesheet" href="../bootstrap-toc.css"><script src="../bootstrap-toc.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous"><!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="../pkgdown.css" rel="stylesheet"><script src="../pkgdown.js"></script><meta property="og:title" content="Set or return list of registered file formats that we can read — fileformats"><meta property="og:description" content="fileformats returns format names, a format definition
list or a table of information about the formats that match the given
filter conditions.
registerformat registers a format in the io registry
getformatreader gets the function to read a file
getformatwriter gets the function to write a file"><meta property="og:image" content="/logo.svg"><!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]--></head><body data-spy="scroll" data-target="#toc">
<div class="container template-reference-topic">
<header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span class="navbar-brand">
<a class="navbar-link" href="../index.html">nat</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="">1.10.4</span>
</span>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav"><li>
<a href="../index.html">
<span class="fa fa-home fa-lg"></span>
</a>
</li>
<li>
<a href="../reference/index.html">Reference</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
Articles
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu"><li>
<a href="../articles/neurons-intro.html">Introduction to neurons and neuronlists</a>
</li>
<li>
<a href="../articles/neurons-as-graph.html">Working with individual neurons as graph structures</a>
</li>
<li>
<a href="../articles/plotly.html">3D graphics</a>
</li>
<li>
<a href="../articles/NeuroGeometry.html">NeuroGeometry: Analysing 3D morphology of neurons</a>
</li>
</ul></li>
<li>
<a href="../articles/Installation.html">Installation</a>
</li>
<li>
<a href="../index.html#learn">Learn</a>
</li>
<li>
<a href="../index.html#help">Help</a>
</li>
<li>
<a href="../news/index.html">Changelog</a>
</li>
</ul><ul class="nav navbar-nav navbar-right"><li>
<a href="https://natverse.github.io" class="external-link">natverse</a>
</li>
<li>
<a href="https://github.com/natverse/nat" class="external-link">
<span class="fa fa-github fa-lg"></span>
</a>
</li>
</ul></div><!--/.nav-collapse -->
</div><!--/.container -->
</div><!--/.navbar -->
</header><div class="row">
<div class="col-md-9 contents">
<div class="page-header">
<h1>Set or return list of registered file formats that we can read</h1>
<small class="dont-index">Source: <a href="https://github.com/natverse/nat/blob/HEAD/R/neuron-io.R" class="external-link"><code>R/neuron-io.R</code></a></small>
<div class="hidden name"><code>fileformats.Rd</code></div>
</div>
<div class="ref-description">
<p><code>fileformats</code> returns format names, a format definition
list or a table of information about the formats that match the given
filter conditions.</p>
<p><code>registerformat</code> registers a format in the io registry</p>
<p><code>getformatreader</code> gets the function to read a file</p>
<p><code>getformatwriter</code> gets the function to write a file</p>
</div>
<div id="ref-usage">
<div class="sourceCode"><pre class="sourceCode r"><code><span class="fu">fileformats</span><span class="op">(</span>
format <span class="op">=</span> <span class="cn">NULL</span>,
ext <span class="op">=</span> <span class="cn">NULL</span>,
read <span class="op">=</span> <span class="cn">NULL</span>,
write <span class="op">=</span> <span class="cn">NULL</span>,
class <span class="op">=</span> <span class="cn">NULL</span>,
rval <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"names"</span>, <span class="st">"info"</span>, <span class="st">"all"</span><span class="op">)</span>
<span class="op">)</span>
<span class="fu">registerformat</span><span class="op">(</span>
format <span class="op">=</span> <span class="cn">NULL</span>,
ext <span class="op">=</span> <span class="va">format</span>,
read <span class="op">=</span> <span class="cn">NULL</span>,
write <span class="op">=</span> <span class="cn">NULL</span>,
magic <span class="op">=</span> <span class="cn">NULL</span>,
magiclen <span class="op">=</span> <span class="cn">NA_integer_</span>,
class <span class="op">=</span> <span class="cn">NULL</span>
<span class="op">)</span>
<span class="fu">getformatreader</span><span class="op">(</span><span class="va">file</span>, class <span class="op">=</span> <span class="cn">NULL</span><span class="op">)</span>
<span class="fu">getformatwriter</span><span class="op">(</span>format <span class="op">=</span> <span class="cn">NULL</span>, file <span class="op">=</span> <span class="cn">NULL</span>, ext <span class="op">=</span> <span class="cn">NULL</span>, class <span class="op">=</span> <span class="cn">NULL</span><span class="op">)</span></code></pre></div>
</div>
<div id="arguments">
<h2>Arguments</h2>
<dl><dt>format</dt>
<dd><p>Character vector naming the format</p></dd>
<dt>ext</dt>
<dd><p>Character vector of file extensions (including periods)</p></dd>
<dt>read, write</dt>
<dd><p>Functions to read and write this format</p></dd>
<dt>class</dt>
<dd><p>The S3 class for the format (character vector e.g. 'neuron')</p></dd>
<dt>rval</dt>
<dd><p>Character vector choosing what kind of return value
<code>fileformats</code> will give.</p></dd>
<dt>magic</dt>
<dd><p>Function to test whether a file is of this format</p></dd>
<dt>magiclen</dt>
<dd><p>Optional integer specifying maximum number of bytes required
from file header to determine file's type.</p></dd>
<dt>file</dt>
<dd><p>Path to a file</p></dd>
</dl></div>
<div id="value">
<h2>Value</h2>
<ul><li><p><code>fileformats</code> returns a character vector, matrix or list
according to the value of rval.</p></li>
<li><p><code>getformatreader</code> returns a list. The reader can be accessed
with <code>$read</code> and the format can be accessed by <code>$format</code>.</p></li>
<li><p><code>getformatwriter</code> returns a list. The writer can be accessed
with <code>$write</code>.</p></li>
</ul></div>
<div id="details">
<h2>Details</h2>
<p>if a <code>format</code> argument is passed to <code>fileformats</code> it will
be matched with partial string matching and iif a unique match exists that
will be returned.</p>
<p><code>getformatreader</code> starts by reading a set number of bytes from
the start off the current file and then checks using file extension and
magic functions to see if it can identify the file. Presently formats are
in a queue in alphabetical order, dispatching on the first match.</p>
</div>
<div id="getformatwriter-output-file">
<h2>getformatwriter output file</h2>
<p>If <code>getformatwriter</code> is passed a
<code>file</code> argument, it will be processed based on the registered
fileformats information and the <code>ext</code> argument to give a final output
path in the <code>$file</code> element of the returned <code>list</code>.</p>
<p>If <code>ext='.someext'</code> <code>getformatwriter</code> will use the specified
extension to overwrite the default value returned by <code>fileformats</code>.</p>
<p>If <code>ext=NULL</code>, the default, and <code>file='somefilename.someext'</code>
then <code>file</code> will be untouched and <code>ext</code> will be set to
<code>'someext'</code> (overriding the value returned by <code>fileformats</code>).</p>
<p>If <code>file='somefile_without_extension'</code> then the supplied or
calculated extension will be appended to <code>file</code>.</p>
<p>If <code>ext=NA</code> then the input <code>file</code> name will not be touched (even
if it has no extension at all).</p>
<p>Note that if <code>ext=NULL</code> or <code>ext=NA</code>, then only the specified
format or, failing that, the <code>file</code> extension will be used to query
the fileformats database for a match.</p>
<p>See <code><a href="write.neuron.html">write.neuron</a></code> for code to make this discussion more
concrete.</p>
</div>
<div id="see-also">
<h2>See also</h2>
<div class="dont-index"><p><code><a href="write.neuron.html">write.neuron</a></code></p></div>
</div>
<div id="ref-examples">
<h2>Examples</h2>
<div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span class="co"># information about the currently registered file formats</span></span>
<span class="r-in"><span class="fu">fileformats</span><span class="op">(</span>rval<span class="op">=</span><span class="st">'info'</span><span class="op">)</span></span>
<span class="r-out co"><span class="r-pr">#></span> format class ext read write magic</span>
<span class="r-out co"><span class="r-pr">#></span> 1 amiralandmarks landmarks .landmarkAscii TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 2 amiralandmarks landmarks .landmarkBin TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 3 amiralandmarks landmarks .am TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 4 amiralandmarks landmarks .amiramesh TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 5 amiramesh im3d .am TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 6 amiramesh im3d .amiramesh TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 7 cmtklandmarks landmarks .landmarks TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 8 fijilandmarks landmarks .points TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 9 fijitraces neuron .traces TRUE FALSE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 10 fijitraces neuron .xml TRUE FALSE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 11 hxlineset neuron .am TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 12 hxskel neuron .am TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 13 hxsurf hxsurf .surf TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 14 hxsurf hxsurf .am TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 15 hxsurf hxsurf .amiramesh TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 16 neuroml neuron .xml TRUE FALSE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 17 neuroml neuron .nml TRUE FALSE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 18 neuron.obj neuron .obj TRUE TRUE FALSE</span>
<span class="r-out co"><span class="r-pr">#></span> 19 neuron.ply neuron .ply TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 20 nrrd im3d .nrrd TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 21 nrrd im3d .nhdr TRUE TRUE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 22 qs neuron .qs TRUE TRUE FALSE</span>
<span class="r-out co"><span class="r-pr">#></span> 23 rds neuron .rds TRUE TRUE FALSE</span>
<span class="r-out co"><span class="r-pr">#></span> 24 rdsb neuron .rdsb TRUE TRUE FALSE</span>
<span class="r-out co"><span class="r-pr">#></span> 25 swc neuron .swc TRUE TRUE FALSE</span>
<span class="r-out co"><span class="r-pr">#></span> 26 swcng ngraph .swc TRUE FALSE FALSE</span>
<span class="r-out co"><span class="r-pr">#></span> 27 vaa3draw im3d .v3d TRUE FALSE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 28 vaa3draw im3d .v3draw TRUE FALSE TRUE</span>
<span class="r-out co"><span class="r-pr">#></span> 29 vtk neuron .vtk FALSE TRUE FALSE</span>
<span class="r-in"><span class="kw">if</span> <span class="op">(</span><span class="cn">FALSE</span><span class="op">)</span> <span class="op">{</span></span>
<span class="r-in"><span class="fu">registerformat</span><span class="op">(</span><span class="st">"swc"</span>,read<span class="op">=</span><span class="va">read.swc</span>,write<span class="op">=</span><span class="va">read.swc</span>,magic<span class="op">=</span><span class="va">is.swc</span>,magiclen<span class="op">=</span><span class="fl">10</span>,</span>
<span class="r-in"> class<span class="op">=</span><span class="st">'neuron'</span><span class="op">)</span></span>
<span class="r-in"><span class="op">}</span></span>
<span class="r-in"><span class="va">swc</span><span class="op">=</span><span class="fu"><a href="https://rdrr.io/r/base/tempfile.html" class="external-link">tempfile</a></span><span class="op">(</span>fileext <span class="op">=</span> <span class="st">'.swc'</span><span class="op">)</span></span>
<span class="r-in"><span class="fu"><a href="write.neuron.html">write.neuron</a></span><span class="op">(</span><span class="va">Cell07PNs</span><span class="op">[[</span><span class="fl">1</span><span class="op">]</span><span class="op">]</span>, <span class="va">swc</span><span class="op">)</span></span>
<span class="r-in"><span class="fu"><a href="https://rdrr.io/r/base/stopifnot.html" class="external-link">stopifnot</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/Logic.html" class="external-link">isTRUE</a></span><span class="op">(</span><span class="fu">getformatreader</span><span class="op">(</span><span class="va">swc</span><span class="op">)</span><span class="op">$</span><span class="va">format</span><span class="op">==</span><span class="st">'swc'</span><span class="op">)</span><span class="op">)</span></span>
<span class="r-in"><span class="fu"><a href="https://rdrr.io/r/base/unlink.html" class="external-link">unlink</a></span><span class="op">(</span><span class="va">swc</span><span class="op">)</span></span>
</code></pre></div>
</div>
</div>
<div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar">
<nav id="toc" data-toggle="toc" class="sticky-top"><h2 data-toc-skip>Contents</h2>
</nav></div>
</div>
<footer><div class="copyright">
<p></p><p>Developed by Gregory Jefferis, James Manton, Sridhar Jagannathan.</p>
</div>
<div class="pkgdown">
<p></p><p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.0.1.</p>
</div>
</footer></div>
</body></html>