class Xanthus::Dataverse
Attributes
affiliation[RW]
dataset_name[RW]
description[RW]
doi[RW]
email[RW]
repo[RW]
server[RW]
subject[RW]
token[RW]
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/xanthus/dataverse.rb, line 17 def initialize super @server = 'default_server' @repo = 'default_repo' @token = 'default_token' @dataset_name = 'default_name' @author = 'default_author' @affiliation = 'default_affiliation' @email = 'default_email' @description = 'default_description' @subject = 'default_subject' @doi = 'not_set' end
Public Instance Methods
add(content)
click to toggle source
# File lib/xanthus/dataverse.rb, line 174 def add content self.add_file_to_dataverse content, "#{content} is a Xanthus generated file (check metadata for description)", 'data' end
add_file_to_dataverse(name, description, folder)
click to toggle source
# File lib/xanthus/dataverse.rb, line 148 def add_file_to_dataverse name, description, folder output = `curl --speed-time 15 --speed-limit 1000 --retry 50 --retry-max-time 0 -H X-Dataverse-key:#{@token} -X POST -F "file=@#{name}" -F 'jsonData={"description":"#{description}","directoryLabel":"#{folder}","categories":["Data"], "restrict":"false"}' "#{@server}/api/datasets/:persistentId/add?persistentId=#{@doi}"` puts output end
create_dataset()
click to toggle source
# File lib/xanthus/dataverse.rb, line 114 def create_dataset Dir.chdir 'dataverse_dataset' do File.open('dataset.json', 'w+') do |f| f.write(self.dataset_json) end puts "Creating dataverse #{@dataset_name} in #{@repo} at #{@server}..." output = `curl --speed-time 15 --speed-limit 1000 --retry 50 --retry-max-time 0 -H X-Dataverse-key:#{@token} -X POST #{@server}/api/dataverses/#{@repo}/datasets --upload-file dataset.json` puts output # needed to escape curl output parsed = JSON.parse(output) @doi = parsed['data']['persistentId'] puts "Dataverse #{@doi} created." end end
dataset_json()
click to toggle source
# File lib/xanthus/dataverse.rb, line 31 def dataset_json json = %Q{ { "datasetVersion": { "metadataBlocks": { "citation": { "fields": [ { "value": "#{@dataset_name}", "typeClass": "primitive", "multiple": false, "typeName": "title" }, { "value": [ { "authorName": { "value": "#{@author}", "typeClass": "primitive", "multiple": false, "typeName": "authorName" }, "authorAffiliation": { "value": "#{@affiliation}", "typeClass": "primitive", "multiple": false, "typeName": "authorAffiliation" } } ], "typeClass": "compound", "multiple": true, "typeName": "author" }, { "value": [ { "datasetContactEmail" : { "typeClass": "primitive", "multiple": false, "typeName": "datasetContactEmail", "value" : "#{@email}" }, "datasetContactName" : { "typeClass": "primitive", "multiple": false, "typeName": "datasetContactName", "value": "#{@author}" } }], "typeClass": "compound", "multiple": true, "typeName": "datasetContact" }, { "value": [ { "dsDescriptionValue":{ "value": "#{@description.gsub(/\r/," ").gsub(/\n/," ")}", "multiple":false, "typeClass": "primitive", "typeName": "dsDescriptionValue" }}], "typeClass": "compound", "multiple": true, "typeName": "dsDescription" }, { "value": [ "#{@subject}" ], "typeClass": "controlledVocabulary", "multiple": true, "typeName": "subject" } ], "displayName": "Citation Metadata" } } } } } return json end
init(config)
click to toggle source
# File lib/xanthus/dataverse.rb, line 128 def init config # initialize with config information @author = config.authors @affiliation = config.affiliation @email = config.email @description = config.description @dataset_name = config.name+'-'+Time.now.strftime("%Y-%m-%d_%H-%M") FileUtils.mkdir_p 'dataverse_dataset' self.create_dataset Dir.chdir 'dataverse_dataset' do FileUtils.mkdir_p 'repo' Dir.chdir 'repo' do self.xanthus_file self.readme_file config self.inputs_file config end end end
inputs_file(config)
click to toggle source
# File lib/xanthus/dataverse.rb, line 163 def inputs_file config config.jobs.each do |name,job| job.inputs.each do |k, files| files.each do |file| system('cp', '-f', "../../#{file}", "#{file}") self.add_file_to_dataverse file, 'Job input file.', 'metadata' end end end end
readme_file(config)
click to toggle source
# File lib/xanthus/dataverse.rb, line 158 def readme_file config self.prepare_readme_file config self.add_file_to_dataverse 'README.md', 'readme describing the dataset.', 'metadata' end
xanthus_file()
click to toggle source
# File lib/xanthus/dataverse.rb, line 153 def xanthus_file self.prepare_xanthus_file self.add_file_to_dataverse '.xanthus', 'xanthus file used to generate the data.', 'metadata' end