sub new {
my $caller = shift;
my $class = ref($caller) || $caller;
my $self = $class->SUPER::new(@_);
my ($hstart, $hend, $hstrand, $percent_id, $score, $species, $hspecies, $p_value, $hseqname, $f1, $f2, $coverage, $hcoverage, $group_id, $level_id, $external_db_id, $extra_data, $external_db_name, $external_display_db_name, $hdescription) = rearrange(['HSTART', 'HEND', 'HSTRAND', 'PERCENT_ID', 'SCORE', 'SPECIES', 'HSPECIES', 'P_VALUE', 'HSEQNAME', 'FEATURE1', 'FEATURE2', 'COVERAGE', 'HCOVERAGE', 'GROUP_ID', 'LEVEL_ID', 'EXTERNAL_DB_ID', 'EXTRA_DATA', 'DBNAME', 'DB_DISPLAY_NAME', 'HDESCRIPTION'], @_);
if (defined($hstart) && defined($hend) && ($hend < $hstart)) {
throw('HSTART must be less than or equal to HEND');
}
if (defined($hstrand) && $hstrand != 1 && $hstrand != -1 && $hstrand != 0) {
throw('HSTRAND must be one of (0,1,-1)');
}
$self->{'hstart'} = $hstart;
$self->{'hend'} = $hend;
$self->{'hstrand'} = $hstrand;
$self->{'score'} = $score;
$self->{'percent_id'} = $percent_id;
$self->{'species'} = $species;
$self->{'hspecies'} = $hspecies;
$self->{'hseqname'} = $hseqname;
$self->{'coverage'} = $coverage;
$self->{'hcoverage'} = $hcoverage;
$self->{'p_value'} = $p_value;
$self->{'group_id'} = $group_id;
$self->{'level_id'} = $level_id;
$self->{'external_db_id'} = $external_db_id;
$self->{'extra_data'} = $extra_data;
$self->{'dbname'} = $external_db_name;
$self->{'db_display_name'} = $external_display_db_name;
$self->{'hdescription'} = $hdescription;
return $self;