#!perl use strict; use Data::Dumper; use Carp; # # This is a SAS Component # =head1 all_entities_Reagent Return all instances of the Reagent entity. This entity represents a compound as it is used by a specific reaction. A reaction involves many compounds, and a compound can be involved in many reactions. The reagent describes the use of the compound by a specific reaction. Example: all_entities_Reagent -a would retrieve all entities of type Reagent and include all fields in the entities in the output. =head2 Related entities The Reagent entity has the following relationship links: =over 4 =item HasDefaultLocation Compartment =item IsInvolvedIn Reaction =item IsParticipationOf Compound =back =head2 Command-Line Options =over 4 =item -a Return all fields. =item -h Display a list of the fields available for use. =item -fields field-list Choose a set of fields to return. Field-list is a comma-separated list of strings. The following fields are available: =over 4 =item stoichiometry =item cofactor =item compartment_index =item transport_coefficient =back =back =head2 Output Format The standard output is a tab-delimited file. It consists of the input file with an extra column added for each requested field. Input lines that cannot be extended are written to stderr. =cut use Bio::KBase::CDMI::CDMIClient; use Getopt::Long; #Default fields my @all_fields = ( 'stoichiometry', 'cofactor', 'compartment_index', 'transport_coefficient' ); my %all_fields = map { $_ => 1 } @all_fields; my $usage = "usage: all_entities_Reagent [-show-fields] [-a | -f field list] > entity.data"; my $a; my $f; my @fields; my $show_fields; my $geO = Bio::KBase::CDMI::CDMIClient->new_get_entity_for_script("a" => \$a, "show-fields" => \$show_fields, "h" => \$show_fields, "fields=s" => \$f); if ($show_fields) { print STDERR "Available fields: @all_fields\n"; exit 0; } if (@ARGV != 0 || ($a && $f)) { print STDERR $usage, "\n"; exit 1; } if ($a) { @fields = @all_fields; } elsif ($f) { my @err; for my $field (split(",", $f)) { if (!$all_fields{$field}) { push(@err, $field); } else { push(@fields, $field); } } if (@err) { print STDERR "all_entities_Reagent: unknown fields @err. Valid fields are: @all_fields\n"; exit 1; } } my $start = 0; my $count = 1_000_000; my $h = $geO->all_entities_Reagent($start, $count, \@fields ); while (%$h) { while (my($k, $v) = each %$h) { print join("\t", $k, map { ref($_) eq 'ARRAY' ? join(",", @$_) : $_ } @$v{@fields}), "\n"; } $start += $count; $h = $geO->all_entities_Reagent($start, $count, \@fields); }