Skip to content

Commit

Permalink
update statobs reader for scientific notation
Browse files Browse the repository at this point in the history
  • Loading branch information
fradav committed Oct 7, 2024
1 parent 39c3a35 commit a20e3ea
Show file tree
Hide file tree
Showing 6 changed files with 256 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/readstatobs.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ vector<double> readStatObs(const std::string &path) {
ifstream statobsStream(path,ios::in);
statobsStream >> noskipws;
const std::string sS(istream_iterator<char>{statobsStream}, {});
const regex stat_re(R"#(\s(-?\d+\.\d+)\s)#");
// const regex stat_re(R"#(\s(-?\d+\.\d+)\s)#"); working for old format
const regex stat_re(R"#(\s([+\-]?(\d+\.\d*|\d*\.\d+|\d+)([eE][+\-]?\d+)?)\s)#");
sregex_token_iterator itstat(begin(sS), end(sS), stat_re, {1});
vector<double> statobs;
auto it = itstat;
Expand Down
111 changes: 111 additions & 0 deletions test/data/newformat/headerRF.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
SNP_sim_dataset_4POP_S6_car_ra_zero_001.snp
13 parameters and 130 summary statistics

6 scenarios: 8 8 8 8 8 8
scenario 1 [0.16667] (8)
N1 N2 N3 N4
0 sample 1
0 sample 2
0 sample 3
0 sample 4
t423 split 4 2 3 ra
t32 merge 2 3
t21 merge 1 2
scenario 2 [0.16667] (8)
N1 N2 N3 N4
0 sample 1
0 sample 2
0 sample 3
0 sample 4
t421 split 4 2 1 ra
t32 merge 2 3
t21 merge 1 2
scenario 3 [0.16667] (8)
N1 N2 N3 N4
0 sample 1
0 sample 2
0 sample 3
0 sample 4
t431 split 4 1 3 ra
t32 merge 2 3
t21 merge 1 2
scenario 4 [0.16667] (7)
N1 N2 N3 N4
0 sample 1
0 sample 2
0 sample 3
0 sample 4
t41 merge 1 4
t32 merge 2 3
t21 merge 1 2
scenario 5 [0.16667] (7)
N1 N2 N3 N4
0 sample 1
0 sample 2
0 sample 3
0 sample 4
t42 merge 2 4
t32 merge 2 3
t21 merge 1 2
scenario 6 [0.16667] (7)
N1 N2 N3 N4
0 sample 1
0 sample 2
0 sample 3
0 sample 4
t43 merge 3 4
t32 merge 2 3
t21 merge 1 2

historical parameters priors (13,6)
N1 N UN[100,10000,0.0,0.0]
N2 N UN[100,10000,0.0,0.0]
N3 N UN[100,10000,0.0,0.0]
N4 N UN[100,10000,0.0,0.0]
t423 T UN[10,1000,0.0,0.0]
ra A UN[0.05,0.95,0.0,0.0]
t32 T UN[10,1000,0.0,0.0]
t21 T UN[10,1000,0.0,0.0]
t421 T UN[10,1000,0.0,0.0]
t431 T UN[10,1000,0.0,0.0]
t41 T UN[10,1000,0.0,0.0]
t42 T UN[10,1000,0.0,0.0]
t43 T UN[10,1000,0.0,0.0]
t21>t32
t42<t21
t43<t32
t32>t423
t431<t32
t421<t21
DRAW UNTIL

loci description (1)
5000 <A> G1 from 1

group summary statistics (130)
group G1 (130)
ML1p 1 2 3 4
ML2p 1.2 1.3 1.4 2.3 2.4 3.4
ML3p 1.2.3 1.2.4 1.3.4 2.3.4
HWm 1 2 3 4
HWv 1 2 3 4
HBm 1.2 1.3 1.4 2.3 2.4 3.4
HBv 1.2 1.3 1.4 2.3 2.4 3.4
FST1m 1 2 3 4
FST1v 1 2 3 4
FST2m 1.2 1.3 1.4 2.3 2.4 3.4
FST2v 1.2 1.3 1.4 2.3 2.4 3.4
NEIm 1.2 1.3 1.4 2.3 2.4 3.4
NEIv 1.2 1.3 1.4 2.3 2.4 3.4
AMLm 1.2.3 2.1.3 3.1.2 1.2.4 2.1.4 4.1.2 1.3.4 3.1.4 4.1.3 2.3.4 3.2.4 4.2.3
AMLv 1.2.3 2.1.3 3.1.2 1.2.4 2.1.4 4.1.2 1.3.4 3.1.4 4.1.3 2.3.4 3.2.4 4.2.3
FST3m 1.2.3 1.2.4 1.3.4 2.3.4
FST3v 1.2.3 1.2.4 1.3.4 2.3.4
FST4m 1.2.3.4
FST4v 1.2.3.4
F3m 1.2.3 2.1.3 3.1.2 1.2.4 2.1.4 4.1.2 1.3.4 3.1.4 4.1.3 2.3.4 3.2.4 4.2.3
F3v 1.2.3 2.1.3 3.1.2 1.2.4 2.1.4 4.1.2 1.3.4 3.1.4 4.1.3 2.3.4 3.2.4 4.2.3
F4m 1.2.3.4 1.3.2.4 1.4.2.3
F4v 1.2.3.4 1.3.2.4 1.4.2.3

scenario N1 N2 N3 N4 t423 ra t32 t21 t421 t431 t41 t42 t43 ML1p_1 ML1p_2 ML1p_3 ML1p_4 ML2p_1.2 ML2p_1.3 ML2p_1.4 ML2p_2.3 ML2p_2.4 ML2p_3.4 ML3p_1.2.3 ML3p_1.2.4 ML3p_1.3.4 ML3p_2.3.4 HWm_1 HWm_2 HWm_3 HWm_4 HWv_1 HWv_2 HWv_3 HWv_4 HBm_1.2 HBm_1.3 HBm_1.4 HBm_2.3 HBm_2.4 HBm_3.4 HBv_1.2 HBv_1.3 HBv_1.4 HBv_2.3 HBv_2.4 HBv_3.4 FST1m_1 FST1m_2 FST1m_3 FST1m_4 FST1v_1 FST1v_2 FST1v_3 FST1v_4 FST2m_1.2 FST2m_1.3 FST2m_1.4 FST2m_2.3 FST2m_2.4 FST2m_3.4 FST2v_1.2 FST2v_1.3 FST2v_1.4 FST2v_2.3 FST2v_2.4 FST2v_3.4 NEIm_1.2 NEIm_1.3 NEIm_1.4 NEIm_2.3 NEIm_2.4 NEIm_3.4 NEIv_1.2 NEIv_1.3 NEIv_1.4 NEIv_2.3 NEIv_2.4 NEIv_3.4 AMLm_1.2.3 AMLm_2.1.3 AMLm_3.1.2 AMLm_1.2.4 AMLm_2.1.4 AMLm_4.1.2 AMLm_1.3.4 AMLm_3.1.4 AMLm_4.1.3 AMLm_2.3.4 AMLm_3.2.4 AMLm_4.2.3 AMLv_1.2.3 AMLv_2.1.3 AMLv_3.1.2 AMLv_1.2.4 AMLv_2.1.4 AMLv_4.1.2 AMLv_1.3.4 AMLv_3.1.4 AMLv_4.1.3 AMLv_2.3.4 AMLv_3.2.4 AMLv_4.2.3 FST3m_1.2.3 FST3m_1.2.4 FST3m_1.3.4 FST3m_2.3.4 FST3v_1.2.3 FST3v_1.2.4 FST3v_1.3.4 FST3v_2.3.4 FST4m_1.2.3.4 FST4v_1.2.3.4 F3m_1.2.3 F3m_2.1.3 F3m_3.1.2 F3m_1.2.4 F3m_2.1.4 F3m_4.1.2 F3m_1.3.4 F3m_3.1.4 F3m_4.1.3 F3m_2.3.4 F3m_3.2.4 F3m_4.2.3 F3v_1.2.3 F3v_2.1.3 F3v_3.1.2 F3v_1.2.4 F3v_2.1.4 F3v_4.1.2 F3v_1.3.4 F3v_3.1.4 F3v_4.1.3 F3v_2.3.4 F3v_3.2.4 F3v_4.2.3 F4m_1.2.3.4 F4m_1.3.2.4 F4m_1.4.2.3 F4v_1.2.3.4 F4v_1.3.2.4 F4v_1.4.2.3
Binary file added test/data/newformat/reftableRF.bin
Binary file not shown.
3 changes: 3 additions & 0 deletions test/data/newformat/statobsRF.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ML1p_1 ML1p_2 ML1p_3 ML1p_4 ML2p_1.2 ML2p_1.3 ML2p_1.4 ML2p_2.3 ML2p_2.4 ML2p_3.4 ML3p_1.2.3 ML3p_1.2.4 ML3p_1.3.4 ML3p_2.3.4 HWm_1 HWm_2 HWm_3 HWm_4 HWv_1 HWv_2 HWv_3 HWv_4 HBm_1.2 HBm_1.3 HBm_1.4 HBm_2.3 HBm_2.4 HBm_3.4 HBv_1.2 HBv_1.3 HBv_1.4 HBv_2.3 HBv_2.4 HBv_3.4 FST1m_1 FST1m_2 FST1m_3 FST1m_4 FST1v_1 FST1v_2 FST1v_3 FST1v_4 FST2m_1.2 FST2m_1.3 FST2m_1.4 FST2m_2.3 FST2m_2.4 FST2m_3.4 FST2v_1.2 FST2v_1.3 FST2v_1.4 FST2v_2.3 FST2v_2.4 FST2v_3.4 NEIm_1.2 NEIm_1.3 NEIm_1.4 NEIm_2.3 NEIm_2.4 NEIm_3.4 NEIv_1.2 NEIv_1.3 NEIv_1.4 NEIv_2.3 NEIv_2.4 NEIv_3.4 AMLm_1.2.3 AMLm_2.1.3 AMLm_3.1.2 AMLm_1.2.4 AMLm_2.1.4 AMLm_4.1.2 AMLm_1.3.4 AMLm_3.1.4 AMLm_4.1.3 AMLm_2.3.4 AMLm_3.2.4 AMLm_4.2.3 AMLv_1.2.3 AMLv_2.1.3 AMLv_3.1.2 AMLv_1.2.4 AMLv_2.1.4 AMLv_4.1.2 AMLv_1.3.4 AMLv_3.1.4 AMLv_4.1.3 AMLv_2.3.4 AMLv_3.2.4 AMLv_4.2.3 FST3m_1.2.3 FST3m_1.2.4 FST3m_1.3.4 FST3m_2.3.4 FST3v_1.2.3 FST3v_1.2.4 FST3v_1.3.4 FST3v_2.3.4 FST4m_1.2.3.4 FST4v_1.2.3.4 F3m_1.2.3 F3m_2.1.3 F3m_3.1.2 F3m_1.2.4 F3m_2.1.4 F3m_4.1.2 F3m_1.3.4 F3m_3.1.4 F3m_4.1.3 F3m_2.3.4 F3m_3.2.4 F3m_4.2.3 F3v_1.2.3 F3v_2.1.3 F3v_3.1.2 F3v_1.2.4 F3v_2.1.4 F3v_4.1.2 F3v_1.3.4 F3v_3.1.4 F3v_4.1.3 F3v_2.3.4 F3v_3.2.4 F3v_4.2.3 F4m_1.2.3.4 F4m_1.3.2.4 F4m_1.4.2.3 F4v_1.2.3.4 F4v_1.3.2.4 F4v_1.4.2.3

1.568000000000000e-01 1.678000000000000e-01 1.326000000000000e-01 1.352000000000000e-01 3.440000000000000e-02 2.900000000000000e-02 2.780000000000000e-02 4.200000000000000e-02 4.380000000000000e-02 4.900000000000000e-02 4.000000000000000e-03 2.800000000000000e-03 7.800000000000000e-03 1.880000000000000e-02 2.846968421052632e-01 2.790715789473684e-01 2.868642105263158e-01 2.870389473684211e-01 3.223984027387196e-02 3.295100690609037e-02 3.107921258379100e-02 3.105523601229942e-02 3.070560000000000e-01 3.049800000000000e-01 3.062590000000000e-01 3.011170000000000e-01 3.015100000000000e-01 2.954530000000000e-01 2.664342154830966e-02 2.573648689737948e-02 2.566292250350070e-02 2.709084548009602e-02 2.684200830166033e-02 2.590368052710542e-02 5.956586463060817e-02 7.814769874931629e-02 5.240643415710141e-02 5.182922898050992e-02 3.517906971860676e-01 3.595507171873558e-01 3.391263036655473e-01 3.388646790815076e-01 8.197784597494988e-02 6.295322212673135e-02 6.658124418599255e-02 6.027260255368477e-02 6.120771066334537e-02 2.877419099698287e-02 1.466438427950965e-02 1.182408658374722e-02 1.248787863125582e-02 1.154724195873864e-02 1.186788804287042e-02 7.416059059191221e-03 5.014892847050694e-02 4.314128447341042e-02 4.453979690855386e-02 4.206224351259095e-02 4.222062285822909e-02 2.975466744207970e-02 7.297426651402327e-03 5.385952529871507e-03 5.983948559867485e-03 5.619270245055672e-03 5.719695522559435e-03 2.917812081342846e-03 4.652855467510640e-01 4.549712017078646e-01 4.866101224778395e-01 4.721121897616337e-01 4.564741239130648e-01 4.822697120758785e-01 5.032114876143826e-01 4.233300963157161e-01 4.243215896223842e-01 5.047798770054500e-01 4.359136821370371e-01 4.283899749416991e-01 2.000261014216488e-01 2.006885644645834e-01 1.902469960900266e-01 2.027329869557309e-01 1.983119335425060e-01 1.916273139734523e-01 2.084522858920826e-01 1.882430038657947e-01 1.901762833425623e-01 2.101916725859375e-01 1.896867894602543e-01 1.889118529832192e-01 6.846647650618530e-02 6.997800844855286e-02 5.304116502627133e-02 5.022410381914166e-02 8.746173289655702e-03 9.074458173706331e-03 7.294536070063879e-03 7.047118530593053e-03 6.048730662938400e-02 6.428613164721039e-03 1.311107894736842e-02 1.206071052631579e-02 6.088394736842105e-03 1.355407894736842e-02 1.161771052631579e-02 6.837026315789474e-03 1.554457894736842e-02 3.654894736842105e-03 4.846526315789474e-03 1.405121052631579e-02 4.097894736842105e-03 4.403526315789474e-03 1.924490493776733e-03 1.938259936440889e-03 1.481296964461452e-03 1.967414045118581e-03 2.023265162222888e-03 1.578696838918338e-03 1.926895655006347e-03 1.015786065110529e-03 1.089569401259753e-03 1.865684708329478e-03 1.032712333048327e-03 1.089472418336853e-03 4.430000000000000e-04 2.433500000000000e-03 1.990500000000000e-03 1.006890129025805e-03 1.287489325615123e-03 1.254577575265053e-03
6 changes: 6 additions & 0 deletions test/readreftable-test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -134,3 +134,9 @@ TEST_CASE("Read statobs from txt") {
const auto expected = Catch::Matchers::Approx(readstatobs).epsilon(0.001);
CHECK_THAT( statobs, expected );
}

TEST_CASE("Read statobs from txt new format") {
const auto readstatobs = readStatObs("newformat/statobsRF.txt");
const auto expected = Catch::Matchers::Approx(readstatobs).epsilon(0.001);
CHECK_THAT( statobs2, expected );
}
134 changes: 134 additions & 0 deletions test/statobsTest.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,4 +131,138 @@ std::vector<double> statobs {
0.00057110,
0.00065931,
0.00050151
};

std::vector<double> statobs2 {
1.568000000000000e-01,
1.678000000000000e-01,
1.326000000000000e-01,
1.352000000000000e-01,
3.440000000000000e-02,
2.900000000000000e-02,
2.780000000000000e-02,
4.200000000000000e-02,
4.380000000000000e-02,
4.900000000000000e-02,
4.000000000000000e-03,
2.800000000000000e-03,
7.800000000000000e-03,
1.880000000000000e-02,
2.846968421052632e-01,
2.790715789473684e-01,
2.868642105263158e-01,
2.870389473684211e-01,
3.223984027387196e-02,
3.295100690609037e-02,
3.107921258379100e-02,
3.105523601229942e-02,
3.070560000000000e-01,
3.049800000000000e-01,
3.062590000000000e-01,
3.011170000000000e-01,
3.015100000000000e-01,
2.954530000000000e-01,
2.664342154830966e-02,
2.573648689737948e-02,
2.566292250350070e-02,
2.709084548009602e-02,
2.684200830166033e-02,
2.590368052710542e-02,
5.956586463060817e-02,
7.814769874931629e-02,
5.240643415710141e-02,
5.182922898050992e-02,
3.517906971860676e-01,
3.595507171873558e-01,
3.391263036655473e-01,
3.388646790815076e-01,
8.197784597494988e-02,
6.295322212673135e-02,
6.658124418599255e-02,
6.027260255368477e-02,
6.120771066334537e-02,
2.877419099698287e-02,
1.466438427950965e-02,
1.182408658374722e-02,
1.248787863125582e-02,
1.154724195873864e-02,
1.186788804287042e-02,
7.416059059191221e-03,
5.014892847050694e-02,
4.314128447341042e-02,
4.453979690855386e-02,
4.206224351259095e-02,
4.222062285822909e-02,
2.975466744207970e-02,
7.297426651402327e-03,
5.385952529871507e-03,
5.983948559867485e-03,
5.619270245055672e-03,
5.719695522559435e-03,
2.917812081342846e-03,
4.652855467510640e-01,
4.549712017078646e-01,
4.866101224778395e-01,
4.721121897616337e-01,
4.564741239130648e-01,
4.822697120758785e-01,
5.032114876143826e-01,
4.233300963157161e-01,
4.243215896223842e-01,
5.047798770054500e-01,
4.359136821370371e-01,
4.283899749416991e-01,
2.000261014216488e-01,
2.006885644645834e-01,
1.902469960900266e-01,
2.027329869557309e-01,
1.983119335425060e-01,
1.916273139734523e-01,
2.084522858920826e-01,
1.882430038657947e-01,
1.901762833425623e-01,
2.101916725859375e-01,
1.896867894602543e-01,
1.889118529832192e-01,
6.846647650618530e-02,
6.997800844855286e-02,
5.304116502627133e-02,
5.022410381914166e-02,
8.746173289655702e-03,
9.074458173706331e-03,
7.294536070063879e-03,
7.047118530593053e-03,
6.048730662938400e-02,
6.428613164721039e-03,
1.311107894736842e-02,
1.206071052631579e-02,
6.088394736842105e-03,
1.355407894736842e-02,
1.161771052631579e-02,
6.837026315789474e-03,
1.554457894736842e-02,
3.654894736842105e-03,
4.846526315789474e-03,
1.405121052631579e-02,
4.097894736842105e-03,
4.403526315789474e-03,
1.924490493776733e-03,
1.938259936440889e-03,
1.481296964461452e-03,
1.967414045118581e-03,
2.023265162222888e-03,
1.578696838918338e-03,
1.926895655006347e-03,
1.015786065110529e-03,
1.089569401259753e-03,
1.865684708329478e-03,
1.032712333048327e-03,
1.089472418336853e-03,
4.430000000000000e-04,
2.433500000000000e-03,
1.990500000000000e-03,
1.006890129025805e-03,
1.287489325615123e-03,
1.254577575265053e-03

};

0 comments on commit a20e3ea

Please sign in to comment.