Module: BEL::Translator::Plugins::BelScript::BelDiscreteSerialization
- Includes:
- NanopubSerialization
- Defined in:
- lib/bel/translator/plugins/bel_script/bel_discrete_serialization.rb
Overview
BEL Script nanopub serialization that writes each nanopub with their full set of annotations (i.e. includes all ‘SET` and necessary `UNSET` records). This style is more readable because it groups all set annotations near the BEL statement.
Instance Method Summary collapse
-
#to_bel(nanopub) ⇒ String
Serialize the nanopub to a BEL Script string.
Instance Method Details
#to_bel(nanopub) ⇒ String
Serialize the nanopub to a BEL Script string. Includes all necessary SET AnnotationName and UNSET AnnotationName records around the BEL statement.
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 |
# File 'lib/bel/translator/plugins/bel_script/bel_discrete_serialization.rb', line 49 def to_bel(nanopub) bel = '' citation = citation_value(nanopub) support = support_value(nanopub) annotations = annotation_values(nanopub) current_annotations = {}.merge(annotations) current_annotations[:Citation] = citation if citation current_annotations[:Support] = support if support # UNSET unused annotations from previous nanopub. (cumulative_annotations.keys - current_annotations.keys).each do |unset_key| bel << "UNSET #{unset_key}\n" cumulative_annotations.delete(unset_key) end # Retain the current nanopub's annotation in cumulative set. cumulative_annotations.merge!(current_annotations) # SET Citation citation = current_annotations.delete(:Citation) if citation bel << "SET Citation = {#{citation}}\n" end # SET Support support = current_annotations.delete(:Support) if support bel << %Q{SET Support = "#{support}"\n} end # SET new or modified annotations current_annotations.sort.each do |(name, value)| bel << "SET #{name} = #{value}\n" end # Assert BEL statement bel << "#{nanopub.bel_statement}\n" # Separate nanopub by new line. bel << "\n" bel end |