User Tools

Site Tools


chadoapollogbrowse

Contacts: Emeline.Deleury@sophia.inra.fr, Jerome.Gouzy@toulouse.inra.fr

Index

  • Installation/Compilation de Postgresql8.1.13 sur port 5434
  • Installation de Bioperl
  • Installation de chado
  • Installation de gbrowse
  • Chargement de la base chado a partir des données d'un projet EuGene
  • Différents messages d'erreurs recontrés avec pour certains la solution
  • Commandes utiles
A voir aussi
http://gmod.org
http://gmod.org/wiki/Load_GFF_Into_Chado
http://gmod.org/wiki/Jim%27s_installation_notes
fichier schema/chado/INSTALL.Chado (du CVS)
http://www.gmod.org/wiki/index.php/PostgreSQL_Performance_Tips

Installation/Compilation de Postgresql8.1.13 sur port 5434 (defaut=pg8.3 sur port 5432)

download des sources

cd /usr/local
wget ftp://ftp4.fr.postgresql.org/pub/mirrors/postgresql/source/v8.1.17/postgresql-8.1.17.tar.gz
gzip -cd postgresql-8.1.17.tar.gz | tar xvf -
./configure --prefix=/usr/local/pgsql-8.1.17 --with-pgport=5434 --with-perl 
(a partir d'une debian vierge j'ai juste du faire apt-get install gcc libreadline5-dev zlib1g-dev libextutils-autoinstall-perl libperl-dev)
make
make install

création du répertoire de données

mkdir -p /sgbd/postgresql/8.1/data
chown postgres /sgbd/postgresql/8.1/data
su - postgres
/usr/local/pgsql-8.1.17/bin/initdb -D /sgbd/postgresql/8.1/data --locale=C 

configuration perso pour exécuter les bonnes versions des commandes

vi ~gouzy/.cshrc
alias 8.1 'setenv PATH /usr/local/pgsql-8.1.17/bin/:$PATH'
su - postgres
vi .profile
alias 8.1="export PATH=/usr/local/pgsql-8.1.17/bin/:$PATH"
penser a executer l'alias pour etre dans la bonne version

en tant que root creer le fichier /etc/init.d/postgresql-8.1

#! /bin/bash
# Script de demarrage de postgresql, recompile a partir des sources par manu
# On passe en user postgres, puis on passe la main a pg_ctl en lui passant tous les arguments
# Pas la peine de lui passer le switch -D, puisqu'on utilise $PGDATA 
# NE PAS LUI PASSER LE SWITCH -l, IL EST FIGE DANS LA COMMANDE
export PGDATA=/sgbd/postgresql/8.1/data/
su -c "/usr/local/pgsql-8.1.17/bin/pg_ctl -l /var/log/postgresql/postgresql-8.1.log $*" postgres
puis /etc/init.d/postgresql-8.1 restart|stop/start a chaque modification des fichiers de conf
pour qu'il soit chargé automatiquement au demarrage 
update-rc.d postgresql-8.1 defaults (ou runlevel ; cd /etc/rcVALEURRENVOYEEPARRUNLEVEL.d ; ln -s ../init.d/postgresql-8.1 S19postgresql-8.1 #S19 car postgres 8.3 etait en S19)

création de l'utilisateur pour phppgadmin

/usr/local/pgsql-8.1.17/bin/createuser -P
Enter name of role to add: ppa
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) y
CREATE ROLE

creation du superuser chado

createuser --createdb chado_user -P
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
CREATE ROLE

creation d'un utilisateur read-only de chado

createuser apollo_user
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
CREATE ROLE

gestion du langage plpgsql

createlang plpgsql template1

/sgbd/postgresql/8.1/data/pg_hba.conf

local   all         postgres                       ident sameuser
local   all         gouzy                          ident sameuser
# ppa est l'utilisateur phpPostgresAdmin de lipm-intranet
host    all         ppa         147.99.102.37     255.255.255.255   md5  # machine qui execute phppgadmin
# chado_user utilisable a partir du serveur bioinfo, apollo_user a partir de partout (en lecture seule)
host    all         chado_user  147.99.102.27     255.255.255.255   md5  # machine(s) qui accède(nt) au moteur via le réseau
host    all         apollo_user 0.0.0.0/0       trust

/sgbd/postgresql/8.1/data/postgresql.conf

port=5434
listen_addresses = '*' 
shared_buffers = 50000 (def=1000; sur debian necessite modif param kernel ci dessous)
work_mem = 16384 (def=1024)
fsync = off  (def=on, attention)
checkpoint_segments = 100 (def=3)
checkpoint_timeout = 1800 (def=300)
stats_row_level = on (def=off)
stats_reset_on_server_start = on (def=off)
autovacuum = on (def=off)
$ sysctl -w kernel.shmmax=536870912
$ sysctl -w kernel.shmall=536870912
+ ajout dans /etc/sysctl.conf.

Installation de Gbrowse 2.0! et de ses dépendences (Bioperl et al.)

cf http://gmod.org/wiki/GBrowse_2.0_Prerequisites section debian. On fait comme eux, on essaye de faire gerer le max de choses via debian plutot que cpan.

sudo apt-get install wget
sudo apt-get install cvs
sudo apt-get install subversion
sudo apt-get install libc6-dev
sudo apt-get install build-essential
sudo apt-get install libpng12-dev
sudo apt-get install apache2
sudo apt-get install libgd-gd2-perl
sudo apt-get install libmodule-build-perl
sudo apt-get install libio-string-perl
sudo apt-get install libcgi-session-perl
sudo apt-get install libwww-perl
sudo apt-get install libstatistics-descriptive-perl
sudo apt-get install libjson-perl libjson-any-perl
sudo apt-get install libdbd-pg-perl
sudo apt-get install libapache2-mod-perl2
sudo apt-get install libapache2-mod-fastcgi  # or libapache2-mod-fcgid
sudo apt-get install libfcgi-perl
sudo apt-get install inkscape
sudo apt-get install libsvg-perl
sudo apt-get install perl-doc
# rajoute JG pour tenter d'eviter les problemes de parsers sax plus tard 
sudo apt-get install libxml-simple-perl
sudo apt-get install libxml-twig-perl
sudo apt-get install libgraphviz-perl
sudo apt-get install libxml-perl
sudo apt-get install libsoap-lite-perl
sudo apt-get install libxml-dom-xpath-perl
sudo perl -MCPAN -e 'install GD::SVG'
sudo perl -MCPAN -e 'install Bio::Perl'
sudo perl -MCPAN -e 'install Bio::Graphics'
# et il a fallut rajouter
sudo apt-get install libdbd-mysql-perl  libfile-nfslock-perl libdb-file-lock-perl
sudo perl -MCPAN -e 'force install Safe::World'
sudo perl -MCPAN -e 'install Bio::DB::Das::Chado'
cd /usr/local/bioinfo
mkdir gmod ; cd gmod
cvs -d:pserver:anonymous@gmod.cvs.sourceforge.net:/cvsroot/gmod login
cvs -d:pserver:anonymous@gmod.cvs.sourceforge.net:/cvsroot/gmod co Generic-Genome-Browser
cd Generic-Genome-Browser
perl Build.PL
./Build test
./Build config
Beginning interactive configuration
Directory for GBrowse's config and support files? [/usr/local/bioinfo/gmod/etc/gbrowse2] 
Directory for GBrowse's static images & HTML files? [/www-meloidogyne/gbrowse2]          
Directory for GBrowse's temporary data [/www-meloidogyne/gbrowse2/tmp]                   
Directory for GBrowse's example databases [/www-meloidogyne/gbrowse2/databases]          
Directory for GBrowse's CGI script executables? [/www-meloidogyne/cgi-bin/gb2]           
Internet port to run demo web site on (for demo)? [8000]                                 
Apache loadable module directory (for demo)? [/usr/lib/apache2/modules]                  
User account under which Apache daemon runs? [www-data]                                  
Automatically update Apache config files to run GBrowse? [y]                             
Automatically update system config files to run gbrowse-slave? [y]            
./Build install
# a priori l'installer ne prend pas en compte la modif sur l'emplacement des databases
mv /var/www/gbrowse2/databases/ /www-meloidogyne/gbrowse2/
Pour le fichier de conf Gbrowse1 j'avais
[GENERAL]
description =  M.incognita
db_adaptor    = Bio::DB::Das::Chado
database      = dbi:Pg:dbname=midvpt2;host=147.99.102.35;port=5432
user          = apollo_user
pass          =
db_args       = -inferCDS 1, -srcfeatureslice 1
Pour Gbrowse2, j'ai du le modifier pour que cela marche (je n'ai pas trouve de doc sur ce sujet, j'ai regardé le code)
[GENERAL]
description =  M.incognita
db_adaptor    = Bio::DB::Das::Chado
db_args   = -dsn dbi:Pg:dbname=midvpt2;host=147.99.102.35;port=5432
            -user apollo_user
            -pass ''

Installation de chado

Chargement de la base chado a partir d'un projet EuGene

chargement des sequences

Rajouter EuGene comme programme possible

insert into analysis (name,program, programversion) values ('EuGene_Mt', 'EuGene', '3.6a') ;

$GMOD_ROOT/bin/gmod_fasta2gff3.pl (pas terrible, a l'air spécifique)

ls MtChr?  > MtChr.fof
$EGNP/bin/int/chado/convert_fasta2chadogff3.pl --fof MtChr.fof --outfile MtChr.fof.chado_sequence.gff3
chargement des annotation gff3 de eugene

création d'un petit programme gmod_bulk_templ.sh pour (i) ne pas avoir a resaisir en permanence les param (ii) penser a supprimer les lignes de commentaires qui troublent le loarder

#!/bin/sh
# $2 --analysis
# $1 gff3 file
grep -v ^# $1 | $GMOD_ROOT/bin/gmod_bulk_load_gff3.pl $2 --organism medicago --dbname Mt3.0 --dbuser chado_user --dbport 5434 --dbhost localhost --dbpass MonMdp --noexon --recreate_cache

on l'utilise ainsi pour charger les annotations

find . -name "*.gff3" -exec gmod_bulk_templ.sh '{}' \; 

ou pour charger les analyses

find . -name "*.gff3" -exec gmod_bulk_templ.sh '{}' --analysis \; 
chargement des blastx

les convertir en gff3 s'il ne le sont pas deja

find . -maxdepth 1 -name “*.blast?” -exec $EGNP/bin/int/misc/convert_Blastx4egn2gff3.pl -i '{}' \;

il faut faire attention a vérifier à ce que les ID soient uniques non seulement dans un fichier gff3 mais aussi entre fichiers

Différents messages d'erreurs recontrés avec pour certains la solution

Warning: prerequisite Module::Load 0.16 not found. We have 0.12.

cpan> install Module::Load

GO_ROOT non définie

setenv GO_ROOT /usr/local/share/perl/5.10.0/

Adapter.pm ne retrouve bioperl

ln -s  /usr/local/bioinfo/gmod/share/perl/5.10.0/* /usr/local/bioinfo/gmod/lib/

Warning: the following files are missing in your kit: bin/cxgn/load_cvterms.pl

cd bin/cxgn/ ; ln -s gmod_load_cvterms.pl load_cvterms.pl

could not find ParserDetails.ini in /usr/local/share/perl/5.10.0/XML/SAX Deleting Build

apt-get install libxml-libxml-common-perl
apt-get install libxml-sax-perl libxml-sax-expat-perl foire 
==> perl -MXML::SAX -e "XML::SAX->add_parser(q(XML::SAX::PurePerl))->save_parsers()" !!! Attention ca veut dire que l'on utilise des parseurs natifs en perl!!!

Fatal: cannot call XML::SAX→save_parsers_debian(). You probably have a locally installed XML::SAX module.

probleme lie au précédent et solution alternative 
cd /usr/local/share/perl/5.10.0/XML/ ; mkdir conflict_debian ; mv SAX* conflict_debian puis apt-get -f install

gmod_gff3_preprocessor.pl ne fonctionne pas sur les gff3 qui sortent de eugene

make ontologies

on peut utiliser 1,2,3,4 (alors qu'avant cela ne marchait pas)

[1] Relationship Ontology
[2] Sequence Ontology
[3] Gene Ontology
[4] Chado Feature Properties

on a le message d'erreur suivant, troublant mais pas grave

At the time of this release, DBIx::DBStag is printing an error
when loading some ontologies like this:
DBD::Pg::db do failed: ERROR:  duplicate key violates unique
  constraint "cvterm_c1"
DBD::Pg::db do failed: ERROR:  duplicate key violates unique constraint
  "cvterm_c1"
The cause of these errors is known and does not indicate a problem
with the database or the install procedure.

erreur gbrowse (Could not open database. MSG: trying to find SOFA) + message dans les log de apache DBD::Pg::st execute failed: ERROR: permission denied for relation cv at /usr/local/lib/perl/5.10.0/Bio/DB/Das/Chado.pm line 366.

GRANT SELECT ON feature_synonym,synonym,feature_dbxref,dbxref,feature,featureloc,cvterm,feature_relationship  TO apollo_user;
GRANT SELECT ON analysisfeature,cv,gffatts,feature_cvterm,featureprop,pub,feature_pub,db,analysis,organism,all_feature_names TO apollo_user;

ou alors encore mieux, on peut lire le fichier README.Apollo

sqlt -f PostgreSQL -t TTSchema --template bin/privileges.tmpl  modules/nofuncs.sql | psql -U chado_user Mt3.0 -h localhost
(pour l'utilisateur apollo_user et pour PUBLIC, dans  bin/privileges.tmpl modifier PUBLIC par apollo_user puis reexecuter la commande)

certain script gmod n'utilisent pas GMOD_ROOT ou n'ont pas été modifié lors de l'installation

il faut rajouter une ligne du style en en-tete de ces programmes

use lib "$ENV{GMOD_ROOT}/lib";

Commandes utiles

qu'est ce qui est chargé

select V.name, count(feature_id) from feature F, cvterm V where F.type_id=V.cvterm_id group by V.name ;

les ontologies

SELECT * FROM cv;

Lorsque le gff3 contient des tags non standard

INSERT INTO dbxref (db_id,accession)
  VALUES ( (SELECT db_id FROM db WHERE name='null'),
           'autocreated:description');
INSERT INTO cvterm (name,dbxref_id,cv_id)
  VALUES ('description',
           (SELECT cv_id FROM cv WHERE name='local'),
           (SELECT dbxref_id FROM dbxref WHERE accession='autocreated:description'));

Pour tracer les requetes SQL via gbrowse sans modifier les parametres du moteur postgresql

  • renomer gbrowse en gbrowse.pl
  • le remplacer par un script sh de même nom qui va positionner la variable d'environnement DBI_TRACE
  • spécifier $ENV{DBI_TRACE} ne marche pas (ni dans un bloc BEGIN), il faut que cela soit fait avant que le perl soit exécuté
root@lipm-gbrowse:~# more /usr/lib/cgi-bin/gb2/gbrowse
#!/bin/sh
#lev peut varier de 1 à 15
lev=3
export DBI_TRACE=$lev=/tmp/dbi.$lev.$$.log
perl /usr/lib/cgi-bin/gb2/gbrowse.pl

Modifications dans les modules perl

/usr/local/lib/perl/5.10.1/Bio/Graphics/Browser2/Action.pm:180:    $render->init_plugins() if ($render->db()); # JG, avoid chado db connection if not needed (en mode asynchrone lorsqu'il vérifie si les résultats sont prets il n'est pas nécessaire de se connecter)
/usr/local/lib/perl/5.10.1/Bio/Graphics/Browser2/RegionSearch.pm:130:    # JG for my $dbid ($default_dbid,keys %dbs) {
/usr/local/lib/perl/5.10.1/Bio/Graphics/Browser2/RegionSearch.pm:131:    my @a_dbs = ( defined($dbs{$default_dbid}) ) ? keys %dbs : ($default_dbid,keys %dbs); # JG
/usr/local/lib/perl/5.10.1/Bio/Graphics/Browser2/RenderPanels.pm:251:   return \%d if ($#$labels == -1 ); # JG, parfois le labels est vide
chadoapollogbrowse.txt · Last modified: 2010/08/04 09:35 by 147.99.102.221