Attention ! Gitlab fournissant maintenant nativement des certificats Let’s Encrypt aux domaines personnalisés des Gitlab Pages, nous avons coupé notre service qui le faisait automatiquement pour vous.

Il est impératif, pour que votre domaine personnalisé continue à avoir un certificat Let’s Encrypt à jour, d’activer la fonctionnalité native dans les paramètres de votre projet. Cette activation remplacera votre certificat actuel par un nouveau certificat Let’s Encrypt géré par Gitlab.

Voir les détails sur https://docs.framasoft.org/fr/gitlab/gitlab-pages-le.html

Commit f79d3b38 authored by Sebastien Carrere's avatar Sebastien Carrere

Implementation de WS + creation blastdb avec query builder

parent aa127ac4
......@@ -6,58 +6,25 @@ use ParamParser;
use GeneralBioinfo;
use Cwd;
use JSON;
use File::Basename;
use File::Temp qw/ tempfile tempdir /;
use Data::Dumper;
use FindBin;
my $DBNAME = 'orthoMCL.db';
my $VERBOSE = &FALSE;
=pod
#LISTER LES PROTEOMES
@/get/proteomes
SELECT proteome.* FROM proteome;
#LISTER LES PROTEINES DONT L'ACCESSION CONTIENT $QUERY
@/get/proteins?accession=$QUERY
SELECT protein.* FROM protein WHERE protein.accession LIKE '%$QUERY%';
#LISTER LES PROTEINES DU PROTEOME $CODE ET DONT L'ACCESSION CONTIENT $QUERY
@/get/proteins?accession=$QUERY&proteome=$CODE
SELECT protein.* FROM protein,proteome WHERE proteome.code = '$CODE' AND protein.proteome_id = proteome.id AND protein.accession LIKE '%$QUERY%';
#LISTER LES PROTEINES DONT L'ANNOTATION CONTIENT $QUERY
@/get/proteins?annotation=$QUERY
SELECT protein.* FROM protein WHERE protein.annotation LIKE '%$QUERY%';
#LISTER LES PROTEINES DU PROTEOME $CODE ET DONT L'ANNOTATION CONTIENT $QUERY
@/get/proteins?annotation=$QUERY&proteome=$CODE
SELECT protein.* FROM protein,proteome WHERE proteome.code = '$CODE' AND protein.proteome_id = proteome.id AND protein.annotation LIKE '%$QUERY%';
#LISTER LES GROUPES DONT L'ANNOTATION CONTIENT $QUERY
@/get/groups?annotation=$QUERY
SELECT orthomclGroup.* FROM orthomclGroup WHERE orthomclGroup.annotation LIKE '%$QUERY%';
#LISTER LES GROUPES QUI CONTIENNENT AU MOINS UNE SEQUENCE DES PROTEOMES $CODE1, $CODE2
@/get/groups?in=$CODE1,$CODE2
#LISTER LES GROUPES QUI CONTIENNENT AU MOINS UNE SEQUENCE DES PROTEOMES $CODE1, $CODE2 ET PAS DE SEQUENCE DE $CODE3
@/get/groups?in=$CODE1,$CODE2&out=$CODE3
#LISTER LES GROUPES QUI NE CONTIENNENT PAS DE SEQUENCE DE $CODE1
@/get/groups?out=$CODE1
#LISTER LES GROUPES QUI CONTIENNENT AU MOINS UNE SEQUENCE DES PROTEOMES $CODE1, $CODE2 ET DONT L'ANNOTATION CONTIENT $QUERY
@/get/groups?in=$CODE1,$CODE2&annotation=$QUERY
#LISTER LES GROUPES OU TOUS LES PROTEOMES SONT PRESENTS SAUT $CODE1
@/get/groups?in=_ALL&out=$CODE1
=cut
my $O_CONF;
MAIN:
{
$O_CONF = New ParamParser('INIT');
$O_CONF->SetBehaviour('use_substitution_table');
$O_CONF->SetSubstitution('%S', \$O_CONF->Get('portal_web_server'));
$O_CONF->Update("$FindBin::RealBin/../../site/cfg/site.cfg", 'O');
my $o_param = New ParamParser('GETOPTLONG', \&Usage, 'verbose', 'dir=s');
$VERBOSE = &TRUE if ($o_param->IsDefined('verbose'));
......@@ -81,7 +48,8 @@ MAIN:
my $rh_analysis = from_json(`cat $analysis_cfg`);
my $contact = $rh_analysis->{'analysis'}->{'contact'};
my $title = $rh_analysis->{'analysis'}->{'title'};
my $rh_proteome_files = $rh_analysis->{'analysis'}->{'proteomes'};
&CreateSchemaDB($outdir);
......@@ -97,8 +65,15 @@ MAIN:
&LoadProteomes($outdir,$proteome_tabfile);
&LoadGroupProteomeAssociation($outdir,$orthomclGroup_proteome_association);
&LoadProteins($outdir,$proteins_tabfile);
#MAKEBLASTDB
&MakeBlastDB($outdir,$rh_proteome_files);
my $analysis_url = $O_CONF->Get('portal_web_server') . $O_CONF->Get('portal_http_root') . '?view='.basename($outdir).'&owner='. $contact;
&SendMail($contact, "[ORTHOMCL-COMPANION] $title query builder is ready", "Check your analysis on the website at:\n$analysis_url");
......@@ -205,6 +180,26 @@ sub Log
}
sub MakeBlastDB
{
my ($outdir,$rh_proteome_files) = @_;
mkdir -p "$outdir/blastdb" unless -d "$outdir/blastdb";
my @a_dblist = ();
foreach my $proteome_code (keys %{$rh_proteome_files})
{
my $proteome_file = $rh_proteome_files->{$proteome_code}->{'fasta'};
my $dbname = "$outdir/blastdb/$proteome_code";
push (@a_dblist, $dbname);
my $cmd = "$FindBin::RealBin/../ext/ORTHOMCLV1.4-BBRIC/bin/makeblastdb -out $dbname -dbtype prot -parse_seqids -in $proteome_file";
system ("($cmd >> $outdir/db.build.out ) 2> $outdir/db.build.err");
}
my $cmd = "$FindBin::RealBin/../ext/ORTHOMCLV1.4-BBRIC/bin/blastdb_aliastool -title ALL -out $outdir/blastdb/_ALL -dbtype prot -dblist '" . join (' ' , @a_dblist) . "'";
system ("($cmd >> $outdir/db.build.out ) 2> $outdir/db.build.err");
return;
}
sub ParseProteomes
{
......@@ -354,12 +349,18 @@ sub ParseOrthoMCLResults
next if ($orthomcl_grp_line =~ /^#/);
my @a_fields = split (/\t/, $orthomcl_grp_line);
my %h_annotations = ();
my $annotation = '';
foreach my $i (@{$h_headers{'annotation'}})
{
$annotation .= '; ' . $a_fields[$i] if ($a_fields[$i] ne '');
$h_annotations{$a_fields[$i]} = 1 if ($a_fields[$i] ne '');
}
$annotation .= join (';', keys %h_annotations);
#CREATE TABLE group (id INTEGER PRIMARY KEY ASC, accession TEXT, genes INTEGER, taxa INTEGER, annotation TEXT);
print $fh_orthomcl_tabfile $orthomcl_id . "\t"
. $a_fields[$h_headers{'accession'}] ."\t"
......@@ -387,6 +388,25 @@ sub ParseOrthoMCLResults
sub SendMail
{
my ($email, $subject, $body) = @_;
my $mail_prog = 'Mail';
my $mail_cmd = "$mail_prog -s \"$subject\" ";
$mail_cmd .= " $email";
open(MAIL, "| $mail_cmd") || die("ERROR $mail_cmd : $!");
print MAIL <<END;
$body
END
close MAIL;
return 1;
}
sub Usage
{
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment