diff --git a/.gitignore b/.gitignore index b3f5b57..183836a 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ inc/ nytprof.out pm_to_blib pod2htm*.tmp +fatlib/ diff --git a/Build.PL b/Build.PL new file mode 100644 index 0000000..3cacc79 --- /dev/null +++ b/Build.PL @@ -0,0 +1,32 @@ +use strict; +use warnings; +use Module::Build; + +use 5.008; + + +my $builder = Module::Build->new( + module_name => 'ELM', + license => 'lgpl_3', + dist_author => 'Matt Oates ', + dist_abstract => 'CLI tool for assigning Eukaryotic Linear Motifs from the ELM.eu.org database', + create_makefile_pl => 0, #'traditional', + script_files => 'bin/melm', + create_readme => 0, + requires => { + 'LWP::UserAgent' => '6.15', + 'BioPerl' => '1.7.2', + 'Class::Tiny' => '1.004', + 'Pod::Usage' => '1.69' + }, + build_requires => { + 'Test::More' => '0.47', + 'Test::Pod::Coverage' => '1.10', + 'Test::Pod' => '1.51', + 'Devel::Cover' => '1.23', + 'Devel::Cover::Report::Coveralls' => '0.11' + }, +); + +$builder->create_build_script(); + diff --git a/CHANGES.md b/CHANGES.md index 67275f3..a6d0932 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,27 +1,32 @@ -###2014-08-30 - * First features added. +###2019-05-17 + * Updated timeout so that downloads from ELM.eu.org are more likely to succeed. + * Cut a new maintenance release 1.4.2 -###2014-09-05 - * Masking with only specific ELM classes included based on expect value and motif type +###2016-07-05 + * Majority of refactor complete -###2014-09-08 - * ELM instance downloading - * False Positive logic filtering based on ELM instances library. - * GFF3 and assignment output +###2016-06-25 + * Huge refactor into split packages allowing more ELM based tools, releases now are fatpack + +###2016-05-23 + * Removed bitrot due to changes at ELM.eu.org and enabled support for v1.4 of ELM + +###2014-09-10 + * Allowed for the script to upgrade itself from GitHub and made it a bit more friendly to use ###2014-09-09 * Integrated ANCHOR predictions if this is installed on the system (independent of OS) * Limit motif assignment to predicted binding regions (MoRF) * Limit motif assignment to predicted disordered regions -###2014-09-10 - * Allowed for the script to upgrade itself from GitHub and made it a bit more friendly to use +###2014-09-08 + * ELM instance downloading + * False Positive logic filtering based on ELM instances library. + * GFF3 and assignment output -###2016-05-23 - * Removed bitrot due to changes at ELM.eu.org and enabled support for v1.4 of ELM +###2014-09-05 + * Masking with only specific ELM classes included based on expect value and motif type -###2016-06-25 - * Huge refactor into split packages allowing more ELM based tools, releases now are fatpack +###2014-08-30 + * First features added. -###2016-07-05 - * Majority of refactor complete diff --git a/README.md b/README.md index b0f5f0a..0c9c1a9 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ License ======= melm - Mask and assign ELM motifs in protein sequence libraries - (C) 2014-2016 Dr Matt E. Oates + (C) 2014-2019 Dr Matt E. Oates This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as diff --git a/bin/melm b/bin/melm index 3476847..a0bcc9e 100755 --- a/bin/melm +++ b/bin/melm @@ -68,6 +68,10 @@ If you have used mELM with ANCHOR predictions please cite the following: =head1 EXAMPLES +First time running the script, get the ELM library locally installed to your home + + melm --update + Soft mask regions of a protein that do not contain any plausible ELM motifs melm human_proteins.fa > human_proteins_motifs.fa @@ -80,10 +84,14 @@ Mask all PTM sites with 'X' in a set of seqences melm --hard-mask --mask-motifs --type=MOD human_proteins.fa > human_no_ptms.fa -Get a GFF3 file for a whole genomes worth of protein annotations +Get a GFF3 file for a whole genome's worth of protein annotations melm --assign --GFF3 human_proteins.fa > human_motifs.gff3 +Get another GFF3 file but this time be strict on assignment to those active in native disordered state + + melm --assign --GFF3 --logic-filter --disorder-filter human_proteins.fa > disordered_hiqual_human_motifs.gff3 + Get the latest ELM classes library for use in another script or by yourself melm --update --list-classes @@ -99,7 +107,7 @@ B - I =head1 LICENSE melm - Mask and assign ELM motifs in protein sequence libraries - (C) 2014-2016 Dr Matt E. Oates + (C) 2014-2019 Dr Matt E. Oates This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as @@ -116,6 +124,10 @@ B - I =head1 EDIT HISTORY +2019-05-17 + * Updated timeout so that downloads from ELM.eu.org are more likely to succeed. + * Cut a new maintenance release 1.4.2 + 2016-07-05 - Matt Oates * Majority of refactor complete @@ -147,6 +159,8 @@ B - I =head1 TODO * Create an HTML output report with everything in + * Get the interaction partner data and report on it + * Do some domain assignment and match up the PDB interaction partners =cut @@ -167,7 +181,7 @@ use ELM; use ELM::Utils 'get_www'; #Current version of the script -our $VERSION = "v1.4.1"; +our $VERSION = "v1.4.2"; #User options my $help; @@ -220,7 +234,7 @@ my @fasta_files = @ARGV; #Print out some help if it was asked for or if no arguments were given. pod2usage(-exitstatus => 0, -verbose => 2) if $help; -pod2usage(-exitstatus => 0, -verbose => 1, -msg => "mELM version $VERSION by Matt Oates (C) 2014-2016. Please provide some sequence files to mask or assign ELM motifs to.") +pod2usage(-exitstatus => 0, -verbose => 1, -msg => "mELM version $VERSION by Matt Oates (C) 2014-2019. Please provide some sequence files to mask or assign ELM motifs to.") unless $update or $upgrade or $list_classes or $list_instances or scalar @fasta_files >= 1; my $elm = ELM->new( diff --git a/lib/ELM.pm b/lib/ELM.pm index fcad47a..e9233d8 100644 --- a/lib/ELM.pm +++ b/lib/ELM.pm @@ -1,4 +1,4 @@ -package ELM v1.4.1; +package ELM v1.4.2; =encoding UTF-8 =head1 NAME @@ -6,7 +6,7 @@ ELM - Class to do analysis with the ELM regex library =head1 VERSION -Version v1.4.1 +Version v1.4.2 =cut @@ -219,7 +219,7 @@ If you have used mELM with ANCHOR predictions please cite the following: =head1 LICENSE AND COPYRIGHT -Copyright 2016 Matt Oates. +Copyright 2019 Matt Oates. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as diff --git a/lib/ELM/AminoAcids.pm b/lib/ELM/AminoAcids.pm index 41b136b..0a7549b 100644 --- a/lib/ELM/AminoAcids.pm +++ b/lib/ELM/AminoAcids.pm @@ -1,4 +1,4 @@ -package ELM::AminoAcids v1.4.1; +package ELM::AminoAcids v1.4.2; require Exporter; =encoding UTF-8 =head1 NAME @@ -7,7 +7,7 @@ ELM::AminoAcids - Functions for dealing with amino acid specific calculations =head1 VERSION -Version v1.4.1 +Version v1.4.2 =cut @@ -142,7 +142,7 @@ If you have used mELM with ANCHOR predictions please cite the following: =head1 LICENSE AND COPYRIGHT -Copyright 2016 Matt Oates. +Copyright 2019 Matt Oates. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as diff --git a/lib/ELM/Anchor.pm b/lib/ELM/Anchor.pm index 2b6e186..63652be 100644 --- a/lib/ELM/Anchor.pm +++ b/lib/ELM/Anchor.pm @@ -1,4 +1,4 @@ -package ELM::Anchor v1.4.1; +package ELM::Anchor v1.4.2; =encoding UTF-8 =head1 NAME @@ -6,7 +6,7 @@ ELM::Anchor - Class to wrap ANCHOR and get assignments =head1 VERSION -Version v1.4.1 +Version v1.4.2 =cut @@ -194,7 +194,7 @@ If you have used mELM with ANCHOR predictions please cite the following: =head1 LICENSE AND COPYRIGHT -Copyright 2016 Matt Oates. +Copyright 2019 Matt Oates. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as diff --git a/lib/ELM/Calc.pm b/lib/ELM/Calc.pm index 81f8558..82088a4 100644 --- a/lib/ELM/Calc.pm +++ b/lib/ELM/Calc.pm @@ -1,4 +1,4 @@ -package ELM::Calc v1.4.1; +package ELM::Calc v1.4.2; require Exporter; =encoding UTF-8 =head1 NAME @@ -7,7 +7,7 @@ ELM::Calc - Functions for calculating sequence assignment specific tasks =head1 VERSION -Version v1.4.1 +Version v1.4.2 =cut @@ -138,7 +138,7 @@ If you have used mELM with ANCHOR predictions please cite the following: =head1 LICENSE AND COPYRIGHT -Copyright 2016 Matt Oates. +Copyright 2019 Matt Oates. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as diff --git a/lib/ELM/Library.pm b/lib/ELM/Library.pm index 19a4798..f05a2aa 100644 --- a/lib/ELM/Library.pm +++ b/lib/ELM/Library.pm @@ -1,4 +1,4 @@ -package ELM::Library v1.4.1; +package ELM::Library v1.4.2; =encoding UTF-8 =head1 NAME @@ -6,7 +6,7 @@ ELM::Library - Class to hold the ELM regex library =head1 VERSION -Version v1.4.1 +Version v1.4.2 =cut @@ -170,7 +170,7 @@ sub _get_instance_seqs($self) { sub _update_elm_instances($self) { my $instances_version; my %instance_logic = ('false positive' => 'FP','true negative' => 'TN','true positive', => 'TP', 'unknown' => 'U'); - my $instances_tsv = get_www('http://elm.eu.org/instances.tsv?q=*&taxon=&instance_logic='); + my $instances_tsv = get_www('http://elm.eu.org/instances.tsv?q=*'); my %uniprot_sequences = $self->_get_instance_seqs(); #Each record looks like: #Accession, ELMType, ELMIdentifier, ProteinName, Primary_Acc, Accessions, Start, End, References, Methods, InstanceLogic, PDB, Organism @@ -234,7 +234,7 @@ If you have used mELM with ANCHOR predictions please cite the following: =head1 LICENSE AND COPYRIGHT -Copyright 2016 Matt Oates. +Copyright 2019 Matt Oates. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as diff --git a/lib/ELM/Utils.pm b/lib/ELM/Utils.pm index 1a262a7..850fd52 100644 --- a/lib/ELM/Utils.pm +++ b/lib/ELM/Utils.pm @@ -1,4 +1,4 @@ -package ELM::Utils v1.4.1; +package ELM::Utils v1.4.2; require Exporter; =encoding UTF-8 =head1 NAME @@ -7,7 +7,7 @@ ELM::Utils - Common helper functions =head1 VERSION -Version v1.4.1 +Version v1.4.2 =cut @@ -49,6 +49,7 @@ sub get_www($url) { } #Decided to localise this and just handle checking for deps properly my $ua = LWP::UserAgent->new; + $ua->timeout(600); # Wait at least 10 minutes, ELM can be very slow to respond my $response = $ua->get($url); if ($response->is_success) { @@ -105,7 +106,7 @@ If you have used mELM with ANCHOR predictions please cite the following: =head1 LICENSE AND COPYRIGHT -Copyright 2016 Matt Oates. +Copyright 2019 Matt Oates. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as