Parsing output file =================== Modules for processing of configuration files, for processing of output files and results, which are generated by f90 programs. **Import libs**:: from bpf90tools.parsers import ( PParams, PPed, PVar, PSolution ) file param.txt ^^^^^^^^^^^^^^ :: object_pp = PParams() object_pp.parse_file("./foldtest/test1/exm_create_param/param_exm_blup.txt") The result is in the ``object_pp.params`` property:: { 'DATAFILE': [''], 'TRAITS': [''], 'FIELDS_PASSED TO OUTPUT': ['1'], 'RESIDUAL_VARIANCE': ['0.5492E-01'], 'EFFECT': ['8 cross alpha', '10 cov', '1 cross alpha'], 'RANDOM': ['animal'], 'FILE': [''], 'FILE_POS': ['1 2 3 0 0'], '(CO)VARIANCES': ['0'], 'OPTION': ['sol se', 'alpha_size 40', 'fact_once memory', 'use_yams'] } renaddxx.ped ^^^^^^^^^^^^ Parsing a pedigree file - ``renaddxx.ped``. The test file renadd04.ped is used for the example. Contents:: 1 6 4 2000 0 2 1 0 0 ID015 12 0 0 1000 0 0 0 0 2 ID004 10 0 0 1000 0 0 0 0 1 ID005 15 0 0 1000 0 0 0 0 1 ID006 2 11 10 2000 0 2 1 2 0 ID007 3 13 12 2000 0 2 1 0 1 ID008 4 2 15 2000 0 2 1 0 2 ID010 5 11 14 2000 0 2 1 1 0 ID009 6 2 12 2000 0 2 1 3 0 ID011 7 6 3 2000 0 2 1 0 0 ID012 13 0 0 1000 0 0 0 1 0 ID001 8 6 4 2000 0 2 1 0 1 ID013 11 0 0 1000 0 0 0 2 0 ID002 9 5 8 2133 0 2 1 0 0 ID014 14 0 0 1000 0 0 0 0 1 ID003 **Parsing**:: object_pped = PPed() object_pped.parse_file("./foldtest/test1/renadd04.ped") The result is in the ``object_pp.params`` property:: nomer ID 0 1 ID015 1 12 ID004 2 10 ID005 3 15 ID006 4 2 ID007 5 3 ID008 6 4 ID010 7 5 ID009 8 6 ID011 9 7 ID012 10 13 ID001 11 8 ID013 12 11 ID002 13 9 ID014 14 14 ID003 aireml.log ^^^^^^^^^^ Parsing a file with the variants ``aireml.log``. File Contents airemlf90.log:: AIREMLF90 ver. 1.149 In round 36 convergence = 0.712257048487E-03 delta convergence = 0.994040299577E-06 -2logL = 0.24653657 : AIC = 4.2465366 Genetic variance(s) for effect 4 0.71609E-04 Residual variance(s) 0.41366 inverse of AI matrix (Sampling Variance) 0.13285E-05 -0.48971E-06 -0.48971E-06 0.11398 Correlations from inverse of AI matrix 1.0000 -0.12585E-02 -0.12585E-02 1.0000 SE for G 0.11526E-02 SE for R 0.33761 **Parsing**:: object_pvar = PVar() object_pvar.parse_file("./foldtest/test1/airemlf90.log") var = object_pvar.values print(var.model_dump()) **Result**:: { 'varG': 7.1609e-05, 'varE': 0.41366, 'aic': 4.2465366, 'bic': 0.24653657, 'heritability': 0.0 } reml.log ^^^^^^^^ Parsing a file with the variants ``reml.log``. File Contents remlf90.log:: REMLF90 ver. 1.86 Final Estimates Genetic variance(s) for effect 4 0.9417E-04 Residual variance(s) 0.9420 In round 4148 convergence = 0.996781495046E-10 -2logL = 1.4856567 AIC = 5.4856567 **Parsing**:: object_pvar = PVar() object_pvar.parse_file("./foldtest/test1/remlf90.log") var = object_pvar.values print(var.model_dump()) **Result**:: { 'varG': 9.417e-05, 'varE': 0.942, 'aic': 5.4856567, 'bic': 1.4856567, 'heritability': 0.0 } solutions ^^^^^^^^^ Parsing a file with results obtained after blupf90 - ``solutions``: Contents solutions:: trait/effect level solution 1 1 1 -6.70995918 1 1 2 -6.53072476 1 2 1 -6.89090070 1 2 2 -6.08694268 1 2 3 -7.12763698 1 2 4 -6.68739576 1 3 1 22.97079761 1 4 1 0.11711553 1 4 2 0.14987163 1 4 3 -0.06287934 1 4 4 0.10684377 1 4 5 -0.06593335 1 4 6 -0.01102797 1 4 7 0.13297009 1 4 8 0.03384761 1 4 9 0.01032430 1 4 10 0.08872265 1 4 11 0.03357531 1 4 12 -0.06975455 1 4 13 -0.01866804 1 4 14 -0.05514734 1 4 15 0.02127197 **Parsing**:: object_psol = PSolution() object_psol.parse_file("./foldtest/test1/solutions") print(object_psol.solutions) **Result**:: EBV level 0 0.117116 1 1 0.149872 2 2 -0.062879 3 3 0.106844 4 4 -0.065933 5 5 -0.011028 6 6 0.132970 7 7 0.033848 8 8 0.010324 9 9 0.088723 10 10 0.033575 11 11 -0.069755 12 12 -0.018668 13 13 -0.055147 14 14 0.021272 15 without varg ____________ Contents file solutions:: trait/effect level solution s.e. 1 1 1 -0.21337720 0.47468396 1 1 2 0.00000000 0.00000000 1 2 1 -12.45754690 22.12147091 1 2 2 -11.60488568 21.96909516 1 2 3 -12.63970827 22.99779542 1 2 4 -12.25754758 22.12147643 1 3 1 22.05395473 21.91343740 1 4 1 0.00005158 0.00897511 1 4 2 0.00005618 0.00846196 1 4 3 -0.00002650 0.00846193 1 4 4 0.00004680 0.00846186 1 4 5 -0.00002956 0.00846189 1 4 6 0.00000149 0.00846216 1 4 7 0.00003811 0.00897534 1 4 8 0.00001997 0.00897535 1 4 9 0.00000303 0.00872283 1 4 10 0.00003390 0.00846213 1 4 11 0.00001065 0.00846213 1 4 12 -0.00002415 0.00846214 1 4 13 -0.00000962 0.00846214 1 4 14 -0.00002326 0.00846211 1 4 15 0.00001248 0.00846213 **Parsing**:: object_psol = PSolution(varg=None) object_psol.parse_file("./foldtest/test1/solutions") print(object_psol.solutions) **Result**:: EBV SE level 0 0.000052 0.008975 1 1 0.000056 0.008462 2 2 -0.000027 0.008462 3 3 0.000047 0.008462 4 4 -0.000030 0.008462 5 5 0.000001 0.008462 6 6 0.000038 0.008975 7 7 0.000020 0.008975 8 8 0.000003 0.008723 9 9 0.000034 0.008462 10 10 0.000011 0.008462 11 11 -0.000024 0.008462 12 12 -0.000010 0.008462 13 13 -0.000023 0.008462 14 14 0.000012 0.008462 15 .. note:: If the genetic variant is not passed on, then ebv **reliability** (``REL``) is not calculated when processing the result. This leaves ``s.e.`` . with varg _________ **Parsing**:: object_psol = PSolution(varg=float('0.71609E-04')) object_psol.parse_file("./foldtest/test1/solutions") print(object_psol.solutions) **Result**:: EBV REL level 0 0.000052 0 1 1 0.000056 0 2 2 -0.000027 0 3 3 0.000047 0 4 4 -0.000030 0 5 5 0.000001 0 6 6 0.000038 0 7 7 0.000020 0 8 8 0.000003 0 9 9 0.000034 0 10 10 0.000011 0 11 11 -0.000024 0 12 12 -0.000010 0 13 13 -0.000023 0 14 14 0.000012 0 15