Wiki GWAS - Obtention des Seuils par la methode Muller¶
- Wiki GWAS - Obtention des Seuils par la methode Muller
Récupérer une version de dev au CTIG¶
svn co https://forge-dga.jouy.inra.fr/svn/ldmuller/trunk muller-dev
Compilation au CTIG Mode Debug (Pour du Dev)¶
mkdir build cd build cmake -DCMAKE_Fortran_COMPILER=ifort -DCMAKE_BUILD_TYPE=Debug ../ make
Compilation au CTIG Release¶
mkdir build cd build cmake -DCMAKE_Fortran_COMPILER=ifort ../ make
Spécifications techniques¶
Organisation des sources¶
Le repertoire src contient- le module cli pour la gestion des options en ligne de commande
- la fonction prob.f routine pour le tirage des simuls
- le programme main.f90 : Appel des Blups successifs pour chaque position testée puis obtention des seuils par la méthode Muller et al
- le repertoire blupf90 contenant le module blupf90 (Misztal/Tsuruta/Aguilar)
Module BlupF90¶
Le programme blupf90 (Misztal/Tsuruta/Aguilar) a été transformé en module pour ameliorer l'execution du GWAS.
Contenu du module module_blupf90.f90
- la definition du module : source:trunk/src/blupf90/module_blupf90.f90
- L'entrée du programme est la fonction exec_blupf90
Modifications du programme (module BLUPF90 : source:trunk/src/blupf90/module_blupf90.f90) :
- La lecture du fichier parametre est remplacé par l'utilisation du type structuré type(Param_blupf90)
- Les solutions du blup sont stoquées dans le type structuré type(Solution_blupf90)
- Support du multithreading OMP (modification des modules fspack90.f et fspak.f pour "privatiser" les variables statiques)
- Exemple d'utilisation du module : subroutine test_subroutine_blupf90 source:trunk/src/blupf90/PROG_TESTMODBLUPF90.f90
type(Param_blupf90)¶
type Param_blupf90
integer :: ntrait=0,& !//number of traits
neff=0,& !//number of effects
miss=0 !//value of missing trait/effect
integer,allocatable :: pos_y(:) !//positions of observations
integer :: pos_weight !//position of weight of records; zero if none
integer,allocatable :: pos_eff(:,:),& !//positions of effects for each trait
nlev(:),& !//number of levels
effecttype(:),& !//type of effects
nestedcov(:,:),&!//position of nesting effect for each trait if the effect is nested covariable
randomtype(:),& !//status of each effect, as above
randomnumb(:),& !//number of consecutive correlated effects
offset(:)
real (rh), allocatable :: r(:,:),& !//residual (co)variance matrix
gcov(:,:,:) !//The random (co)variance matrix for each trait
real :: conv_crit = -1
integer :: maxrounds = -1
character (20) :: solv_method = "PCG"
real :: r_factor = -1
integer :: blksize = -1
integer :: mis = 0
logical :: lchk_lev = .true.
end type Param_blupf90
type(Solution_blupf90)¶
type Solution_blupf90
real , dimension(:,:),pointer :: A
real , dimension(:,:),pointer :: B
real , dimension(:,:),pointer :: C
!// D is a sparse matrix...seulement les individus phenotype et genotypé ont une valeur
real , dimension(:,:),pointer :: D
integer , dimension(:),pointer :: Dani
integer :: nlevtot = 0 !// nombre total d'effet
integer :: nhaplo = 0 !// nombre d'haplotype
integer :: nani = 0 !// nombre d'animaux pour les effets polygenique
real :: test=0.d0
real :: pvalue=0.d0
real , dimension(:),pointer :: sol !// Solution pour chaque niveau d'haplotype (dim 1 dans le cas de 1 unique SNP)
real :: solmu=0.d0
real , dimension(:),pointer :: std !// STD Solution pour chaque niveau d'haplotype (dim 1 dans le cas de 1 unique SNP)
real :: stdmu=0.d0
end type Solution_blupf90
Déroulement du programme¶
Initialisation des options en ligne de commande¶
!==================================================================================================================
!
! Lecture des options en entrée de l'application
!
! Initialisations des parametres suivants
!
! genotypeFile : fichier contenant les genotypes
! modelFile : fichier decrivant le fichier de phenotypes et des effets de nuisance
! pedigFile : fichier pedigree
! dataFile : fichier des phenotypes et effets fixé
! sizeid : nombre de caracteres du codage de l'ID dans le fichier de genotype
! startpos : premiere position à testé dans le GWAS
! endpos : derniere position
! npostotal : nombre de position total
! vary : variance phenotypique
! h2 : heritabilité
! vare : variance residuelle déduit de h2 et vary
! varg : variance genetique deduit de h2 et vary
! invvare : inverse de la variance residuelle
! minmaf : minimum MAF autorisé pour l'analyse GWAS
! nsim
!
!
call set_options_gwas
Note sur Blupf90 et import de la routine dans le logiciel¶
Routine read_parameter¶
localisé dans lib/blupf1.f90- datafile <- snpregX.dat
- ntrait <- number of trait (a priori 1 dans l'appli)
- neff <- nombre d effet dans le model (nombre de colonne de snpregX.dat + ID + phenotype + genotype au QTL)
- pos_y (ntrait) position du phenotype dans le fichier de donnees
- pos_eff(neff) position de l'effet dans le fichier des donnees
- nlev(neff) : nombre de niveau par effet (1 si covariable)
- effecttype(neff) : cross,cov,...
- nestedcov :
- r(1,1) : variance residuelle
- random group curr_eff=5,randomnumb(curr_eff)=1 ...
- RANDOM_TYPE etant add_animal, on a curr_eff=5, avec randomtype(curr_eff)=g_A
- randomfile(curr_eff)
- g(curr_eff,1,1)
Implementation/ correspondances des colonne dans le modele¶
Description du fichier performance generé pour blupf90
Fichier test_ généré par blupf90
Fichier solu_ généré par blupf90