diff --git a/modules/EnsEMBL/Web/Component/Transcript/ProteinVariations.pm b/modules/EnsEMBL/Web/Component/Transcript/ProteinVariations.pm
index d6c146a108..316259f28b 100644
--- a/modules/EnsEMBL/Web/Component/Transcript/ProteinVariations.pm
+++ b/modules/EnsEMBL/Web/Component/Transcript/ProteinVariations.pm
@@ -103,8 +103,8 @@ sub table_content {
my $polys = classify_sift_polyphen($tva->polyphen_prediction, $tva->polyphen_score);
my $cadds = classify_score_prediction($tva->cadd_prediction, $tva->cadd_score);
my $revels = classify_score_prediction($tva->dbnsfp_revel_prediction, $tva->dbnsfp_revel_score);
- my $meta_lrs = classify_score_prediction($tva->dbnsfp_meta_lr_prediction, $tva->dbnsfp_meta_lr_score);
- my $mutation_assessors = classify_score_prediction($tva->dbnsfp_mutation_assessor_prediction, $tva->dbnsfp_mutation_assessor_score);
+ my $alphamissenses = classify_score_prediction($tva->dbnsfp_alphamissense_prediction, $tva->dbnsfp_alphamissense_score);
+ my $esm1bs = classify_score_prediction($tva->dbnsfp_esm1b_prediction, $tva->dbnsfp_esm1b_score);
my $row = {
vf => $var->{'vf'}->dbID,
@@ -131,12 +131,12 @@ sub table_content {
revel_sort => $revels->[0],
revel_class => $revels->[1],
revel_value => $revels->[2],
- meta_lr_sort => $meta_lrs->[0],
- meta_lr_class => $meta_lrs->[1],
- meta_lr_value => $meta_lrs->[2],
- mutation_assessor_sort => $mutation_assessors->[0],
- mutation_assessor_class => $mutation_assessors->[1],
- mutation_assessor_value => $mutation_assessors->[2],
+ alphamissense_sort => $alphamissenses->[0],
+ alphamissense_class => $alphamissenses->[1],
+ alphamissense_value => $alphamissenses->[2],
+ esm1b_sort => $esm1bs->[0],
+ esm1b_class => $esm1bs->[1],
+ esm1b_value => $esm1bs->[2],
};
$callback->add_row($row);
last ROWS if $callback->stand_down;
@@ -159,7 +159,7 @@ sub make_table {
my @exclude;
push @exclude,'sift_sort','sift_class','sift_value' unless $sd->{'SIFT'};
unless($hub->species eq 'Homo_sapiens') {
- push @exclude,'polyphen_sort','polyphen_class','polyphen_value', 'cadd_sort', 'cadd_class', 'cadd_value', 'revel_sort', 'revel_class', 'revel_value', 'meta_lr_sort', 'meta_lr_class', 'meta_lr_value', 'mutation_assessor_sort', 'mutation_assessor_class', 'mutation_assessor_value';
+ push @exclude,'polyphen_sort','polyphen_class','polyphen_value', 'cadd_sort', 'cadd_class', 'cadd_value', 'revel_sort', 'revel_class', 'revel_value', 'alphamissense_sort', 'alphamissense_class', 'alphamissense_value', 'esm1b_sort', 'esm1b_class', 'esm1b_value';
}
my @columns = ({
@@ -285,27 +285,27 @@ sub make_table {
filter_fixed => 1,
filter_blank_button => 1,
},{
- _key => 'meta_lr_sort', _type => 'numeric no_filter unshowable',
- sort_for => 'meta_lr_value',
+ _key => 'alphamissense_sort', _type => 'numeric no_filter unshowable',
+ sort_for => 'alphamissense_value',
},{
- _key => 'meta_lr_class', _type => 'iconic no_filter unshowable',
+ _key => 'alphamissense_class', _type => 'iconic no_filter unshowable',
},{
- _key => 'meta_lr_value', _type => 'numeric',
- label => "MetaLR",
- helptip => $glossary->{'MetaLR'},
+ _key => 'alphamissense_value', _type => 'numeric',
+ label => "AlphaMissense",
+ helptip => $glossary->{'AlphaMissense'},
filter_range => [0,1],
filter_fixed => 1,
filter_blank_button => 1,
},{
- _key => 'mutation_assessor_sort', _type => 'numeric no_filter unshowable',
- sort_for => 'mutation_assessor_value',
+ _key => 'esm1b_sort', _type => 'numeric no_filter unshowable',
+ sort_for => 'esm1b_value',
},{
- _key => 'mutation_assessor_class', _type => 'iconic no_filter unshowable',
+ _key => 'esm1b_class', _type => 'iconic no_filter unshowable',
},{
- _key => 'mutation_assessor_value', _type => 'numeric',
- label => "Mutation Assessor",
- helptip => $glossary->{'MutationAssessor'},
- filter_range => [0,1],
+ _key => 'esm1b_value', _type => 'numeric',
+ label => "ESM1b",
+ helptip => $glossary->{'ESM1b'},
+ filter_range => [-30,10],
filter_fixed => 1,
filter_blank_button => 1,
}
@@ -384,7 +384,7 @@ sub sift_poly_classes {
my $sp_classes = predictions_classes;
- foreach my $column_name (qw(sift polyphen cadd revel meta_lr mutation_assessor)) {
+ foreach my $column_name (qw(sift polyphen cadd revel alphamissense esm1b)) {
my $value_column = $table->column("${column_name}_value");
my $class_column = $table->column("${column_name}_class");
next unless $value_column and $class_column;
@@ -397,12 +397,12 @@ sub sift_poly_classes {
# TODO: make decorators accessible to filters. Complexity is that
# many decorators (including these) are multi-column.
my $lozenge = qq(
%s
);
- my $left = { sift => 'bad', polyphen => 'good', cadd => 'good', revel => 'good', meta_lr => 'good', mutation_assessor => 'good'}->{$column_name};
- my $right = { sift => 'good', polyphen => 'bad', cadd => 'bad', revel => 'bad', meta_lr => 'bad', 'mutation_assessor' => 'bad'}->{$column_name};
+ my $left = { sift => 'bad', polyphen => 'good', cadd => 'good', revel => 'good', alphamissense => 'good', esm1b => 'good'}->{$column_name};
+ my $right = { sift => 'good', polyphen => 'bad', cadd => 'bad', revel => 'bad', alphamissense => 'bad', esm1b => 'bad'}->{$column_name};
$value_column->filter_endpoint_markup(0,sprintf($lozenge,$left,"0"));
$value_column->filter_endpoint_markup(1,sprintf($lozenge,$right,"1"));
my $slider_class =
- { sift => 'redgreen', polyphen => 'greenred', cadd => 'greenred', revel => 'greenred', meta_lr => 'greenred', mutation_assessor => 'greenred' }->{$column_name};
+ { sift => 'redgreen', polyphen => 'greenred', cadd => 'greenred', revel => 'greenred', alphamissense => 'greenred', esm1b => 'greenred' }->{$column_name};
$value_column->filter_slider_class("newtable_slider_$slider_class");
}
diff --git a/modules/EnsEMBL/Web/Component/Variation/Mappings.pm b/modules/EnsEMBL/Web/Component/Variation/Mappings.pm
index ed871d6590..c1b1c357dd 100644
--- a/modules/EnsEMBL/Web/Component/Variation/Mappings.pm
+++ b/modules/EnsEMBL/Web/Component/Variation/Mappings.pm
@@ -235,8 +235,8 @@ sub content {
my $cadd = $self->render_score_prediction($tva->cadd_prediction, $tva->cadd_score);
my $dbnsfp_revel = $self->render_score_prediction($tva->dbnsfp_revel_prediction, $tva->dbnsfp_revel_score);
- my $dbnsfp_meta_lr = $self->render_score_prediction($tva->dbnsfp_meta_lr_prediction, $tva->dbnsfp_meta_lr_score);
- my $dbnsfp_mutation_assessor = $self->render_score_prediction($tva->dbnsfp_mutation_assessor_prediction, $tva->dbnsfp_mutation_assessor_score);
+ my $dbnsfp_alphamissense = $self->render_score_prediction($tva->dbnsfp_alphamissense_prediction, $tva->dbnsfp_alphamissense_score);
+ my $dbnsfp_esm1b = $self->render_score_prediction($tva->dbnsfp_esm1b_prediction, $tva->dbnsfp_esm1b_score);
# Allele
@@ -301,15 +301,15 @@ sub content {
polyphen => $poly,
cadd => $cadd,
dbnsfp_revel => $dbnsfp_revel,
- dbnsfp_meta_lr => $dbnsfp_meta_lr,
- dbnsfp_mutation_assessor => $dbnsfp_mutation_assessor,
+ dbnsfp_alphamissense => $dbnsfp_alphamissense,
+ dbnsfp_esm1b => $dbnsfp_esm1b,
detail => $self->ajax_add($self->ajax_url(undef, { t => $trans_name, vf => $vf, allele => $a, update_panel => 1 }).";single_transcript=variation_feature_variation=normal", "${trans_name}_${vf}_${a}"),
};
push(@rows, $row);
# Column flags
- foreach my $col ('sift', 'polyphen', 'cadd', 'dbnsfp_revel', 'dbnsfp_meta_lr', 'dbnsfp_mutation_assessor') {
+ foreach my $col ('sift', 'polyphen', 'cadd', 'dbnsfp_revel', 'dbnsfp_alphamissense', 'dbnsfp_esm1b') {
$column_flags{$col} = 1 if ($row->{$col} && $row->{$col} ne '-');
}
@@ -458,11 +458,11 @@ sub table_columns {
push @columns, ({ key => 'dbnsfp_revel', title => 'REVEL', sort => 'position_html', align => 'center', help => $glossary->{'REVEL'} })
if $column_flags->{'dbnsfp_revel'};
- push @columns, ({ key => 'dbnsfp_meta_lr', title => 'MetaLR', sort => 'position_html', align => 'center', help => $glossary->{'MetaLR'} })
- if $column_flags->{'dbnsfp_meta_lr'};
+ push @columns, ({ key => 'dbnsfp_alphamissense', title => 'AlphaMissense', sort => 'position_html', align => 'center', help => $glossary->{'AlphaMissense'} })
+ if $column_flags->{'dbnsfp_alphamissense'};
- push @columns, ({ key => 'dbnsfp_mutation_assessor', title => 'Mutation Assessor', sort => 'position_html', align => 'center', help => $glossary->{'MutationAssessor'} })
- if $column_flags->{'dbnsfp_mutation_assessor'};
+ push @columns, ({ key => 'dbnsfp_esm1b', title => 'ESM1b', sort => 'position_html', align => 'center', help => $glossary->{'ESM1b'} })
+ if $column_flags->{'dbnsfp_esm1b'};
}
push @columns, { key => 'detail', title => 'Detail', sort => 'string' };
@@ -835,6 +835,11 @@ sub render_score_prediction {
'medium' => 'ok',
'low' => 'good',
'neutral' => 'good',
+ 'benign' => 'good',
+ 'ambiguous' => 'ok',
+ 'likely pathogenic' => 'bad',
+ 'pathogenic' => 'bad',
+ 'deleterious' => 'bad',
);
my %ranks = (
@@ -848,6 +853,11 @@ sub render_score_prediction {
'medium' => 3,
'low' => 2,
'neutral' => 2,
+ 'benign' => 2,
+ 'ambiguous' => 3,
+ 'likely pathogenic' => 4,
+ 'pathogenic' => 4,
+ 'deleterious' => 4,
);
my ($rank, $rank_str);
diff --git a/modules/EnsEMBL/Web/Component/VariationTable.pm b/modules/EnsEMBL/Web/Component/VariationTable.pm
index 9191e17369..8544158c29 100644
--- a/modules/EnsEMBL/Web/Component/VariationTable.pm
+++ b/modules/EnsEMBL/Web/Component/VariationTable.pm
@@ -171,7 +171,7 @@ sub sift_poly_classes {
my $sp_classes = predictions_classes;
- foreach my $column_name (qw(sift polyphen cadd revel meta_lr mutation_assessor)) {
+ foreach my $column_name (qw(sift polyphen cadd revel alphamissense esm1b)) {
my $value_column = $table->column("${column_name}_value");
my $class_column = $table->column("${column_name}_class");
next unless $value_column and $class_column;
@@ -184,12 +184,12 @@ sub sift_poly_classes {
# TODO: make decorators accessible to filters. Complexity is that
# many decorators (including these) are multi-column.
my $lozenge = qq(%s
);
- my $left = { sift => 'bad', polyphen => 'good', cadd => 'good', revel => 'good', meta_lr => 'good', mutation_assessor => 'good'}->{$column_name};
- my $right = { sift => 'good', polyphen => 'bad', cadd => 'bad', revel => 'bad', meta_lr => 'bad', 'mutation_assessor' => 'bad'}->{$column_name};
+ my $left = { sift => 'bad', polyphen => 'good', cadd => 'good', revel => 'good', alphamissense => 'good', esm1b => 'good'}->{$column_name};
+ my $right = { sift => 'good', polyphen => 'bad', cadd => 'bad', revel => 'bad', alphamissense => 'bad', esm1b => 'bad'}->{$column_name};
$value_column->filter_endpoint_markup(0,sprintf($lozenge,$left,"0"));
$value_column->filter_endpoint_markup(1,sprintf($lozenge,$right,"1"));
my $slider_class =
- { sift => 'redgreen', polyphen => 'greenred', cadd => 'greenred', revel => 'greenred', meta_lr => 'greenred', mutation_assessor => 'greenred'}->{$column_name};
+ { sift => 'redgreen', polyphen => 'greenred', cadd => 'greenred', revel => 'greenred', alphamissense => 'greenred', esm1b => 'greenred'}->{$column_name};
$value_column->filter_slider_class("newtable_slider_$slider_class");
}
}
@@ -333,7 +333,7 @@ sub make_table {
}
push @exclude,'sift_sort','sift_class','sift_value' unless $sd->{'SIFT'};
unless($hub->species eq 'Homo_sapiens') {
- push @exclude,'polyphen_sort','polyphen_class','polyphen_value', 'cadd_sort', 'cadd_class', 'cadd_value', 'revel_sort', 'revel_class', 'revel_value', 'meta_lr_sort', 'meta_lr_class', 'meta_lr_value', 'mutation_assessor_sort', 'mutation_assessor_class', 'mutation_assessor_value';
+ push @exclude,'polyphen_sort','polyphen_class','polyphen_value', 'cadd_sort', 'cadd_class', 'cadd_value', 'revel_sort', 'revel_class', 'revel_value', 'alphamissense_sort', 'alphamissense_class', 'alphamissense_value', 'esm1b_sort', 'esm1b_class', 'esm1b_value';
}
push @exclude,'Transcript' if $hub->type eq 'Transcript';
@@ -489,27 +489,27 @@ sub make_table {
filter_fixed => 1,
filter_blank_button => 1,
},{
- _key => 'meta_lr_sort', _type => 'numeric no_filter unshowable',
- sort_for => 'meta_lr_value',
+ _key => 'alphamissense_sort', _type => 'numeric no_filter unshowable',
+ sort_for => 'alphamissense_value',
},{
- _key => 'meta_lr_class', _type => 'iconic no_filter unshowable',
+ _key => 'alphamissense_class', _type => 'iconic no_filter unshowable',
},{
- _key => 'meta_lr_value', _type => 'numeric',
- label => "MetaLR",
- helptip => $glossary->{'MetaLR'},
+ _key => 'alphamissense_value', _type => 'numeric',
+ label => "AlphaMissense",
+ helptip => $glossary->{'AlphaMissense'},
filter_range => [0,1],
filter_fixed => 1,
filter_blank_button => 1,
},{
- _key => 'mutation_assessor_sort', _type => 'numeric no_filter unshowable',
- sort_for => 'mutation_assessor_value',
+ _key => 'esm1b_sort', _type => 'numeric no_filter unshowable',
+ sort_for => 'esm1b_value',
},{
- _key => 'mutation_assessor_class', _type => 'iconic no_filter unshowable',
+ _key => 'esm1b_class', _type => 'iconic no_filter unshowable',
},{
- _key => 'mutation_assessor_value', _type => 'numeric',
- label => "Mutation Assessor",
- helptip => $glossary->{'MutationAssessor'},
- filter_range => [0,1],
+ _key => 'esm1b_value', _type => 'numeric',
+ label => "ESM1b",
+ helptip => $glossary->{'ESM1b'},
+ filter_range => [-30,10],
filter_fixed => 1,
filter_blank_button => 1,
},{
@@ -721,8 +721,8 @@ sub variation_table {
my $polys = classify_sift_polyphen($tva->polyphen_prediction, $tva->polyphen_score);
my $cadds = classify_score_prediction($tva->cadd_prediction, $tva->cadd_score);
my $revels = classify_score_prediction($tva->dbnsfp_revel_prediction, $tva->dbnsfp_revel_score);
- my $meta_lrs = classify_score_prediction($tva->dbnsfp_meta_lr_prediction, $tva->dbnsfp_meta_lr_score);
- my $mutation_assessors = classify_score_prediction($tva->dbnsfp_mutation_assessor_prediction, $tva->dbnsfp_mutation_assessor_score);
+ my $alphamissenses = classify_score_prediction($tva->dbnsfp_alphamissense_prediction, $tva->dbnsfp_alphamissense_score);
+ my $esm1bs = classify_score_prediction($tva->dbnsfp_esm1b_prediction, $tva->dbnsfp_esm1b_score);
# Adds LSDB/LRG sources
if ($self->isa('EnsEMBL::Web::Component::LRG::VariationTable')) {
@@ -784,12 +784,12 @@ sub variation_table {
revel_sort => $revels->[0],
revel_class => $revels->[1],
revel_value => $revels->[2],
- meta_lr_sort => $meta_lrs->[0],
- meta_lr_class => $meta_lrs->[1],
- meta_lr_value => $meta_lrs->[2],
- mutation_assessor_sort => $mutation_assessors->[0],
- mutation_assessor_class => $mutation_assessors->[1],
- mutation_assessor_value => $mutation_assessors->[2],
+ alphamissense_sort => $alphamissenses->[0],
+ alphamissense_class => $alphamissenses->[1],
+ alphamissense_value => $alphamissenses->[2],
+ esm1b_sort => $esm1bs->[0],
+ esm1b_class => $esm1bs->[1],
+ esm1b_value => $esm1bs->[2],
HGVS => $self->param('hgvs') eq 'on' ? ($self->get_hgvs($tva) || '-') : undef,
};
$row = { %$row, %$more_row };
diff --git a/modules/EnsEMBL/Web/Utils/Variation.pm b/modules/EnsEMBL/Web/Utils/Variation.pm
index 93571512d1..eeeba1232f 100644
--- a/modules/EnsEMBL/Web/Utils/Variation.pm
+++ b/modules/EnsEMBL/Web/Utils/Variation.pm
@@ -216,6 +216,12 @@ sub predictions_classes {
'deleterious - low confidence' => 'neutral',
'tolerated low confidence' => 'neutral',
'deleterious low confidence' => 'neutral',
+
+ # coming from dbNSFP AlphaMissense and ESM1b
+ 'ambiguous' => 'ok',
+ 'likely pathogenic' => 'bad',
+ 'pathogenic' => 'bad',
+ 'deleterious' => 'bad',
};
}
@@ -271,6 +277,11 @@ sub classify_score_prediction {
'medium' => 3,
'low' => 2,
'neutral' => 2,
+ 'benign' => 2,
+ 'ambiguous' => 3,
+ 'likely pathogenic' => 4,
+ 'pathogenic' => 4,
+ 'deleterious' => 4,
);
my ($rank, $rank_str);