libStatGen Software
1
|
00001 /* 00002 * Copyright (C) 2010 Regents of the University of Michigan 00003 * 00004 * This program is free software: you can redistribute it and/or modify 00005 * it under the terms of the GNU General Public License as published by 00006 * the Free Software Foundation, either version 3 of the License, or 00007 * (at your option) any later version. 00008 * 00009 * This program is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 * GNU General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU General Public License 00015 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00016 */ 00017 00018 #include "MapFunction.h" 00019 #include "MathConstant.h" 00020 00021 #include <math.h> 00022 00023 double DistanceToRecombination(double distance) 00024 { 00025 return (1.0 - exp(-2.0 * distance)) * 0.5; 00026 } 00027 00028 double RecombinationToDistance(double recombination) 00029 { 00030 return (log(max(1.0 - 2 * recombination, 1e-7)) * -0.5); 00031 } 00032 00033 double KosambiDistanceToRecombination(double distance) 00034 { 00035 double e_to_4x = exp(4.0 * distance); 00036 00037 return (0.5 *(e_to_4x - 1.0) / (e_to_4x + 1.0)); 00038 } 00039 00040 double RecombinationToKosambiDistance(double theta) 00041 { 00042 return 0.25 * log((1.0 + 2*theta) / max(1.0 - 2.0*theta, 1e-7)); 00043 }