m_qtlmap_parameter_file

[ Top ] [ INPUT ] [ Modules ]

NAME

    m_qtlmap_parameter_file -- This modules manages the parameter user file (p_analyse).

SYNOPSIS

DESCRIPTION

NOTES

SEE ALSO


K_CHOLESKY

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_CHOLESKY

DESCRIPTION

   coefficent used in the cholesky decomposition to establish the parameters estimabilities

SOURCE

301       character(len=LEN_L)   , parameter , private :: K_CHOLESKY           ='opt_eps_cholesky'

K_CHROM

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_CHROM

DESCRIPTION

   chromosom list to explore

SOURCE

247       character(len=LEN_L)   , parameter , private :: K_CHROM              ='opt_chromosome'

K_COEFFDA

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_COEFFDA

DESCRIPTION

   output coefficent discriminante analysis result file

SOURCE

180       character(len=LEN_L)   , parameter , private :: K_COEFFDA            ='out_coeffda'

K_FREQALL

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_FREQALL

DESCRIPTION

   Allele frequency information

SOURCE

170       character(len=LEN_L)   , parameter , private :: K_FREQALL            ='out_freqall'

K_GENEA

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_GENEA

DESCRIPTION

   genealogy file

SOURCE

52       character(len=LEN_L)   , parameter , private :: K_GENEA              ='in_genealogy'

K_GENOTYPE

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_GENOTYPE

DESCRIPTION

   genotypics user file

SOURCE

79       character(len=LEN_L)   , parameter , private :: K_GENOTYPE           ='in_genotype'

K_GRID2QTL

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_GRID2QTL

DESCRIPTION

   LRT curves describe in a grid (hypothesis : 2 qtl)

SOURCE

189       character(len=LEN_L)   , parameter , private :: K_GRID2QTL           ='out_grid2qtl'

K_HAPLOTYPES

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

    K_HAPLOTYPES

DESCRIPTION

    haplotypes files

SOURCE

216       character(len=LEN_L)   , parameter , private :: K_HAPLOTYPES         ='out_haplotypes'

K_KEY_DEV_GEN

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_KEY_DEV_GEN

DESCRIPTION

   For experimental methods, this module defines a generic key (opt_key_dev1,opt_key_dev2,...)
   The interpretation of theses keys is in charge of the experimental analysis

SOURCE

465       character(len=LEN_L)   , parameter , private :: K_KEY_DEV_GEN       = 'opt_key_dev'

K_LINEAR_CONV

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_LINEAR_CONV

DESCRIPTION

   Threshold for convergence in the linear mode heteroscedastic

SOURCE

328       character(len=LEN_L)   , parameter , private :: K_LINEAR_CONV        ='opt_eps_linear_heteroscedastic'

K_LONG_MIN_IBS

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_LONG_MIN_IBS

DESCRIPTION

SOURCE

382       character(len=LEN_L)   , parameter , private :: K_LONG_MIN_IBS       ='opt_long_min_ibs'

K_LONGHAP

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_LONGHAP

DESCRIPTION

   Length of the haplotypes to be followed in LD analyses

SOURCE

355       character(len=LEN_L)   , parameter , private :: K_LONGHAP            ='opt_longhap'

K_LRTDAM

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_LRTDAM

DESCRIPTION

    LRT curve output file

SOURCE

160       character(len=LEN_L)   , parameter , private :: K_LRTDAM             ='out_lrtdams'

K_LRTSIRE

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_LRTSIRE

DESCRIPTION

   LRT curve output file (General LRT and by half-sib family)

SOURCE

151       character(len=LEN_L)   , parameter , private :: K_LRTSIRE            ='out_lrtsires'

K_MAP

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_MAP

DESCRIPTION

   map file

SOURCE

43       character(len=LEN_L)   , parameter , private :: K_MAP                ='in_map'

K_MATEFF

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_MATEFF

DESCRIPTION

   output maternal effect file

SOURCE

142       character(len=LEN_L)   , parameter , private :: K_MATEFF             ='out_mateff'

K_MAX_LINEAR_ITERATION

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_MAX_LINEAR_ITERATION

DESCRIPTION

   number maximum of iteration (heteroscedastic linear analysis)

SOURCE

337       character(len=LEN_L)   , parameter , private :: K_MAX_LINEAR_ITERATION = 'opt_max_iteration_linear_heteroscedastic'

K_MINDAMPHASEPROB

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_MINDAMPHASEPROB

DESCRIPTION

   Minimal dam phase probability

SOURCE

274       character(len=LEN_L)   , parameter , private :: K_MINDAMPHASEPROB    ='opt_mindamphaseproba'

K_MINSIREPHASEPROB

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_MINSIREPHASEPROB

DESCRIPTION

   Minimal sire phase probability

SOURCE

283       character(len=LEN_L)   , parameter , private :: K_MINSIREPHASEPROB   ='opt_minsirephaseproba'

K_MODEL

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_MODEL

DESCRIPTION

   model phenotypic user file

SOURCE

88       character(len=LEN_L)   , parameter , private :: K_MODEL              ='in_model'

K_NB_HAPLO_PRIOR

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_NB_HAPLO_PRIOR

DESCRIPTION

   Number maximum of haplotype allowed

SOURCE

364       character(len=LEN_L)   , parameter , private :: K_NB_HAPLO_PRIOR     ='opt_nb_haplo_prior'

K_NDMIN

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_NDMIN

DESCRIPTION

   Minimal number of progeny by dam to considere full sib family in the analysis

SOURCE

256       character(len=LEN_L)   , parameter , private :: K_NDMIN              ='opt_ndmin'

K_OPTIM_H_PREC

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_OPTIM_H_PREC

DESCRIPTION

   precision of numerical computation of the derivate F'(x) = (F(x-h)+F(x+h))/2*h (m_qtlmap_optimization)

SOURCE

436       character(len=LEN_L)   , parameter , private :: K_OPTIM_H_PREC       ='opt_optim_h_precision'

K_OPTIM_MAXEVAL

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_OPTIM_MAXEVAL

DESCRIPTION

  number mmaximum of objective function evaluation

SOURCE

391       character(len=LEN_L)   , parameter , private :: K_OPTIM_MAXEVAL      ='opt_optim_maxeval'

K_OPTIM_MAXTIME

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_OPTIM_MAXTIME

DESCRIPTION

   maximum elapsed time in a optimisation of a objective function

SOURCE

400       character(len=LEN_L)   , parameter , private :: K_OPTIM_MAXTIME      ='opt_optim_maxtime'

K_OPTIM_TOLF

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_OPTIM_TOLF

DESCRIPTION

   tolerance precison of the objective function (m_qtlmap_optimization)

SOURCE

418       character(len=LEN_L)   , parameter , private :: K_OPTIM_TOLF         ='opt_optim_tolf'

K_OPTIM_TOLG

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_OPTIM_TOLG

DESCRIPTION

   tolerance precison of gradient (m_qtlmap_optimization)

SOURCE

427       character(len=LEN_L)   , parameter , private :: K_OPTIM_TOLG         ='opt_optim_tolg'

K_OPTIM_TOLX

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_OPTIM_TOLX

DESCRIPTION

   tolerance precison of the paramter X (m_qtlmap_optimization)

SOURCE

409       character(len=LEN_L)   , parameter , private :: K_OPTIM_TOLX         ='opt_optim_tolx'

K_OUTPUT

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_OUTPUT

DESCRIPTION

   main output result file

SOURCE

229       character(len=LEN_L)   , parameter , private :: K_OUTPUT             ='out_output'

K_OUTSIM

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_OUTSIM

DESCRIPTION

   output result file

SOURCE

106       character(len=LEN_L)   , parameter , private :: K_OUTSIM             ='out_maxlrt'

K_PARAMSIM

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_PARAMSIM

DESCRIPTION

   parameter simulation user file

SOURCE

97       character(len=LEN_L)   , parameter , private :: K_PARAMSIM           ='in_paramsimul'

K_PATEFF

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_PATEFF

DESCRIPTION

   output paternal effect file

SOURCE

133       character(len=LEN_L)   , parameter , private :: K_PATEFF             ='out_pateff'

K_PDECPLE

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_PDECPLE

DESCRIPTION

   output probabilities of join transmission file

SOURCE

124       character(len=LEN_L)   , parameter , private :: K_PDECPLE            ='out_pdedjoin'

K_PDED

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_PDED

DESCRIPTION

   output probabilities of transmission file

SOURCE

115       character(len=LEN_L)   , parameter , private :: K_PDED               ='out_pded'

K_PHASES

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_PHASES

DESCRIPTION

   phases probabilities of reproductor file

SOURCE

198       character(len=LEN_L)   , parameter , private :: K_PHASES             ='out_phases'

K_PHASES_OFFSPRING

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_PHASES_OFFSPRING

DESCRIPTION

   The most likely phase haplotypes for offspring

SOURCE

207       character(len=LEN_L)   , parameter , private :: K_PHASES_OFFSPRING             ='out_phases_offspring'

K_PHASES_OFFSPRING_MARK_END

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_PHASES_OFFSPRING_MARK_END

DESCRIPTION

   Last marker to print the phased haplotypes

SOURCE

454       character(len=LEN_L)   , parameter , private :: K_PHASES_OFFSPRING_MARK_END       ='opt_phases_offspring_marker_end'

K_PHASES_OFFSPRING_MARK_START

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_PHASES_OFFSPRING_MARK_START

DESCRIPTION

   First marker to print the phased haplotypes

SOURCE

445       character(len=LEN_L)   , parameter , private :: K_PHASES_OFFSPRING_MARK_START       ='opt_phases_offspring_marker_start'

K_PROB_HAPLO_MIN

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_PROB_HAPLO_MIN

DESCRIPTION

   miminum probability of a haplotype in the LD analysis

SOURCE

373       character(len=LEN_L)   , parameter , private :: K_PROB_HAPLO_MIN     ='opt_prob_haplo_min'

K_PROB_SEUIL_RECOMB

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_PROB_SEUIL_RECOMB

DESCRIPTION

   Minimal paternal phase probability

SOURCE

346       character(len=LEN_L)   , parameter , private :: K_PROB_SEUIL_RECOMB  ='opt_eps_recomb'

K_PSEUILHWE

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_PSEUILHWE

DESCRIPTION

   Threshold to check the equilibrium of marker transmission within each family

SOURCE

319       character(len=LEN_L)   , parameter , private :: K_PSEUILHWE          ='opt_eps_hwe'

K_RACE

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_race

DESCRIPTION

   breed file of fonder

SOURCE

61       character(len=LEN_L)   , parameter , private :: K_RACE             ='in_race'

K_STEP

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_STEP

DESCRIPTION

   step definition for LA analysis (in Morgan)

SOURCE

265       character(len=LEN_L)   , parameter , private :: K_STEP               ='opt_step'

K_SUMM

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_SUMM

DESCRIPTION

   summary result file

SOURCE

238       character(len=LEN_L)   , parameter , private :: K_SUMM               ='out_summary'

K_THRES_CONFUSION

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_THRES_CONFUSION

DESCRIPTION

   Threshold to test confusion betwwen level inside a contingence matrix

SOURCE

310       character(len=LEN_L)   , parameter , private :: K_THRES_CONFUSION    ='opt_eps_confusion'

K_TRAITS

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_TRAITS

DESCRIPTION

   phenotypics user file

SOURCE

70       character(len=LEN_L)   , parameter , private :: K_TRAITS             ='in_traits'

K_UNKNOWN_GENO

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   K_UNKNOWN_GENO

DESCRIPTION

   Unknown genotype value

SOURCE

292       character(len=LEN_L)   , parameter , private :: K_UNKNOWN_GENO       ='opt_unknown_char'

NUMBER_ALL_KEYS

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   NUMBER_ALL_KEYS

DESCRIPTION

   Number of qtlmap keys

SOURCE

495       integer    , parameter, public              :: NUMBER_ALL_KEYS=NUMBER_AUTO_KEYS+NUMBER_OPT_KEYS

NUMBER_AUTO_KEYS

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   NUMBER_AUTO_KEYS

DESCRIPTION

   number of essential keys to defined by the user in the paramter file

SOURCE

485       integer    , parameter, private              :: NUMBER_AUTO_KEYS=24

NUMBER_OPT_KEYS

[ Top ] [ m_qtlmap_parameter_file ] [ Constants ]

NAME

   NUMBER_OPT_KEYS

DESCRIPTION

   optional keys

SOURCE

475       integer    , parameter, private              :: NUMBER_OPT_KEYS=22

all_key

[ Top ] [ m_qtlmap_parameter_file ] [ Variables ]

NAME

   all_key

DESCRIPTION

   The entirely list of possibility key used by qtlmap

SOURCE

575       character(len=LEN_L)  , dimension(NUMBER_ALL_KEYS) , private :: all_key = (/ &
576                                                                          K_OUTPUT,  &
577                                                                          K_LRTSIRE, &
578                                                                          K_LRTDAM,  &
579                                                                          K_PDED,    &
580                                                                          K_PDECPLE, &
581                                                                          K_PATEFF,  &
582                                                                          K_MATEFF,  &
583                                                                          K_FREQALL, &
584                                                                          K_COEFFDA, &
585                                                                          K_GRID2QTL,&
586                                                                          K_SUMM,    &
587                                                                          K_CHROM,   &
588                                                                          K_NDMIN,   &
589                                                                          K_STEP,    &
590                                                                          K_UNKNOWN_GENO,    &
591                                                                          K_MINDAMPHASEPROB,    &
592                                                                          K_MINSIREPHASEPROB,  &
593                                                                          K_CHOLESKY, &
594                                                                          K_THRES_CONFUSION,   &
595                                                                          K_PSEUILHWE,         &
596                                                                          K_LINEAR_CONV,&
597                                                                          K_MAP,     &
598                                                                          K_GENEA,   &
599                                                                          K_RACE,   &
600                                                                          K_TRAITS,  &
601                                                                          K_GENOTYPE, &
602                                                                          K_MODEL,    &
603                                                                          K_PARAMSIM, &
604                                                                          K_OUTSIM,  &
605                                                                          K_MAX_LINEAR_ITERATION, &
606                                                                          K_PROB_SEUIL_RECOMB,    &
607                                                                          K_PHASES, &
608                                                                          K_PHASES_OFFSPRING, &
609                                                                          K_HAPLOTYPES,&
610                                                                          K_NB_HAPLO_PRIOR,&
611                                                                          K_PROB_HAPLO_MIN,&
612                                                                          K_LONG_MIN_IBS,&
613                                                                          K_LONGHAP,&
614                                                                          K_OPTIM_MAXEVAL,&
615                                                                          K_OPTIM_MAXTIME,&
616                                                                          K_OPTIM_TOLX,&
617                                                                          K_OPTIM_TOLF,&
618                                                                          K_OPTIM_TOLG,&
619                                                                          K_OPTIM_H_PREC,&
620                                                                          K_PHASES_OFFSPRING_MARK_START,&
621                                                                          K_PHASES_OFFSPRING_MARK_END/)

default_values

[ Top ] [ m_qtlmap_parameter_file ] [ Variables ]

NAME

   default_values

DESCRIPTION

   Default values for key predefined by qtlmap.

NOTES

   see the array index_key for correspondence

SOURCE

542       character(len=LEN_L)  , dimension(NUMBER_AUTO_KEYS) , private :: default_values = (/ &
543                                                                          "       ",  &
544                                                                          "       ",  &
545                                                                          "       ",  &
546                                                                          "       ",  &
547                                                                          "0.05   ",  &
548                                                                          "0      ",  &
549                                                                          "0.10   ",  &
550                                                                          "0.90   ",  &
551                                                                          "0.01   ",  &
552                                                                          "0.70   ",  &
553                                                                          "0.01   ",  &
554                                                                          "0.5    ",  &
555                                                                          "30     ",  &
556                                                                          "0.05   ",  &
557                                                                          "200    ",  &
558                                                                          "0.00   ",  &
559                                                                          "4      ",  &
560                                                                          "4      ",  &
561                                                                          "1000000",  &
562                                                                          "1000000",  &
563                                                                          "0.00005",  &
564                                                                          "0.00005",  &
565                                                                          "0.00005",  &
566                                                                          "0.00005"/)

index_key

[ Top ] [ m_qtlmap_parameter_file ] [ Variables ]

NAME

   index_key

DESCRIPTION

   Index keys with a default value

NOTES

    see the array default_values for correspondence

SOURCE

507       character(len=LEN_L)  , dimension(NUMBER_AUTO_KEYS) , private :: index_key     = (/ &
508                                                                          K_OUTPUT,  &
509                                                                          K_SUMM,    &
510                                                                          K_CHROM,   &
511                                                                          K_NDMIN,   &
512                                                                          K_STEP,    &
513                                                                          K_UNKNOWN_GENO,    &
514                                                                          K_MINDAMPHASEPROB,    &
515                                                                          K_MINSIREPHASEPROB,  &
516                                                                          K_CHOLESKY,          &
517                                                                          K_THRES_CONFUSION,   &
518                                                                          K_PSEUILHWE,         &
519                                                                          K_LINEAR_CONV,       &
520                                                                          K_MAX_LINEAR_ITERATION,&
521                                                                          K_PROB_SEUIL_RECOMB, &
522                                                                          K_NB_HAPLO_PRIOR,&
523                                                                          K_PROB_HAPLO_MIN,&
524                                                                          K_LONG_MIN_IBS,&
525                                                                          K_LONGHAP,&
526                                                                          K_OPTIM_MAXEVAL,&
527                                                                          K_OPTIM_MAXTIME,&
528                                                                          K_OPTIM_TOLX,&
529                                                                          K_OPTIM_TOLF,&
530                                                                          K_OPTIM_TOLG,&
531                                                                          K_OPTIM_H_PREC/)

keys

[ Top ] [ m_qtlmap_parameter_file ] [ Variables ]

NAME

   keys

DESCRIPTION

   The keys defined of the p_analyses file

values

[ Top ] [ m_qtlmap_parameter_file ] [ Variables ]

NAME

   values

DESCRIPTION

   The values of the p_analyses file (referenced by the array keys)

end_analyse_parameterfile

[ Top ] [ m_qtlmap_parameter_file ] [ Subroutines ]

NAME

    end_analyse_parameterfile

DESCRIPTION

    release internal module data (array keys and values)

NOTES

SOURCE

1194       subroutine end_analyse_parameterfile
1195          deallocate (values)
1196          deallocate (keys)
1197       end subroutine

get_key_value

[ Top ] [ m_qtlmap_parameter_file ] [ Subroutines ]

NAME

    get_key_value

DESCRIPTION

    Get value according to the key give in parameter

NOTES

SOURCE

1207       subroutine get_key_value(keysearch,value)
1208          character(len=*) ,intent(in)     :: keysearch
1209          character(len=*) ,intent(out)    :: value
1210 
1211          integer                :: i
1212 
1213          value=''
1214 
1215          if (allocated(keys)) then
1216           do i=1,size(keys)
1217            if ( trim(keys(i)) == trim(keysearch)) then
1218              value = values(i)
1219              return
1220            end if
1221           end do
1222          end if
1223 
1224          do i=1,size(index_key)
1225            if ( trim(index_key(i)) == trim(keysearch)) then
1226              if ( trim(default_values(i)) /= '') then
1227                  value = default_values(i)
1228                  return
1229              end if
1230            end if
1231          end do
1232 
1233       end subroutine get_key_value

get_summary_panalyse

[ Top ] [ m_qtlmap_parameter_file ] [ Subroutines ]

NAME

    get_summary_panalyse

DESCRIPTION

    get the both vector of key and values defined by the user

NOTES

SOURCE

1390           subroutine get_summary_panalyse(my_index_key,values,n)
1391              character(len=LEN_L) ,dimension(NUMBER_ALL_KEYS),intent(out) :: my_index_key
1392              character(len=LEN_L) ,dimension(NUMBER_ALL_KEYS),intent(out) :: values
1393              integer                                         ,intent(out) :: n
1394 
1395              character(len=LEN_L) :: buf
1396              integer :: i
1397 
1398              n=0
1399              do i=1,size(all_key)
1400                  if ( key_exist(all_key(i)) ) then
1401                    n=n+1
1402                    call get_key_value(all_key(i),buf)
1403                    my_index_key(n)=trim(all_key(i))
1404                    values(n)=trim(buf)
1405                  end if
1406              end do
1407 
1408           end subroutine get_summary_panalyse

help_panalyse

[ Top ] [ m_qtlmap_parameter_file ] [ Subroutines ]

NAME

    help_panalyse

DESCRIPTION

    print a help (all keys availables).

NOTES

SOURCE

1317       subroutine help_panalyse
1318 
1319               character(len=LEN_L) :: headkey ,headvalues,form,buf
1320               character(len=LEN_S) :: opt
1321 
1322               integer :: i
1323 
1324               headkey = "KEY"
1325               headvalues="                     DEFINITION"
1326               opt = "DEFAULT"
1327               form='(a60,a50,4x,a10)'
1328 
1329               print form,headkey,headvalues,opt
1330               print form,"------------------------------","--------------------------------","--------------"
1331               print form,K_OUTPUT,"Output main file"
1332               print form,K_LRTSIRE,"Output file paternal effects"
1333               print form,K_LRTDAM,"Output file maternal effects"
1334 
1335               print form,K_PDED,"Grand parental segment transmission marginal probabilities"
1336               print form,K_PDECPLE,"Grand parental segment transmission joint probabilities"
1337               print form,K_PATEFF,"Sire QTL effect estimations"
1338               print form,K_MATEFF,"Dam QTL effect estimations"
1339 
1340               print form,K_SUMM,"Output summary file"
1341               print form,K_CHROM,"Chromosomes used in the analysis : chr1,chr2,.."
1342               print form,K_NDMIN,'Minimal number of progeny by dam'
1343 
1344               call get_key_value(K_STEP,buf)
1345               print form,K_STEP,"Chromosomic segment exploration steps in Morgan",buf
1346 
1347               call get_key_value(K_MINDAMPHASEPROB,buf)
1348               print form,K_MINDAMPHASEPROB, 'Minimal dam phase probability',buf
1349 
1350               call get_key_value(K_MINSIREPHASEPROB,buf)
1351               print form,K_MINSIREPHASEPROB,'Minimal sire phase probability',buf
1352 
1353               call get_key_value(K_UNKNOWN_GENO,buf)
1354               print form,K_UNKNOWN_GENO,'Unknown genotype value',buf
1355 
1356               call get_key_value(K_CHOLESKY,buf)
1357               print form,K_CHOLESKY,"coeff cholesky decomposition",buf
1358               print form,K_MAP,"Input map file"
1359               print form,K_GENEA,"Input genealogy file"
1360               print form,K_TRAITS,"Input traits file"
1361               print form,K_GENOTYPE,"Input genotype file"
1362               print form,K_MODEL,"Input model description of traits"
1363               print form,K_PARAMSIM,"Input simulation parameters"
1364               print form,K_OUTSIM,"Output for each simulation (Position and maxLRT for each traits)"
1365               print form,K_PHASES,"Output phases file"
1366               print form,K_HAPLOTYPES,"Output haplotype file"
1367 
1368               call get_key_value(K_THRES_CONFUSION,buf)
1369               print form,K_THRES_CONFUSION,"Threshold to test confusion betwwen level inside a contingence matrix",buf
1370               call get_key_value(K_PSEUILHWE,buf)
1371               print form,K_PSEUILHWE,"Threshold to check the equilibrium of marker transmission within each family",buf
1372               call get_key_value(K_LINEAR_CONV,buf)
1373               print form,K_LINEAR_CONV,"Threshold for convergence in the linear mode heteroscedastic",buf
1374               call get_key_value(K_MAX_LINEAR_ITERATION,buf)
1375               print form,K_MAX_LINEAR_ITERATION,"Maximum iteration in the linear mode heteroscedastic to avoid infinity loop",buf
1376 
1377               call get_key_value(K_PROB_SEUIL_RECOMB,buf)
1378               print form,K_PROB_SEUIL_RECOMB,"",buf
1379 
1380            end subroutine help_panalyse

initialize_dev_generic_keys

[ Top ] [ m_qtlmap_parameter_file ] [ Subroutines ]

NAME

    initialize_dev_generic_keys

DESCRIPTION

    initilialized the array m_qtlmap_data/tabDevKey from gebneric key K_KEY_DEV_GEN

NOTES

SOURCE

1044       subroutine initialize_dev_generic_keys
1045         integer :: i
1046         character(len=LEN_L) :: buf
1047 
1048         tabDevKey=""
1049         do i=1,MAXNB_KEY_DEV_GEN
1050            buf=trim(K_KEY_DEV_GEN)//trim(str(i))
1051            if ( key_exist( buf ) ) then
1052                call get_key_value(buf,tabDevKey(i))
1053            end if
1054         end do
1055 
1056       end subroutine initialize_dev_generic_keys

initialize_qtlmap_context

[ Top ] [ m_qtlmap_parameter_file ] [ Subroutines ]

NAME

    initialize_qtlmap_context

DESCRIPTION

    Initialize all public variables option come from the module m_qtlmap_data and file name to read

INPUTS

   sim         : if the context is in the simulation case
   is_permute  : if dynamic option permutation mode is activate

OUTPUTS

   parsim      : the name of the simulation file

NOTES

SOURCE

 755       subroutine initialize_qtlmap_context(sim,is_permute)
 756         logical                       ,intent(in)    :: sim
 757         logical                      ,intent(in)     :: is_permute
 758 
 759         integer  :: ios_id = 20
 760         integer  :: n ,ios,cln,i,j,chr
 761         character(len=LEN_W)   :: buf
 762         character(len=LEN_S),dimension(100)   :: chromo_t
 763         character(len=LEN_LINE)   :: buf2
 764         logical :: ok,find
 765         real(kind=dp) :: pas_temp
 766 
 767          ! check present keys
 768         do i=1,size(index_key)
 769           if (.not. key_exist(index_key(i))) then
 770             call stop_application("Please defined the key:"//trim(index_key(i)))
 771           end if
 772         end do
 773 
 774         call initialize_dev_generic_keys
 775 
 776         !check if key are present but not interpreted by qtlmap
 777         do i=1,size(keys)
 778           if ( trim(keys(i))=='' ) cycle
 779           find = .false.
 780           do j=1,size(all_key)
 781             if (keys(i) == all_key(j)) then
 782                find = .true.
 783                exit
 784             end if
 785             ! manage generic keys
 786             if ( keys(i)(1:len(K_KEY_DEV_GEN)) ==  K_KEY_DEV_GEN ) then
 787                find = .true.
 788                exit
 789             end if
 790           end do
 791 
 792           if ( .not. find ) then
 793             call log_mess(" ---------------------------------- ",WARNING_DEF)
 794             call log_mess(" UNKNOWN KEY ["//trim(keys(i))//"] ",WARNING_DEF)
 795             call log_mess(" ---------------------------------- ",WARNING_DEF)
 796           end if
 797         end do
 798 
 799         call get_key_value(K_OUTPUT,resul)
 800         call get_key_value(K_SUMM,summary)
 801 
 802         if ( .not. sim ) then
 803           call get_key_value(K_LRTSIRE,resp)
 804           call get_key_value(K_LRTDAM,resm)
 805           if ( key_exist(K_PDED) ) then
 806             call get_key_value(K_PDED,pdedf)
 807           end if
 808           if ( key_exist(K_PDECPLE) ) then
 809             call get_key_value(K_PDECPLE,pdecouple)
 810           end if
 811           if ( key_exist(K_PATEFF) ) then
 812             call get_key_value(K_PATEFF,pateff)
 813           end if
 814           if ( key_exist(K_FREQALL) ) then
 815             call get_key_value(K_FREQALL,out_freqall)
 816           end if
 817           if ( key_exist(K_MATEFF) ) then
 818             call get_key_value(K_MATEFF,mateff)
 819           end if
 820           if ( key_exist(K_COEFFDA) ) then
 821             call get_key_value(K_COEFFDA,coeffda)
 822           end if
 823           if ( key_exist(K_GRID2QTL) ) then
 824             call get_key_value(K_GRID2QTL,grid2qtl)
 825           end if
 826           if ( key_exist(K_PHASES) ) then
 827             call get_key_value(K_PHASES,out_phases)
 828           end if
 829           if ( key_exist(K_HAPLOTYPES) ) then
 830             call get_key_value(K_HAPLOTYPES,out_haplotypes)
 831           end if
 832         end if
 833 
 834         call get_key_value(K_MINDAMPHASEPROB,buf)
 835         PRSEUIL  = get_real(buf,ok)
 836         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_MINDAMPHASEPROB)//"] expecting real value.")
 837 
 838         call get_key_value(K_NDMIN,buf)
 839         ndmin    =  get_int(buf,ok)
 840         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_NDMIN)//"] expecting int value.")
 841 
 842         call get_key_value(K_MINSIREPHASEPROB,buf)
 843         PHPSEUIL = get_real(buf,ok)
 844         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_MINSIREPHASEPROB)//"] expecting real value.")
 845 
 846         call get_key_value(K_CHOLESKY,buf)
 847         SEUIL_CHO = get_real(buf,ok)
 848         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_CHOLESKY)//"] expecting real value.")
 849 
 850         call get_key_value(K_THRES_CONFUSION,buf)
 851         THRES_CONFUSION = get_real(buf,ok)
 852         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_THRES_CONFUSION)//"] expecting real value.")
 853 
 854         call get_key_value(K_LINEAR_CONV,buf)
 855         EPS_LINEAR_HETEROSCEDASTIC = get_real(buf,ok)
 856         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_LINEAR_CONV)//"] expecting real value.")
 857 
 858         call get_key_value(K_MAX_LINEAR_ITERATION,buf)
 859         MAX_LINEAR_ITERATION    =  get_int(buf,ok)
 860         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_MAX_LINEAR_ITERATION)//"] expecting int value.")
 861 
 862         call get_key_value(K_PSEUILHWE,buf)
 863         PSEUILHWE = get_real(buf,ok)
 864         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_PSEUILHWE)//"] expecting real value.")
 865 
 866         call get_key_value(K_PROB_SEUIL_RECOMB,buf)
 867         PROB_SEUIL_RECOMB = get_real(buf,ok)
 868         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_PROB_SEUIL_RECOMB)//"] expecting real value.")
 869 
 870         call get_key_value(K_NB_HAPLO_PRIOR,buf)
 871         NB_HAPLO_PRIOR = get_int(buf,ok)
 872         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_NB_HAPLO_PRIOR)//"] expecting integer value.")
 873 
 874         call get_key_value(K_PROB_HAPLO_MIN,buf)
 875         PROB_HAPLO_MIN = get_real(buf,ok)
 876         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_PROB_HAPLO_MIN)//"] expecting real value.")
 877 
 878         call get_key_value(K_LONG_MIN_IBS,buf)
 879         LONG_MIN_IBS = get_int(buf,ok)
 880         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_LONG_MIN_IBS)//"] expecting integer value.")
 881 
 882         call get_key_value(K_LONGHAP,buf)
 883         LONGHAP = get_int(buf,ok)
 884         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_LONGHAP)//"] expecting integer value.")
 885 
 886         call get_key_value(K_STEP,buf)
 887         pas_temp    =  get_real(buf,ok)
 888         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_STEP)//"] expecting int value.")
 889         call set_base_and_step(buf)
 890 
 891         !! Optimization initialisation
 892         !! -----------------------
 893 
 894         call get_key_value(K_OPTIM_MAXEVAL,buf)
 895         optim_maxeval = get_int(buf,ok)
 896         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_OPTIM_MAXEVAL)//"] expecting integer value.")
 897 
 898         call get_key_value(K_OPTIM_MAXTIME,buf)
 899         optim_maxtime    =  get_real(buf,ok)
 900         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_OPTIM_MAXTIME)//"] expecting int value.")
 901 
 902         call get_key_value(K_OPTIM_TOLX,buf)
 903         optim_tolx    =  get_real(buf,ok)
 904         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_OPTIM_TOLX)//"] expecting int value.")
 905 
 906         call get_key_value(K_OPTIM_TOLF,buf)
 907         optim_tolf    =  get_real(buf,ok)
 908         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_OPTIM_TOLF)//"] expecting int value.")
 909 
 910         call get_key_value(K_OPTIM_TOLG,buf)
 911         optim_tolg    =  get_real(buf,ok)
 912         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_OPTIM_TOLG)//"] expecting int value.")
 913 
 914         call get_key_value(K_OPTIM_H_PREC,buf)
 915         optim_H_PRECISION    =  get_real(buf,ok)
 916         if ( .not. ok ) call stop_application("bad definition of key ["//trim(K_OPTIM_H_PREC)//"] expecting int value.")
 917 
 918 
 919         !! Chromome initialisation
 920         !! -----------------------
 921 
 922         call get_key_value(K_CHROM,buf2)
 923         i=1;
 924         nchr=0
 925 
 926         do while ( i /= 0)
 927           i=index(buf2,",")
 928           if ( i /= 0 ) then
 929             nchr = nchr+1
 930             chromo_t(nchr) = trim(buf2(:i-1))
 931             buf2 = buf2(i+1:)
 932           else
 933             nchr = nchr+1
 934             chromo_t(nchr) = trim(buf2)
 935           end if
 936         end do
 937 
 938         allocate (chromo(nchr))
 939         chromo(:nchr)=chromo_t(:nchr)
 940         ALLOCATE (nmk(nchr))
 941 
 942         call get_key_value(K_UNKNOWN_GENO,buf)
 943         buf=trim(buf)
 944         call init_pheno(nchr)
 945         do chr=1,nchr
 946          nmanque =  set_pheno(chr,buf)
 947         end do
 948 
 949         ! INPUT FILES
 950         !------------
 951         if ( key_exist(K_MAP) ) then
 952              call get_key_value(K_MAP,in_carte)
 953              call file_exist(in_carte)
 954              mapFileDefined = .true.
 955          else
 956               mapFileDefined = .false.
 957          end if
 958         if ( key_exist(K_GENEA) ) then
 959             call get_key_value(K_GENEA,in_genea)
 960             call file_exist(in_genea)
 961             geneaFileDefined = .true.
 962         else
 963             geneaFileDefined = .false.
 964         end if
 965 
 966         if ( key_exist(K_RACE) ) then 
 967             raceFileDefined=.true.
 968             call get_key_value(K_RACE,in_race)
 969             call file_exist(in_race)
 970         end if
 971         in_perfs = ''
 972         if ( key_exist(K_TRAITS) ) then
 973             call get_key_value(K_TRAITS,in_perfs(1))
 974             call file_exist(in_perfs(1))
 975             traitsFileDefined = .true.
 976             !The model have to be declared...
 977             if ( key_exist(K_MODEL) ) then
 978               call get_key_value(K_MODEL,in_param_ef)
 979               call file_exist(in_param_ef)
 980             else
 981               call stop_application("key ["//trim(K_TRAITS)//"] is defined. The key ["//trim(K_MODEL)//"] have to be set.")
 982             end if
 983         else
 984             traitsFileDefined = .false.
 985         end if
 986 
 987         if ( key_exist(K_GENOTYPE) ) then
 988             call get_key_value(K_GENOTYPE,in_typage)
 989             call file_exist(in_typage)
 990             genotypeFileDefined = .true.
 991         else
 992             genotypeFileDefined = .false.
 993         end if
 994 
 995        if (sim ) then
 996         if ( key_exist(K_PARAMSIM) ) then
 997             call get_key_value(K_PARAMSIM,in_parsim)
 998             call file_exist(in_parsim)
 999         else if ( .not. is_permute) then
1000             !call stop_application("key ["//trim(K_PARAMSIM)//"] is not defined.")
1001             in_parsim = "" ! by default we consider all traits defined in model
1002         end if
1003 
1004       ! output lrt max file is now optional
1005 
1006         if ( key_exist(K_OUTSIM) ) then
1007             call get_key_value(K_OUTSIM,simula)
1008       !  else
1009       !      call stop_application("key ["//trim(K_PARAMSIM)//"] is defined. The key ["//trim(K_OUTSIM)//"] have to be set.")
1010         end if
1011 
1012         if ( is_permute .and. .not. key_exist(K_MODEL) ) then
1013            call stop_application("key ["//trim(K_MODEL)//&
1014            "] is not defined. To perform a permutation, you have to defined a model.")
1015         end if
1016 
1017        else
1018         !    t_imp = .false.
1019        end if
1020 
1021         ! check base....
1022 
1023         if ( .not.  sim ) then
1024            if ( .not. mapFileDefined ) &
1025              call stop_application("Analysis case : You have to defined the key ["//trim(K_MAP)//"]")
1026            if ( .not. geneaFileDefined ) &
1027              call stop_application("Analysis case : You have to defined the key ["//trim(K_GENEA)//"]")
1028            if ( .not. traitsFileDefined ) &
1029              call stop_application("Analysis case : You have to defined the key ["//trim(K_TRAITS)//"]")
1030            if ( .not. genotypeFileDefined ) &
1031              call stop_application("Analysis case : You have to defined the key ["//trim(K_GENOTYPE)//"]")
1032         end if
1033       end subroutine initialize_qtlmap_context

initialize_tocartha_context

[ Top ] [ m_qtlmap_parameter_file ] [ Subroutines ]

NAME

    initialize_tocartha_context

DESCRIPTION

    Initialize all public variables option come from the module m_qtlmap_data and file name to read for
   the binary qtlmap2cartha.

OUTPUTS

   type_out      :  intercross 1, hybrid 2

NOTES

SOURCE

1144       subroutine initialize_tocartha_context(type_out)
1145         integer             ,intent(out) :: type_out ! format of file : intercross 1, hybrid 2
1146         character(len=LEN_W)   :: buf
1147         logical :: ok
1148 
1149         if ( key_exist(K_GENEA) ) then
1150             call get_key_value(K_GENEA,in_genea)
1151             call file_exist(in_genea)
1152         else
1153             call stop_application("Analysis case : You have to defined the key ["//trim(K_GENEA)//"]")
1154         end if
1155 
1156         if ( key_exist(K_GENOTYPE) ) then
1157             call get_key_value(K_GENOTYPE,in_typage)
1158             call file_exist(in_typage)
1159         else
1160             call stop_application("Analysis case : You have to defined the key ["//trim(K_GENOTYPE)//"]")
1161         end if
1162 
1163         if ( .not. key_exist_file(K_UNKNOWN_GENO) ) then
1164           call stop_application("Analysis case : You have to defined the key ["//trim(K_UNKNOWN_GENO)//"]")
1165         end if
1166 
1167         nchr=1
1168         allocate (chromo(nchr))
1169         chromo='chromosome'
1170         allocate(nmk(nchr))
1171         call get_key_value(K_UNKNOWN_GENO,buf)
1172         call init_pheno(nchr)
1173         buf=trim(buf)
1174         nmanque =  set_pheno(1,buf)
1175 
1176         if ( .not. key_exist("in_format") ) then
1177          call stop_application("Analysis case : You have to defined the key [in_format] 1 : intercross, 2 : hybrid")
1178         end if
1179         call get_key_value("in_format",buf)
1180         type_out = get_int(buf,ok)
1181         if ( .not. ok ) call stop_application("bad definition of key [in_format] expecting int value.")
1182 
1183 
1184       end subroutine  initialize_tocartha_context

key_exist

[ Top ] [ m_qtlmap_parameter_file ] [ Subroutines ]

NAME

    key_exist

DESCRIPTION

    True if the key exist in the parameter user file or if the key have a default value

NOTES

SOURCE

1243       function key_exist(keysearch) result(vexist)
1244          character(len=*) ,intent(in)   :: keysearch
1245 
1246          logical                :: vexist
1247          integer                :: i
1248 
1249          if (allocated(keys)) then
1250           do i=1,size(keys)
1251            if ( trim(keys(i)) == trim(keysearch) ) then
1252                if ( trim(values(i)) /= '' ) then
1253                  vexist=.true.
1254                  return
1255                end if
1256 
1257            end if
1258           end do
1259          end if
1260 
1261          !if a default value exist...
1262           do i=1,size(index_key)
1263            if ( trim(index_key(i)) == trim(keysearch)) then
1264                if ( trim(default_values(i)) /= '') then
1265                   vexist=.true.
1266                else
1267                   vexist=.false.
1268                end if
1269                return
1270            end if
1271          end do
1272 
1273          vexist=.false.
1274          return
1275 
1276       end function key_exist

key_exist_file

[ Top ] [ m_qtlmap_parameter_file ] [ Subroutines ]

NAME

    key_exist_file

DESCRIPTION

    True if the key exist in the parameter user file

NOTES

SOURCE

1286       function key_exist_file(keysearch) result(vexist)
1287          character(len=*) ,intent(in)   :: keysearch
1288 
1289          logical                :: vexist
1290          integer                :: i
1291 
1292          if (allocated(keys)) then
1293           do i=1,size(keys)
1294            if ( trim(keys(i)) == trim(keysearch) ) then
1295                if ( trim(values(i)) /= '' ) then
1296                  vexist=.true.
1297                  return
1298                end if
1299 
1300            end if
1301           end do
1302          end if
1303 
1304          vexist=.false.
1305          return
1306 
1307       end function key_exist_file

read_analyse_file

[ Top ] [ m_qtlmap_parameter_file ] [ Subroutines ]

NAME

    read_analyse_file

DESCRIPTION

    read the parameter analyse user file. fill the internal buffer keys and values.
    keys and values are used like a stack (only the last value for the one specific key is considered)

INPUTS

   param      : name of the parameter file

NOTES

SOURCE

663       subroutine read_analyse_file(param)
664         character(len=LENGTH_MAX_FILE),intent(inout) :: param
665 
666         integer  :: ios_id = 20
667         integer  :: n ,ios,cln,i,j,chr
668         character(len=LEN_W)   :: buf
669         character(len=LEN_LINE)   :: buf2
670         logical :: ok,find
671         real(kind=dp) :: pas_temp
672 
673          analyse_file = trim(param)
674          call file_exist(analyse_file)
675          open(unit=ios_id,file=trim(analyse_file),action="read",form="formatted")
676 
677          n = 0
678          ios = 0
679          ! count the number of line to record
680          do while ( ios == 0)
681             read(ios_id,*,iostat=ios) buf2
682             i = index (buf2,'#')
683             if ( i == 1 ) cycle
684             if ( ios == 0 .and. ( trim(buf2)/='') ) then
685               n = n + 1
686             end if
687          end do
688 
689          !allocate structure
690          allocate (values(n))
691          allocate(keys(n))
692          keys=''
693 
694          ! init structures
695          rewind(ios_id)
696          cln = 0! it s the current line
697          n = 0
698          ios=-2
699          do while ( ios /= -1 )
700             call GET (ios_id,buf2,iostat=ios)
701             !remove comments
702             i = index (buf2,'#')
703 
704             if ( i /= 0) then
705               if ( i == 1 ) buf2=''
706               if ( i > 1) buf2=trim(buf2(:i-1))
707             end if
708             !probleme case
709             if (trim(buf2)=='' .or. ios /= 0 ) cycle
710 
711             cln = cln+1
712             i = index (buf2,'=')! where is =
713             if ( i == 0) then
714                 call stop_on_error(ios,analyse_file,cln,'bad expression of "key=value"');
715             end if
716 
717               ! search if the key if exist...
718               do j=1,n
719                  if ( keys(j) == trim(buf2(1:i-1)) ) exit
720               end do
721 
722               if ( j <= n ) then
723                 keys(j) = trim(buf2(1:i-1))
724                 values(j) = trim(buf2(i+1:))
725               else
726                 n = n+1
727                 keys(n) = trim(buf2(1:i-1))
728                 values(n) = trim(buf2(i+1:))
729               end if
730 
731               call log_mess("KEY ["//trim(keys(n))//"] = ["//trim(values(n))//"]",DEBUG_DEF)
732 
733          end do
734 
735         close(ios_id)
736 
737       end subroutine read_analyse_file

set_haplotype_offspring_context

[ Top ] [ m_qtlmap_parameter_file ] [ Subroutines ]

NAME

    set_haplotype_offspring_context

DESCRIPTION

    Get index of markers (start and end) to print offspring haplotypes
   the binary qtlmap2cartha.

OUTPUTS

   type_out      :  intercross 1, hybrid 2

NOTES

SOURCE

1070       subroutine set_haplotype_offspring_context(C,M1,M2,ok,namefile)
1071           integer   , intent(out) :: M1,M2,C
1072           logical   , intent(out) :: ok
1073           character(len=LENGTH_MAX_FILE) , intent(out) :: namefile
1074           character(len=LEN_W)   :: buf
1075           integer :: C1=0,C2=0,ik
1076           logical :: found
1077 
1078           ok=.false.
1079           namefile=""
1080           if ( key_exist(K_PHASES_OFFSPRING) ) then
1081            call get_key_value(K_PHASES_OFFSPRING,namefile)
1082            if ( key_exist(K_PHASES_OFFSPRING_MARK_START) ) then
1083              call get_key_value(K_PHASES_OFFSPRING_MARK_START,buf)
1084              found=.false.
1085              do c=1,nchr
1086                do ik=1,nmk(c)
1087                 if ( trim(buf) == mark(c,ik) ) then
1088                    M1 = ik
1089                    C1 = c
1090                    found=.true.
1091                 end if
1092                 end do
1093              end do
1094              if ( .not. found ) then
1095                call stop_application("Key ["//K_PHASES_OFFSPRING_MARK_START//"] can not found the marker:"//trim(buf))
1096              end if
1097           else
1098             M1 = 1
1099             C1 = 1
1100           end if
1101           if ( key_exist(K_PHASES_OFFSPRING_MARK_END) ) then
1102              call get_key_value(K_PHASES_OFFSPRING_MARK_END,buf)
1103              found=.false.
1104              do c=1,nchr
1105                do ik=1,nmk(c)
1106                 if ( trim(buf) == mark(c,ik) ) then
1107                    M2 = ik
1108                    C2 = c
1109                    found=.true.
1110                 end if
1111                 end do
1112              end do
1113              if ( .not. found ) then
1114                call stop_application("Key ["//K_PHASES_OFFSPRING_MARK_END//"] can not found the marker:"//trim(buf))
1115              end if
1116            else
1117                M2 = nmk(C1)
1118                C2 = C1
1119            end if
1120 
1121           if ( C1 /= C2 ) then
1122              call stop_application("Key ["//K_PHASES_OFFSPRING_MARK_START//"] and key ["//&
1123                K_PHASES_OFFSPRING_MARK_END//"] are defined on different chromosomes.")
1124           end if
1125           C = C1
1126           ok = .true.
1127          end if
1128 
1129       end subroutine set_haplotype_offspring_context