Class: Bio::BaseSpace::AppResult

Inherits:
Model
  • Object
show all
Defined in:
lib/basespace/model/app_result.rb

Overview

Contains the files that are output by an App.

App results are usually BAM or VCF files, even though other file types may also be provided.

Instance Attribute Summary

Attributes inherited from Model

#attributes, #swagger_types

Instance Method Summary collapse

Methods inherited from Model

#get_attr, #method_missing, #set_attr, #to_str

Constructor Details

#initializeAppResult

Create a new AppResult instance.



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
# File 'lib/basespace/model/app_result.rb', line 28

def initialize
  @swagger_types = {
    'Name'           => 'str',
    #'Status'        => 'str',        # will be deprecated
    'Description'    => 'str',
    'StatusSummary'  => 'str',
    'HrefFiles'      => 'str',
    'DateCreated'    => 'datetime',
    'Id'             => 'str',
    'Href'           => 'str',
    'UserOwnedBy'    => 'UserCompact',
    'StatusDetail'   => 'str',
    'HrefGenome'     => 'str',
    'AppSession'     => 'AppSession',
    'References'     => 'dict',
  }
  @attributes = {
    'Name'           => nil,
    'Description'    => nil,
    'StatusSummary'  => nil,
    'HrefFiles'      => nil,
    'DateCreated'    => nil,
    'Id'             => nil,
    'Href'           => nil,
    'UserOwnedBy'    => nil, # UserCompact
    'StatusDetail'   => nil,
    'HrefGenome'     => nil,
    'AppSession'     => nil, # AppSession
    'References'     => nil,
  }
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Bio::BaseSpace::Model

Instance Method Details

#get_access_str(scope = 'write') ⇒ Object

Returns the scope-string to be used for requesting BaseSpace access to the object.

scope

The scope-type that is request (write|read).



71
72
73
74
# File 'lib/basespace/model/app_result.rb', line 71

def get_access_str(scope = 'write')
  is_init
  return "#{scope} appresult #{get_attr('Id')}"
end

#get_files(api, my_qp = {}) ⇒ Object

Returns a list of file objects in the result set.

api

BaseSpaceAPI instance.

my_qp

QueryParameters for sorting and filtering the file list.



122
123
124
125
126
# File 'lib/basespace/model/app_result.rb', line 122

def get_files(api, my_qp = {})
  is_init
  query_pars = QueryParameters.new(my_qp)
  return api.get_app_result_files(get_attr('Id'), query_pars)
end

#get_referenced_samples(api) ⇒ Object

Returns a list of sample objects references by the AppResult.

NOTE This method makes one request to REST server per sample.

api

BaseSpaceAPI instance.



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/basespace/model/app_result.rb', line 101

def get_referenced_samples(api)
  res = []
  ids = get_referenced_samples_ids
  ids.each do |id|
    begin
      sample = api.get_sample_by_id(id)
      res << sample
    rescue => err
      # [TODO] What to do with this 'err'?
      $stderr.puts "    # ----- AppResult#get_referenced_samples ----- "
      $stderr.puts "    # Error: #{err}"
      $stderr.puts "    # "
    end
  end
  return res
end

#get_referenced_samples_idsObject

Return a list of sample IDs for the samples referenced.



84
85
86
87
88
89
90
91
92
93
94
# File 'lib/basespace/model/app_result.rb', line 84

def get_referenced_samples_ids
  res= []
  get_attr('References').each do |s|
    # [TODO] check this Hash contains the key :type (or should we use 'Type'?)
    if s[:type] == 'Sample'
      id = s[:href_content].split('/').last
      res << id
    end
  end
  return res
end

#is_initObject

Tests if the Project instance has been initialized.

Throws ModelNotInitializedError, if the instance has not been populated.



79
80
81
# File 'lib/basespace/model/app_result.rb', line 79

def is_init
  raise ModelNotInitializedError.new('The AppResult model has not been initialized yet') unless get_attr('Id')
end

#to_sObject

Return the name of the AppResult.



61
62
63
64
65
66
# File 'lib/basespace/model/app_result.rb', line 61

def to_s
  # NOTE Simplified in Ruby to align with the Sample class.
  #      See example 3_accessing_files.rb (3_AccessingFiles.py)
  #return "AppResult: #{get_attr('Name')}" #+ " - #{get_attr('Status')"
  return get_attr('Name')
end

#upload_file(api, local_path, file_name, directory, content_type) ⇒ Object

Uploads a local file to the BaseSpace AppResult.

api

BaseSpaceAPI instance.

local_path: Local path of the file.

file_name

Filename.

directory: The remote directory that the file is uploaded to.

param content_type

Content-type of the file.



135
136
137
138
# File 'lib/basespace/model/app_result.rb', line 135

def upload_file(api, local_path, file_name, directory, content_type)
  is_init
  return api.app_result_file_upload(get_attr('Id'), local_path, file_name, directory, content_type)
end