Skip to content
Snippets Groups Projects
OpenBis.html 43.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                    "http://www.w3.org/TR/REC-html40/loose.dtd">
    <html>
    <head>
      <title>Description of OpenBis</title>
      <meta name="keywords" content="OpenBis">
      <meta name="description" content="">
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <meta name="generator" content="m2html v1.5 &copy; 2003-2005 Guillaume Flandin">
      <meta name="robots" content="index, follow">
      <link type="text/css" rel="stylesheet" href="../m2html.css">
    </head>
    <body>
    <a name="_top"></a>
    <div><a href="../index.html">Home</a> &gt;  <a href="index.html">matlab-openbis</a> &gt; OpenBis.m</div>
    
    <!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png">&nbsp;Master index</a></td>
    <td align="right"><a href="index.html">Index for matlab-openbis&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
    
    <h1>OpenBis
    </h1>
    
    <h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
    <div class="box"><strong></strong></div>
    
    <h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
    <div class="box"><strong>This is a script file. </strong></div>
    
    <h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
    <div class="fragment"><pre class="comment"></pre></div>
    
    <!-- crossreference -->
    <h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
    This function calls:
    <ul style="list-style-image:url(../matlabicon.gif)">
    <li><a href="OpenBis.html" class="code" title="">OpenBis</a>	</li><li><a href="df_to_table.html" class="code" title="function [matlab_table] = df_to_table(df)">df_to_table</a>	df_to_table</li><li><a href="user_url_pw_inputdlg.html" class="code" title="function [url, user, pw] = user_url_pw_inputdlg">user_url_pw_inputdlg</a>	user_url_pw_inputdlg</li></ul>
    This function is called by:
    <ul style="list-style-image:url(../matlabicon.gif)">
    <li><a href="OpenBis.html" class="code" title="">OpenBis</a>	</li><li><a href="obi_test.html" class="code" title="function pass = obi_test(varargin)">obi_test</a>	obi_test Testing function for the Matlab openBIS Toolbox</li></ul>
    <!-- crossreference -->
    
    <h2><a name="_subfunctions"></a>SUBFUNCTIONS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
    <ul style="list-style-image:url(../matlabicon.gif)">
    <li><a href="#_sub1" class="code">function obj = OpenBis(varargin)</a></li><li><a href="#_sub2" class="code">function logout(obj)</a></li><li><a href="#_sub3" class="code">function tf= is_session_active(obj)</a></li><li><a href="#_sub4" class="code">function token = token(obj)</a></li><li><a href="#_sub5" class="code">function experiment_types = get_experiment_types(obj)</a></li><li><a href="#_sub6" class="code">function sample_types = get_sample_types(obj)</a></li><li><a href="#_sub7" class="code">function material_types = get_material_types(obj)</a></li><li><a href="#_sub8" class="code">function dataset_types = get_dataset_types(obj)</a></li><li><a href="#_sub9" class="code">function terms = get_terms(obj)</a></li><li><a href="#_sub10" class="code">function tags = get_tags(obj)</a></li><li><a href="#_sub11" class="code">function spaces = get_spaces(obj)</a></li><li><a href="#_sub12" class="code">function space = get_space(obj, code)</a></li><li><a href="#_sub13" class="code">function space = new_space(obj, code, description)</a></li><li><a href="#_sub14" class="code">function delete_space(obj, code, reason)</a></li><li><a href="#_sub15" class="code">function projects = get_projects(obj, space, code)</a></li><li><a href="#_sub16" class="code">function project = get_project(obj, id)</a></li><li><a href="#_sub17" class="code">function project = new_project(obj, space, code, description)</a></li><li><a href="#_sub18" class="code">function delete_project(obj, code, reason)</a></li><li><a href="#_sub19" class="code">function experiments = get_experiments(obj, varargin)</a></li><li><a href="#_sub20" class="code">function experiment = get_experiment(obj, id)</a></li><li><a href="#_sub21" class="code">function exp = new_experiment(obj, type, code, project)</a></li><li><a href="#_sub22" class="code">function objects = get_objects(obj, varargin)</a></li><li><a href="#_sub23" class="code">function object = get_object(obj, id)</a></li><li><a href="#_sub24" class="code">function object = new_object(obj, type, space, code)</a></li><li><a href="#_sub25" class="code">function object = delete_object(obj, object, reason)</a></li><li><a href="#_sub26" class="code">function datasets = get_datasets(obj, varargin)</a></li><li><a href="#_sub27" class="code">function dataset = get_dataset(obj, permid, varargin)</a></li><li><a href="#_sub28" class="code">function files = get_dataset_files(obj, dataset, varargin)</a></li><li><a href="#_sub29" class="code">function path_to_file = dataset_download(obj, dataset, files, varargin)</a></li><li><a href="#_sub30" class="code">function dataset = new_dataset(obj, type, object, file_list, varargin)</a></li><li><a href="#_sub31" class="code">function dataset = new_dataset_container(obj, type, experiment, object)</a></li></ul>
    
    <h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
    <div class="fragment"><pre>0001 classdef <a href="OpenBis.html" class="code" title="">OpenBis</a>
    0002     <span class="comment">% OpenBis   High-level class for interacting with Python (pyBIS) Openbis objects</span>
    0003     <span class="comment">% This class creates a MATLAB OpenBis object that encapsulates the Python (pyBIS) Openbis object</span>
    0004     <span class="comment">% and provides methods for interacting with the Python (pyBIS) Openbis object.</span>
    0005     <span class="comment">%</span>
    0006     <span class="comment">% Usage:</span>
    0007     <span class="comment">% Construct the MATLAB OpenBis object like this:</span>
    0008     <span class="comment">% obi = OpenBis()</span>
    0009     <span class="comment">% This will ask for URL, user name and password to connect to openBIS server.</span>
    0010     <span class="comment">% These can also be provided as optional input arguments.</span>
    0011     <span class="comment">%</span>
    0012     <span class="comment">% Methods are generally called like this:</span>
    0013     <span class="comment">% spaces = obi.get_spaces()</span>
    0014     <span class="comment">% space = obi.get_space(code)</span>
    0015     <span class="comment">%</span>
    0016     <span class="comment">% Logout:</span>
    0017     <span class="comment">% obi.logout()</span>
    0018     
    0019     
    0020     properties
    0021         pybis <span class="comment">% Python Openbis object</span>
    0022     <span class="keyword">end</span>
    0023     
    0024     
    0025     methods
    0026         
    0027         <span class="comment">%% Constructor method</span>
    0028         <a name="_sub0" href="#_subfunctions" class="code">function obj = OpenBis(varargin)</a>
    0029             <span class="comment">% OpenBis   Constructor method for class OpenBis</span>
    0030             <span class="comment">% Creates the Python Openbis object and logs into the server</span>
    0031             <span class="comment">% Optional positional input arguments:</span>
    0032             <span class="comment">% url ... URL of the openBIS server (incl. port)</span>
    0033             <span class="comment">% user ... user name for openBIS</span>
    0034             <span class="comment">% pw ... password for openBIS</span>
    0035             <span class="comment">% Usage:</span>
    0036             <span class="comment">% obi = OpenBis() --&gt; opens UI to enter URL, user name and password</span>
    0037             <span class="comment">% obi = OpenBis('server_url', 'user_name', 'user_password')</span>
    0038             
    0039             <span class="keyword">if</span> nargin &gt; 0
    0040                 url = varargin{1};
    0041                 user = varargin{2};
    0042                 pw = varargin{3};
    0043             <span class="keyword">else</span>
    0044                 [url, user, pw] = <a href="user_url_pw_inputdlg.html" class="code" title="function [url, user, pw] = user_url_pw_inputdlg">user_url_pw_inputdlg</a>;
    0045             <span class="keyword">end</span>
    0046             
    0047             o = py.pybis.Openbis(url, pyargs(<span class="string">'verify_certificates'</span>, 0));
    0048             o.login(user, pw, pyargs(<span class="string">'save_token'</span>, 1));
    0049             obj.pybis = o;
    0050         <span class="keyword">end</span>
    0051         
    0052         <a name="_sub1" href="#_subfunctions" class="code">function logout(obj)</a>
    0053             <span class="comment">%logout</span>
    0054             <span class="comment">% Log out of openBIS.</span>
    0055             <span class="comment">% Usage:</span>
    0056             <span class="comment">% obi.logout()</span>
    0057             <span class="comment">%</span>
    0058             <span class="comment">% After logout, the session token is no longer valid.</span>
    0059             
    0060             obj.pybis.logout();
    0061         <span class="keyword">end</span>
    0062         
    0063         <a name="_sub2" href="#_subfunctions" class="code">function tf= is_session_active(obj)</a>
    0064             <span class="comment">%is_session_active</span>
    0065             <span class="comment">% Check if the session token is still active. Returns true or false.</span>
    0066             <span class="comment">% Usage:</span>
    0067             <span class="comment">% true_false = obi.is_session_active()</span>
    0068             
    0069             tf  = obj.pybis.is_session_active();
    0070         <span class="keyword">end</span>
    0071         
    0072         <a name="_sub3" href="#_subfunctions" class="code">function token = token(obj)</a>
    0073             <span class="comment">%token</span>
    0074             <span class="comment">% Returns the current session token.</span>
    0075             <span class="comment">% Usage:</span>
    0076             <span class="comment">% token = obi.token()</span>
    0077             
    0078             <a href="#_sub4" class="code" title="subfunction token = token(obj)">token</a>  = char(obj.pybis.token);
    0079         <span class="keyword">end</span>
    0080         
    0081         <span class="comment">%% Masterdata methods</span>
    0082         <span class="comment">% this section defines Matlab equivalents of the following pyBIS methods:</span>
    0083         <span class="comment">%   get_experiment_types</span>
    0084         <span class="comment">%   get_sample_types</span>
    0085         <span class="comment">%   get_material_types</span>
    0086         <span class="comment">%   get_dataset_types</span>
    0087         <span class="comment">%   get_terms</span>
    0088         <span class="comment">%   get_tags</span>
    0089         
    0090         <a name="_sub4" href="#_subfunctions" class="code">function experiment_types = get_experiment_types(obj)</a>
    0091             <span class="comment">%get_experiment_types</span>
    0092             <span class="comment">% Return a table of all available experiment types.</span>
    0093             <span class="comment">% Usage:</span>
    0094             <span class="comment">% experiment_types = obi.get_experiment_types()</span>
    0095             
    0096             experiment_types = obj.pybis.get_experiment_types();
    0097             experiment_types = <a href="df_to_table.html" class="code" title="function [matlab_table] = df_to_table(df)">df_to_table</a>(experiment_types.df);
    0098         <span class="keyword">end</span>
    0099         
    0100         <a name="_sub5" href="#_subfunctions" class="code">function sample_types = get_sample_types(obj)</a>
    0101             <span class="comment">%get_sample_types</span>
    0102             <span class="comment">% Return table of all available sample types.</span>
    0103             <span class="comment">% Usage:</span>
    0104             <span class="comment">% sample_types = obi.get_sample_types()</span>
    0105             
    0106             sample_types = obj.pybis.get_sample_types();
    0107             sample_types = <a href="df_to_table.html" class="code" title="function [matlab_table] = df_to_table(df)">df_to_table</a>(sample_types.df);
    0108         <span class="keyword">end</span>
    0109         
    0110         <a name="_sub6" href="#_subfunctions" class="code">function material_types = get_material_types(obj)</a>
    0111             <span class="comment">%get_material_types</span>
    0112             <span class="comment">% Return table of all available material types.</span>
    0113             <span class="comment">% Usage:</span>
    0114             <span class="comment">% material_types = obi.get_material_types()</span>
    0115             
    0116             material_types = obj.pybis.get_material_types();
    0117             material_types = <a href="df_to_table.html" class="code" title="function [matlab_table] = df_to_table(df)">df_to_table</a>(material_types.df);
    0118         <span class="keyword">end</span>
    0119         
    0120         <a name="_sub7" href="#_subfunctions" class="code">function dataset_types = get_dataset_types(obj)</a>
    0121             <span class="comment">%get_dataset_types</span>
    0122             <span class="comment">% Return table of all available dataset types.</span>
    0123             <span class="comment">% Usage:</span>
    0124             <span class="comment">% dataset_types = obi.get_dataset_types()</span>
    0125             
    0126             dataset_types = obj.pybis.get_dataset_types();
    0127             dataset_types = <a href="df_to_table.html" class="code" title="function [matlab_table] = df_to_table(df)">df_to_table</a>(dataset_types.df);
    0128         <span class="keyword">end</span>
    0129         
    0130         <a name="_sub8" href="#_subfunctions" class="code">function terms = get_terms(obj)</a>
    0131             <span class="comment">%get_terms</span>
    0132             <span class="comment">% Return table of all available terms.</span>
    0133             <span class="comment">% Usage:</span>
    0134             <span class="comment">% terms = obi.get_terms()</span>
    0135             
    0136             terms = obj.pybis.get_terms();
    0137             terms = <a href="df_to_table.html" class="code" title="function [matlab_table] = df_to_table(df)">df_to_table</a>(terms.df);
    0138         <span class="keyword">end</span>
    0139         
    0140         <a name="_sub9" href="#_subfunctions" class="code">function tags = get_tags(obj)</a>
    0141             <span class="comment">%get_tags</span>
    0142             <span class="comment">% Return table of all available tags.</span>
    0143             <span class="comment">% Usage:</span>
    0144             <span class="comment">% tags = obi.get_tags()</span>
    0145             
    0146             tags = obj.pybis.get_tags();
    0147             tags = <a href="df_to_table.html" class="code" title="function [matlab_table] = df_to_table(df)">df_to_table</a>(tags.df);
    0148         <span class="keyword">end</span>
    0149         
    0150         
    0151         <span class="comment">%% Space methods</span>
    0152         <span class="comment">% this section defines Matlab equivalents of the following pyBIS methods:</span>
    0153         <span class="comment">%   get_spaces</span>
    0154         <span class="comment">%   get_space</span>
    0155         <span class="comment">%   new_space</span>
    0156         <span class="comment">%   space.delete</span>
    0157         
    0158         <a name="_sub10" href="#_subfunctions" class="code">function spaces = get_spaces(obj)</a>
    0159             <span class="comment">%get_spaces</span>
    0160             <span class="comment">% Return table of all available spaces.</span>
    0161             <span class="comment">% Usage:</span>
    0162             <span class="comment">% spaces = obi.get_spaces()</span>
    0163             
    0164             spaces = obj.pybis.get_spaces();
    0165             spaces = <a href="df_to_table.html" class="code" title="function [matlab_table] = df_to_table(df)">df_to_table</a>(spaces.df);
    0166         <span class="keyword">end</span>
    0167         
    0168         <a name="_sub11" href="#_subfunctions" class="code">function space = get_space(obj, code)</a>
    0169             <span class="comment">%get_space</span>
    0170             <span class="comment">% Fetch space with matching space code and return the space object.</span>
    0171             <span class="comment">% An error is raised if a space with the code is not found on the server.</span>
    0172             <span class="comment">% Required input arguments:</span>
    0173             <span class="comment">% code ... space code</span>
    0174             <span class="comment">% Usage:</span>
    0175             <span class="comment">% space = obi.get_space('code')</span>
    0176             
    0177             space = obj.pybis.get_space(code);
    0178         <span class="keyword">end</span>
    0179         
    0180         <a name="_sub12" href="#_subfunctions" class="code">function space = new_space(obj, code, description)</a>
    0181             <span class="comment">%new_space</span>
    0182             <span class="comment">% Create a new space with code and description and return the space object</span>
    0183             <span class="comment">% Required input arguments:</span>
    0184             <span class="comment">% code ... Space code</span>
    0185             <span class="comment">% description ... Space description</span>
    0186             <span class="comment">% Usage:</span>
    0187             <span class="comment">% space = obi.new_space('code', 'description')</span>
    0188             
    0189             space = obj.pybis.new_space(pyargs(<span class="string">'code'</span>,  code, <span class="keyword">...</span>
    0190                 <span class="string">'description'</span>, description));
    0191             space.save;
    0192         <span class="keyword">end</span>
    0193         
    0194         <a name="_sub13" href="#_subfunctions" class="code">function delete_space(obj, code, reason)</a>
    0195             <span class="comment">%delete_space</span>
    0196             <span class="comment">% Delete space with code and provide a reason for deletion</span>
    0197             <span class="comment">% Required input arguments:</span>
    0198             <span class="comment">% code ... Space code</span>
    0199             <span class="comment">% reason ... reason for deletion</span>
    0200             <span class="comment">% Usage:</span>
    0201             <span class="comment">% obi.delete_space('code', 'reason')</span>
    0202             
    0203             space = obj.pybis.get_space(code);
    0204             space.delete(reason);
    0205         <span class="keyword">end</span>
    0206         
    0207         
    0208         <span class="comment">%% Project methods</span>
    0209         <span class="comment">% this section defines Matlab equivalents of the following pyBIS methods:</span>
    0210         <span class="comment">%   get_projects</span>
    0211         <span class="comment">%   get_project</span>
    0212         <span class="comment">%   new_project</span>
    0213         <span class="comment">%   project.delete</span>
    0214         
    0215         <a name="_sub14" href="#_subfunctions" class="code">function projects = get_projects(obj, space, code)</a>
    0216             <span class="comment">%get_projects</span>
    0217             <span class="comment">% Return table of matching projects.</span>
    0218             <span class="comment">% Input arguments:</span>
    0219             <span class="comment">% space ... space to fetch projects from</span>
    0220             <span class="comment">% project ... fetch projects matching code</span>
    0221             <span class="comment">% Usage:</span>
    0222             <span class="comment">% projects = obi.get_projects('space', 'code')</span>
    0223             
    0224             projects = obj.pybis.get_projects(pyargs(<span class="string">'space'</span>,  space, <span class="string">'code'</span>, code));
    0225             projects = <a href="df_to_table.html" class="code" title="function [matlab_table] = df_to_table(df)">df_to_table</a>(projects.df);
    0226         <span class="keyword">end</span>
    0227         
    0228         <a name="_sub15" href="#_subfunctions" class="code">function project = get_project(obj, id)</a>
    0229             <span class="comment">%get_project</span>
    0230             <span class="comment">% Fetch project with matching project id and return the project object.</span>
    0231             <span class="comment">% An error is raised if a project with the id is not found on the server.</span>
    0232             <span class="comment">% Required input arguments:</span>
    0233             <span class="comment">% id ... project id</span>
    0234             <span class="comment">% Usage:</span>
    0235             <span class="comment">% project = obi.get_project('id')</span>
    0236             
    0237             project = obj.pybis.get_project(id);
    0238         <span class="keyword">end</span>
    0239         
    0240         <a name="_sub16" href="#_subfunctions" class="code">function project = new_project(obj, space, code, description)</a>
    0241             <span class="comment">%new_project</span>
    0242             <span class="comment">% Create a new project in space with code and description</span>
    0243             <span class="comment">% Return the project object</span>
    0244             <span class="comment">% Input arguments</span>
    0245             <span class="comment">% space ... Space code</span>
    0246             <span class="comment">% code ... Project code / id</span>
    0247             <span class="comment">% description ... Project description</span>
    0248             <span class="comment">% Usage:</span>
    0249             <span class="comment">% project = obi.new_project('space', 'code', 'description')</span>
    0250             
    0251             space = obj.pybis.get_space(space);
    0252             project = space.new_project(pyargs(<span class="string">'code'</span>, code,  <span class="string">'description'</span>, description));
    0253             project.save();
    0254         <span class="keyword">end</span>
    0255         
    0256         <a name="_sub17" href="#_subfunctions" class="code">function delete_project(obj, code, reason)</a>
    0257             <span class="comment">%delete_project</span>
    0258             <span class="comment">% Delete project with code and provide a reason for deletion</span>
    0259             <span class="comment">% Required input arguments:</span>
    0260             <span class="comment">% code ... Project code</span>
    0261             <span class="comment">% reason ... reason for deletion</span>
    0262             <span class="comment">% Usage:</span>
    0263             <span class="comment">% obi.delete_project('code', 'reason')</span>
    0264             
    0265             project = obj.pybis.get_project(code);
    0266             project.delete(reason);
    0267         <span class="keyword">end</span>
    0268         
    0269         
    0270         <span class="comment">%% Experiment methods</span>
    0271         <span class="comment">% this section defines the following Matlab methods:</span>
    0272         <span class="comment">%   get_experiments</span>
    0273         <span class="comment">%   get_experiment</span>
    0274         <span class="comment">%   new_experiment</span>
    0275         
    0276         <a name="_sub18" href="#_subfunctions" class="code">function experiments = get_experiments(obj, varargin)</a>
    0277             <span class="comment">%get_experiments</span>
    0278             <span class="comment">% Return table of matching experiments.</span>
    0279             <span class="comment">% Optional input arguments:</span>
    0280             <span class="comment">% space ... space to fetch experiments from</span>
    0281             <span class="comment">% type ... fetch experiments of specific type</span>
    0282             <span class="comment">% project ... project to fetch experiments from</span>
    0283             <span class="comment">% Usage:</span>
    0284             <span class="comment">% experiments = obi.get_experiments()</span>
    0285             <span class="comment">% experiments = obi.get_experiments('space', 'SPACE')</span>
    0286             <span class="comment">% experiments = obi.get_experiments('space', 'SPACE', 'type', 'UNKNOWN')</span>
    0287             
    0288             space = <span class="string">''</span>;
    0289             type = <span class="string">''</span>;
    0290             project = <span class="string">''</span>;
    0291             
    0292             p = inputParser;
    0293             addRequired(p, <span class="string">'obj'</span>);
    0294             addParameter(p, <span class="string">'space'</span>, space, @ischar);
    0295             addParameter(p, <span class="string">'type'</span>, type, @ischar);
    0296             addParameter(p, <span class="string">'project'</span>, project, @ischar);
    0297             parse(p, obj, varargin{:});
    0298             a = p.Results;
    0299             
    0300             experiments = obj.pybis.get_experiments(pyargs(<span class="string">'space'</span>, a.space, <span class="string">'type'</span>, a.type, <span class="string">'project'</span>, a.project));
    0301             experiments = <a href="df_to_table.html" class="code" title="function [matlab_table] = df_to_table(df)">df_to_table</a>(experiments.df);
    0302         <span class="keyword">end</span>
    0303         
    0304         <a name="_sub19" href="#_subfunctions" class="code">function experiment = get_experiment(obj, id)</a>
    0305             <span class="comment">%get_experiment</span>
    0306             <span class="comment">% Return experiment with identifier</span>
    0307             <span class="comment">% ID can be either the Space + Object code (e.g. /SPACE/123456789) or the PermID (e.g. 20181002164551373-1234)</span>
    0308             <span class="comment">% Usage:</span>
    0309             <span class="comment">% exp = obi.get_experiment('/SPACE/PROJECT/EXP')</span>
    0310             <span class="comment">% exp = obi.get_experiment('permID')</span>
    0311             
    0312             experiment = obj.pybis.get_experiment(id);
    0313         <span class="keyword">end</span>
    0314         
    0315         <a name="_sub20" href="#_subfunctions" class="code">function exp = new_experiment(obj, type, code, project)</a>
    0316             <span class="comment">%new_experiment</span>
    0317             <span class="comment">% Create a new experiment of specific type in a defined project</span>
    0318             <span class="comment">% Required input arguments:</span>
    0319             <span class="comment">% type ... new experiment type - see: obi.get_experiment_types()</span>
    0320             <span class="comment">% code ... new experiment code</span>
    0321             <span class="comment">% project ... project for new experiment ('/SPACE/Project')</span>
    0322             <span class="comment">% Usage:</span>
    0323             <span class="comment">% exp = obi.new_experiment('DEFAULT_EXPERIMENT', 'EXP1234', '/SPACE/Project')</span>
    0324             
    0325             <span class="comment">% determine type object</span>
    0326             t = obj.pybis.get_experiment_type(type);
    0327             
    0328             <span class="comment">% determine project type</span>
    0329             p = obj.get_project(project);
    0330             
    0331             <span class="comment">% instantiate a new experiment object</span>
    0332             exp = py.pybis.pybis.Experiment(obj.pybis, pyargs(<span class="string">'type'</span>, t, <span class="string">'code'</span>, code, <span class="string">'project'</span>, p));
    0333             
    0334             <span class="comment">% save experiment</span>
    0335             exp.save();
    0336         <span class="keyword">end</span>
    0337         
    0338         
    0339         <span class="comment">%% Object methods</span>
    0340         <span class="comment">% this section defines following Matlab methods related to openBIS objects / samples:</span>
    0341         <span class="comment">%   get_object</span>
    0342         <span class="comment">%   get_objects</span>
    0343         <span class="comment">%   new_object</span>
    0344         <span class="comment">%   delete_object</span>
    0345         
    0346         <a name="_sub21" href="#_subfunctions" class="code">function objects = get_objects(obj, varargin)</a>
    0347             <span class="comment">%get_objects</span>
    0348             <span class="comment">% Return a table of objects matching specified criteria</span>
    0349             <span class="comment">% Optional keyword arguments:</span>
    0350             <span class="comment">% id ... object identifier ('SPACE/PROJECT/')</span>
    0351             <span class="comment">% Usage:</span>
    0352             <span class="comment">% objects = obi.get_objects()</span>
    0353             <span class="comment">% objects = obi.get_objects('id', 'SPACE/')</span>
    0354             
    0355             defaultId = <span class="string">''</span>;
    0356             
    0357             p = inputParser;
    0358             addRequired(p, <span class="string">'obj'</span>);
    0359             addParameter(p, <span class="string">'id'</span>, defaultId, @ischar);
    0360             parse(p, obj, varargin{:});
    0361             a = p.Results;
    0362            
    0363             objects = obj.pybis.get_objects(a.id);
    0364             objects = <a href="df_to_table.html" class="code" title="function [matlab_table] = df_to_table(df)">df_to_table</a>(objects.df);
    0365         <span class="keyword">end</span>
    0366         
    0367         <a name="_sub22" href="#_subfunctions" class="code">function object = get_object(obj, id)</a>
    0368             <span class="comment">%get_object</span>
    0369             <span class="comment">% Return object (sample) corresponding to the id</span>
    0370             <span class="comment">% ID can be either the Space + Object code (e.g. /SPACE/123456789) or the PermID (e.g. 20181002164551373-1234)</span>
    0371             <span class="comment">% An error is raised if an object with the id is not found on the server.</span>
    0372             <span class="comment">% Required input arguments:</span>
    0373             <span class="comment">% id ... object id</span>
    0374             <span class="comment">% Usage:</span>
    0375             <span class="comment">% object = obi.get_object('id')</span>
    0376             
    0377             object = obj.pybis.get_object(id);
    0378         <span class="keyword">end</span>
    0379         
    0380         <a name="_sub23" href="#_subfunctions" class="code">function object = new_object(obj, type, space, code)</a>
    0381             <span class="comment">%new_object</span>
    0382             <span class="comment">% Create a new object of type in space with code</span>
    0383             <span class="comment">% Return the object</span>
    0384             <span class="comment">% Input arguments</span>
    0385             <span class="comment">% type ... object type</span>
    0386             <span class="comment">% space ... Space code</span>
    0387             <span class="comment">% code ... object code</span>
    0388             <span class="comment">% Usage:</span>
    0389             <span class="comment">% object = obi.new_object('type', 'space', 'code')</span>
    0390             
    0391             object = obj.pybis.new_object(pyargs(<span class="string">'type'</span>, type, <span class="string">'space'</span>, space, <span class="string">'code'</span>, code));
    0392             object.save();
    0393         <span class="keyword">end</span>
    0394         
    0395         <a name="_sub24" href="#_subfunctions" class="code">function object = delete_object(obj, object, reason)</a>
    0396             <span class="comment">%delete_object</span>
    0397             <span class="comment">% Delete object and provide a reason for deletion</span>
    0398             <span class="comment">% Required input arguments:</span>
    0399             <span class="comment">% object ... object returned by get_object / new_object methods</span>
    0400             <span class="comment">% reason ... reason for deletion</span>
    0401             <span class="comment">% Usage:</span>
    0402             <span class="comment">% obi.delete_object(object, 'reason')</span>
    0403             
    0404             object.delete(reason)
    0405         <span class="keyword">end</span>
    0406 
    0407         
    0408         <span class="comment">%% Dataset methods</span>
    0409         <span class="comment">% this section defines following Matlab methods:</span>
    0410         <span class="comment">%   get_datasets</span>
    0411         <span class="comment">%   get_dataset</span>
    0412         <span class="comment">%   get_dataset_files</span>
    0413         <span class="comment">%   dataset_download</span>
    0414         <span class="comment">%   new_dataset</span>
    0415         <span class="comment">%   new_dataset_container</span>
    0416         
    0417         <a name="_sub25" href="#_subfunctions" class="code">function datasets = get_datasets(obj, varargin)</a>
    0418             <span class="comment">%get_datasets</span>
    0419             <span class="comment">% Return table of matching datasets.</span>
    0420             <span class="comment">% Optional input arguments:</span>
    0421             <span class="comment">% code ... dataset code / permId</span>
    0422             <span class="comment">% type ... dataset type</span>
    0423             <span class="comment">% experiment ... datasets in experiment</span>
    0424             <span class="comment">% project ... datasets in project</span>
    0425             <span class="comment">% tags ... datasets with tags</span>
    0426             <span class="comment">% Usage:</span>
    0427             <span class="comment">% datasets = obi.get_datasets()</span>
    0428             <span class="comment">% datasets = obi.get_datasets('type', 'RAW_DATA')</span>
    0429             <span class="comment">% datasets = obi.get_datasets('experiment', '/SPACE/PROJECT/EXPERIMENT')</span>
    0430             
    0431             defaultCode = <span class="string">''</span>;
    0432             defaultType = <span class="string">''</span>;
    0433             defaultExp = <span class="string">''</span>;
    0434             defaultProj = <span class="string">''</span>;
    0435             defaultTags = <span class="string">''</span>;
    0436             
    0437             p = inputParser;
    0438             addRequired(p, <span class="string">'obj'</span>);
    0439             addParameter(p, <span class="string">'code'</span>, defaultCode, @ischar);
    0440             addParameter(p, <span class="string">'type'</span>, defaultType, @ischar);
    0441             addParameter(p, <span class="string">'experiment'</span>, defaultExp, @ischar);
    0442             addParameter(p, <span class="string">'project'</span>, defaultProj, @ischar);
    0443             addParameter(p, <span class="string">'tags'</span>, defaultTags, @ischar);
    0444             parse(p, obj, varargin{:});
    0445             a = p.Results;
    0446             
    0447             datasets = obj.pybis.get_datasets(pyargs(<span class="string">'code'</span>, a.code, <span class="string">'type'</span>, a.type, <span class="string">'experiment'</span>, a.experiment, <span class="keyword">...</span>
    0448                 <span class="string">'project'</span>, a.project, <span class="string">'tags'</span>, a.tags));
    0449             datasets = <a href="df_to_table.html" class="code" title="function [matlab_table] = df_to_table(df)">df_to_table</a>(datasets.df);
    0450         <span class="keyword">end</span>
    0451         
    0452         <a name="_sub26" href="#_subfunctions" class="code">function dataset = get_dataset(obj, permid, varargin)</a>
    0453             <span class="comment">%get_dataset</span>
    0454             <span class="comment">% Get dataset with permId. An error is raised if a dataset with the id is not found on the server.</span>
    0455             <span class="comment">% Input arguments:</span>
    0456             <span class="comment">% permId ... dataset permId</span>
    0457             <span class="comment">% Usage:</span>
    0458             <span class="comment">% dataset = obi.get_dataset('permId')</span>
    0459             
    0460             only_data = false;
    0461             
    0462             p = inputParser;
    0463             addRequired(p, <span class="string">'obj'</span>);
    0464             addRequired(p, <span class="string">'permid'</span>, @ischar);
    0465             addOptional(p, <span class="string">'only_data'</span>, only_data, @islogical);
    0466             parse(p, obj, permid, varargin{:});
    0467             a = p.Results;
    0468             
    0469 <span class="comment">%             dataset = obj.pybis.get_dataset(pyargs('permid', a.permid, 'only_data', a.only_data));</span>
    0470             dataset = obj.pybis.get_dataset(a.permid);
    0471         <span class="keyword">end</span>
    0472         
    0473         
    0474         <a name="_sub27" href="#_subfunctions" class="code">function files = get_dataset_files(obj, dataset, varargin)</a>
    0475             <span class="comment">%get_dataset_files</span>
    0476             <span class="comment">% Get list of files in a dataset starting with start_folder.</span>
    0477             <span class="comment">% Input arguments:</span>
    0478             <span class="comment">% dataset ... dataset object returned by get_dataset</span>
    0479             <span class="comment">% start_folder ... starting folder for files (default: '/')</span>
    0480             <span class="comment">% Usage:</span>
    0481             <span class="comment">% files = obi.get_dataset_files(dataset)</span>
    0482             
    0483             start_folder = <span class="string">'/'</span>;
    0484             
    0485             p = inputParser;
    0486             addRequired(p, <span class="string">'obj'</span>);
    0487             addRequired(p, <span class="string">'dataset'</span>);
    0488             addOptional(p, <span class="string">'start_folder'</span>, start_folder, @ischar);
    0489             parse(p, obj, dataset, varargin{:});
    0490             a = p.Results;
    0491             
    0492             files = dataset.get_files(pyargs(<span class="string">'start_folder'</span>, a.start_folder));
    0493             files = <a href="df_to_table.html" class="code" title="function [matlab_table] = df_to_table(df)">df_to_table</a>(files);
    0494         <span class="keyword">end</span>
    0495         
    0496         <a name="_sub28" href="#_subfunctions" class="code">function path_to_file = dataset_download(obj, dataset, files, varargin)</a>
    0497             <span class="comment">%dataset_download</span>
    0498             <span class="comment">% Download files in a dataset</span>
    0499             <span class="comment">% dataset ... dataset object returned by get_dataset</span>
    0500             <span class="comment">% files ... cell array of files</span>
    0501             <span class="comment">% destination ... folder to download to (default: data)</span>
    0502             <span class="comment">% wait_until_finished ... wait or download in the background (default: true)</span>
    0503             <span class="comment">% workers ... number of workers to use for download (default: 10)</span>
    0504             <span class="comment">% Usage:</span>
    0505             <span class="comment">% path_to_files = obi.dataset_download(dataset, {'file1', 'file2'})</span>
    0506             
    0507             destination = <span class="string">'data'</span>;
    0508             wait_until_finished = true;
    0509             workers = 10;
    0510             
    0511             p = inputParser;
    0512             addRequired(p, <span class="string">'obj'</span>);
    0513             addRequired(p, <span class="string">'dataset'</span>);
    0514             addRequired(p, <span class="string">'files'</span>, @iscellstr);
    0515             addParameter(p, <span class="string">'destination'</span>, destination, @ischar);
    0516             addParameter(p, <span class="string">'wait_until_finished'</span>, wait_until_finished, @islogical);
    0517             addParameter(p, <span class="string">'workers'</span>, workers, @isscalar);
    0518             
    0519             parse(p, obj, dataset, files, varargin{:});
    0520             a = p.Results;
    0521             
    0522             dataset.download(pyargs(<span class="string">'files'</span>, a.files, <span class="string">'destination'</span>, a.destination, <span class="string">'wait_until_finished'</span>, a.wait_until_finished, <span class="string">'workers'</span>, int16(a.workers)));
    0523             
    0524             path_to_file = fullfile(a.destination, dataset.char, a.files);
    0525             
    0526         <span class="keyword">end</span>
    0527         
    0528         <a name="_sub29" href="#_subfunctions" class="code">function dataset = new_dataset(obj, type, object, file_list, varargin)</a>
    0529             <span class="comment">%new_dataset</span>
    0530             <span class="comment">% Create a new dataset with files</span>
    0531             <span class="comment">% type ... dataset type</span>
    0532             <span class="comment">% object ... object for dataset (experiment)</span>
    0533             <span class="comment">% file_list ... list of files (cell string) to upload to new dataset</span>
    0534             <span class="comment">% properties ... structure with dataset properties (meta-data)</span>
    0535             <span class="comment">% Usage:</span>
    0536             <span class="comment">% dataset = obi.new_dataset('RAW_DATA', '/SPACE/PROJECT/OBJECT', {'file1', 'file2'}, 'properties', props)</span>
    0537             
    0538             properties = struct;
    0539             
    0540             p = inputParser;
    0541             addRequired(p, <span class="string">'obj'</span>);
    0542             addRequired(p, <span class="string">'type'</span>, @ischar);
    0543             addRequired(p, <span class="string">'object'</span>, @ischar);
    0544             addRequired(p, <span class="string">'file_list'</span>, @iscellstr);
    0545             addParameter(p, <span class="string">'properties'</span>, properties, @isstruct);
    0546             
    0547             parse(p, obj, type, object, file_list, varargin{:});
    0548             a = p.Results;
    0549             
    0550             dataset = obj.pybis.new_dataset(pyargs(<span class="string">'type'</span>, a.type, <span class="string">'experiment'</span>, a.object, <span class="keyword">...</span>
    0551                 <span class="string">'files'</span>, a.file_list, <span class="string">'props'</span>, a.properties));
    0552             dataset.save();
    0553             
    0554         <span class="keyword">end</span>
    0555         
    0556         <a name="_sub30" href="#_subfunctions" class="code">function dataset = new_dataset_container(obj, type, experiment, object)</a>
    0557             <span class="comment">%new_dataset_container</span>
    0558             <span class="comment">% Create a new dataset container</span>
    0559             <span class="comment">% type ... dataset container type</span>
    0560             <span class="comment">% experiment ... experiment for dataset container</span>
    0561             <span class="comment">% object ... object for dataset container</span>
    0562             <span class="comment">% Usage:</span>
    0563             <span class="comment">% dataset = obi.new_dataset_container('type', 'RAW_DATA', 'experiment', 'MY_EXP', 'object', 'MY_SAMPLE')</span>
    0564             
    0565             p = inputParser;
    0566             addRequired(p, <span class="string">'obj'</span>);
    0567             addRequired(p, <span class="string">'type'</span>, @ischar);
    0568             addRequired(p, <span class="string">'experiment'</span>, @ischar);
    0569             addRequired(p, <span class="string">'object'</span>, @ischar);
    0570             
    0571             parse(p, obj, type, experiment, object, file_list);
    0572             a = p.Results;
    0573             
    0574             dataset = obj.pybis.new_dataset(pyargs(<span class="string">'type'</span>, a.type, <span class="string">'experiment'</span>, a.experiment, <span class="string">'sample'</span>, a.object, <span class="string">'kind'</span>, <span class="string">'CONTAINER'</span>));
    0575             dataset.save();
    0576             
    0577         <span class="keyword">end</span>
    0578         
    0579         
    0580     <span class="keyword">end</span>
    0581     
    0582 <span class="keyword">end</span>
    0583 
    0584</pre></div>
    <hr><address>Generated on Tue 06-Jul-2021 16:01:18 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/" title="Matlab Documentation in HTML">m2html</a></strong> &copy; 2005</address>
    </body>
    </html>