From 1284218a2970d8a97ba64925ce34aa5a68b0fffc Mon Sep 17 00:00:00 2001 From: henrikstranneheim Date: Sat, 13 Jul 2019 14:35:58 +0200 Subject: [PATCH] feat(vcfparser): Refactor define snpeff annotations - Added test --- lib/MIP/Vcfparser.pm | 35 +++++++++++++++- t/define_select_data_headers.t | 3 +- t/define_snpeff_annotations.t | 75 ++++++++++++++++++++++++++++++++++ vcfparser.pl | 32 +-------------- 4 files changed, 112 insertions(+), 33 deletions(-) create mode 100644 t/define_snpeff_annotations.t diff --git a/lib/MIP/Vcfparser.pm b/lib/MIP/Vcfparser.pm index 9ebe5dc1c..978622bcc 100644 --- a/lib/MIP/Vcfparser.pm +++ b/lib/MIP/Vcfparser.pm @@ -27,7 +27,11 @@ BEGIN { our $VERSION = 1.00; # Functions and variables which can be optionally exported - our @EXPORT_OK = qw{ build_interval_tree define_select_data_headers }; + our @EXPORT_OK = qw{ + build_interval_tree + define_select_data_headers + define_snpeff_annotations + }; } sub build_interval_tree { @@ -146,4 +150,33 @@ q{##INFO=}; + $snpeff_cmd{snpeff}{phastCons100way_vertebrate_prediction_term}{File} = + q{SnpSift dbnsfp}; + $snpeff_cmd{snpeff}{phastCons100way_vertebrate_prediction_term}{vcf_key} = + q{dbNSFP_phastCons100way_vertebrate}; + $snpeff_cmd{snpeff}{phastCons100way_vertebrate_prediction_term}{info} = +q{##INFO=}; + $snpeff_cmd{snpeff}{phyloP100way_vertebrate_prediction_term}{File} = + q{SnpSift dbnsfp}; + $snpeff_cmd{snpeff}{phyloP100way_vertebrate_prediction_term}{vcf_key} = + q{dbNSFP_phyloP100way_vertebrate}; + $snpeff_cmd{snpeff}{phyloP100way_vertebrate_prediction_term}{info} = +q{##INFO=}; + + return %snpeff_cmd; +} + 1; diff --git a/t/define_select_data_headers.t b/t/define_select_data_headers.t index 958b91322..ed423bd57 100644 --- a/t/define_select_data_headers.t +++ b/t/define_select_data_headers.t @@ -62,7 +62,8 @@ diag( q{Test define_select_data_headers from Vcfparser.pm v} my %select_data = define_select_data_headers(); my $hgnc_symbol_info_header = - q?##INFO=?; + q{##INFO=}; + ## Then keys should exist and header info should be set ok( keys %select_data, q{Returned hash keys} ); diff --git a/t/define_snpeff_annotations.t b/t/define_snpeff_annotations.t new file mode 100644 index 000000000..992b9f5b3 --- /dev/null +++ b/t/define_snpeff_annotations.t @@ -0,0 +1,75 @@ +#!/usr/bin/env perl + +use 5.026; +use Carp; +use charnames qw{ :full :short }; +use English qw{ -no_match_vars }; +use File::Basename qw{ dirname }; +use File::Spec::Functions qw{ catdir }; +use FindBin qw{ $Bin }; +use open qw{ :encoding(UTF-8) :std }; +use Params::Check qw{ allow check last_error }; +use Test::More; +use utf8; +use warnings qw{ FATAL utf8 }; + +## CPANM +use autodie qw { :all }; +use Modern::Perl qw{ 2014 }; +use Readonly; + +## MIPs lib/ +use lib catdir( dirname($Bin), q{lib} ); +use MIP::Constants qw{ $COMMA $SPACE }; +use MIP::Test::Fixtures qw{ test_standard_cli }; + +my $VERBOSE = 1; +our $VERSION = 1.00; + +$VERBOSE = test_standard_cli( + { + verbose => $VERBOSE, + version => $VERSION, + } +); + +BEGIN { + + use MIP::Test::Fixtures qw{ test_import }; + +### Check all internal dependency modules and imports +## Modules with import + my %perl_module = ( + q{MIP::Vcfparser} => [qw{ define_snpeff_annotations }], + q{MIP::Test::Fixtures} => [qw{ test_standard_cli }], + ); + + test_import( { perl_module_href => \%perl_module, } ); +} + +use MIP::Vcfparser qw{ define_snpeff_annotations }; + +diag( q{Test define_snpeff_annotations from Vcfparser.pm v} + . $MIP::Vcfparser::VERSION + . $COMMA + . $SPACE . q{Perl} + . $SPACE + . $PERL_VERSION + . $SPACE + . $EXECUTABLE_NAME ); + +## Given snpeff annotations +my %snpeff_cmd = define_snpeff_annotations(); + +my $phastcons100way_vertebrate_prediction_term_file = q{SnpSift dbnsfp}; + +## Then keys should exist and annotation info should be set +ok( keys %snpeff_cmd, q{Returned hash keys} ); + +is( + $snpeff_cmd{snpeff}{phastCons100way_vertebrate_prediction_term}{File}, + $phastcons100way_vertebrate_prediction_term_file, + q{Got file info for annotation key} +); + +done_testing(); diff --git a/vcfparser.pl b/vcfparser.pl index fbfaf9ecd..e070406e4 100755 --- a/vcfparser.pl +++ b/vcfparser.pl @@ -30,7 +30,7 @@ use MIP::File::Format::Feature_file qw{ read_feature_file }; use MIP::Log::MIP_log4perl qw{ initiate_logger }; use MIP::Script::Utils qw{ help }; -use MIP::Vcfparser qw{ define_select_data_headers }; +use MIP::Vcfparser qw{ define_select_data_headers define_snpeff_annotations }; our $USAGE = build_usage( {} ); @@ -282,36 +282,6 @@ sub build_usage { END_USAGE } -sub define_snpeff_annotations { - -## Function : Defines the snpeff annotations that can be parsed and modified -## Returns : %snpeff_cmd -## Arguments: None - - my %snpeff_cmd; - - $snpeff_cmd{snpeff}{phastCons100way_vertebrate_prediction_term}{File} = - q?SnpSift dbnsfp?; - $snpeff_cmd{snpeff}{phastCons100way_vertebrate_prediction_term}{vcf_key} = - q?dbNSFP_phastCons100way_vertebrate?; - $snpeff_cmd{snpeff}{phastCons100way_vertebrate_prediction_term}{info} = -q?##INFO=?; - - $snpeff_cmd{snpeff}{phyloP100way_vertebrate_prediction_term}{File} = - q?SnpSift dbnsfp?; - $snpeff_cmd{snpeff}{phyloP100way_vertebrate_prediction_term}{vcf_key} = - q?dbNSFP_phyloP100way_vertebrate?; - $snpeff_cmd{snpeff}{phyloP100way_vertebrate_prediction_term}{info} = -q?##INFO=?; - - $snpeff_cmd{snpeff}{q{GERP++_RS_prediction_term}}{File} = q{SnpSift dbnsfp}; - $snpeff_cmd{snpeff}{q{GERP++_RS_prediction_term}}{vcf_key} = - q{dbNSFP_GERP___RS}; - $snpeff_cmd{snpeff}{q{GERP++_RS_prediction_term}}{info} = -q?##INFO=?; - return %snpeff_cmd; -} - sub define_consequence_severity { ## Function : Defines the precedence of consequences for SO-terms