- Timestamp:
- Feb 23, 2016, 5:36:56 AM (10 years ago)
- Location:
- trunk/Ohana/src/relastro
- Files:
-
- 1 added
- 8 edited
-
Makefile (modified) (1 diff)
-
src/FitPM.c (modified) (4 diffs)
-
src/FitPMandPar.c (modified) (4 diffs)
-
src/FitPosPMfixed.c (modified) (4 diffs)
-
src/UpdateObjects.c (modified) (1 diff)
-
src/fitobj.c (modified) (4 diffs)
-
src/fitobj2.c (added)
-
src/fitpm.c (modified) (8 diffs)
-
test/mana.sh (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/relastro/Makefile
r39365 r39370 200 200 $(BIN)/fitobj.$(ARCH): $(FITOBJ) 201 201 202 fitobj2: $(BIN)/fitobj2.$(ARCH) 203 204 FITOBJ2 = \ 205 $(SRC)/fitobj2.$(ARCH).o \ 206 $(SRC)/ParFactor.$(ARCH).o \ 207 $(SRC)/FitAstromOps.$(ARCH).o \ 208 $(SRC)/FitPosPMfixed.$(ARCH).o \ 209 $(SRC)/FitPM.$(ARCH).o \ 210 $(SRC)/FitPMandPar.$(ARCH).o \ 211 $(SRC)/UpdateObjects.$(ARCH).o \ 212 $(SRC)/BootstrapOps.$(ARCH).o \ 213 $(SRC)/mkpolyterm.$(ARCH).o \ 214 $(SRC)/GetAstromError.$(ARCH).o \ 215 $(SRC)/ImageOps.$(ARCH).o \ 216 $(SRC)/MosaicOps.$(ARCH).o \ 217 $(SRC)/extra.$(ARCH).o \ 218 $(SRC)/plotstuff.$(ARCH).o \ 219 $(SRC)/fitpoly.$(ARCH).o 220 221 $(FITOBJ2): $(INC)/relastro.h 222 $(BIN)/fitobj2.$(ARCH): $(FITOBJ2) 223 202 224 # $(SRC)/FitPM_IRLS.$(ARCH).o \ 203 225 # $(SRC)/FitPMandPar_IRLS.$(ARCH).o \ -
trunk/Ohana/src/relastro/src/FitPM.c
r39364 r39370 186 186 } 187 187 188 FitPM_SetChisq (fit, data, points, Npoints);188 if (!FitPM_SetChisq (fit, data, points, Npoints)) return FALSE; 189 189 return (TRUE); 190 190 } … … 198 198 Wx = Wy = Tx = Ty = Tx2 = Ty2 = Xs = Ys = XT = YT = 0.0; 199 199 200 int Nfit = 0; 200 201 for (i = 0; i < Npoints; i++) { 201 202 if (points[i].mask) continue; // respect the mask if set 203 Nfit ++; 202 204 203 205 wx = points[i].Wx; … … 222 224 YT += points[i].Y*TWy; 223 225 } 226 if (Nfit < 3) return FALSE; 224 227 225 228 // X^T W X … … 290 293 } 291 294 295 if (fit[0].Nfit < 3) { 296 fit[0].chisq = NAN; 297 return FALSE; 298 } 299 292 300 // the reduced chisq is divided by (Ndof = 2*Nfit - Nterms) 293 301 fit[0].chisq = chisq / (2.0*fit[0].Nfit - data->Nterms); -
trunk/Ohana/src/relastro/src/FitPMandPar.c
r39364 r39370 189 189 } 190 190 191 FitPMandPar_SetChisq (fit, data, points, Npoints);191 if (!FitPMandPar_SetChisq (fit, data, points, Npoints)) return FALSE; 192 192 return (TRUE); 193 193 } … … 205 205 Wx = Wy = Tx = Ty = Tx2 = Ty2 = Xs = Ys = XT = YT = 0.0; 206 206 207 int Nfit = 0; 207 208 for (i = 0; i < Npoints; i++) { 208 209 if (points[i].mask) continue; // respect the mask if set 210 Nfit ++; 209 211 210 212 wx = points[i].Wx; … … 244 246 YT += points[i].Y*TWy; 245 247 } 248 if (Nfit < 3) return FALSE; 246 249 247 250 data->A[0][0] = Wx; … … 321 324 } 322 325 326 if (fit[0].Nfit < 3) { 327 fit[0].chisq = NAN; 328 return FALSE; 329 } 330 323 331 // the reduced chisq is divided by (Ndof = 2*Nfit - Nterms) 324 332 fit[0].chisq = chisq / (2.0*fit[0].Nfit - data->Nterms); 325 333 334 326 335 return TRUE; 327 336 } -
trunk/Ohana/src/relastro/src/FitPosPMfixed.c
r39367 r39370 180 180 } 181 181 182 FitPosPMfixed_SetChisq (fit, data, points, Npoints);182 if (!FitPosPMfixed_SetChisq (fit, data, points, Npoints)) return FALSE; 183 183 return (TRUE); 184 184 } … … 192 192 Wx = Wy = Tx = Ty = Xs = Ys = 0.0; 193 193 194 int Nfit = 0; 194 195 for (i = 0; i < Npoints; i++) { 195 196 if (points[i].mask) continue; // respect the mask if set 197 Nfit ++; 196 198 197 199 wx = points[i].Wx; … … 207 209 Ys += points[i].Y*wy; 208 210 } 211 if (Nfit < 2) return FALSE; 209 212 210 213 // X^T W X … … 257 260 } 258 261 262 if (fit[0].Nfit < 2) { 263 fit[0].chisq = NAN; 264 return FALSE; 265 } 266 259 267 // the reduced chisq is divided by (Ndof = 2*Nfit - Nterms) 260 268 fit[0].chisq = chisq / (2.0*fit[0].Nfit - data->Nterms); -
trunk/Ohana/src/relastro/src/UpdateObjects.c
r39367 r39370 766 766 if (USE_GALAXY_MODEL) { 767 767 for (i = 0; i < Nfit; i++) { 768 fit ->uR = average->uRgal;769 fit ->uD = average->uDgal;768 fit[i].uR = average->uRgal; 769 fit[i].uD = average->uDgal; 770 770 } 771 771 } else { 772 772 for (i = 0; i < Nfit; i++) { 773 fit ->uR = 0.0;774 fit ->uD = 0.0;773 fit[i].uR = 0.0; 774 fit[i].uD = 0.0; 775 775 } 776 776 } -
trunk/Ohana/src/relastro/src/fitobj.c
r39367 r39370 9 9 # define MJD_REF_YRS 12.4148 /* 2012/06/01,00:00:00 */ 10 10 11 # define MJD_J2000 51544. 0 /* 2010/01/01,00:00:00 */11 # define MJD_J2000 51544.5 /* 2000/01/01,12:00:00 */ 12 12 13 13 # define POS_ERROR 0.010 /* arcsec */ … … 109 109 long A = now.tv_sec + now.tv_usec * 1000000; 110 110 srand48(A); 111 // srand48(1); 111 112 } 112 113 … … 179 180 catalog->average->uRgal = uR; 180 181 catalog->average->uDgal = uD; 182 183 // int T2000 = ohana_date_to_sec ("2000/01/01,12:00:00"); 181 184 for (i = 0; i < Npoints; i++) { 182 185 // ParFactor expects a time which is in years since J2000 (MJD_..._YRS is so defined) 183 double Tmjd = MJD_MIN_MJD + drand48()*(MJD_MAX_MJD - MJD_MIN_MJD); 186 double Tyears = MJD_MIN_YRS + drand48()*(MJD_MAX_YRS - MJD_MIN_YRS); 187 double Tmjd = 365.25*Tyears + MJD_J2000; 184 188 185 189 catalog->measureT[i].t = ohana_mjd_to_sec (Tmjd); 186 double Tyears = (Tmjd - MJD_J2000) / 365.25;187 190 188 191 double pR, pD; … … 208 211 for (i = Npoints; i < Ntotal; i++) { 209 212 // ParFactor expects a time which is in years since J2000 (MJD_..._YRS is so defined) 210 double Tmjd = MJD_MIN_MJD + drand48()*(MJD_MAX_MJD - MJD_MIN_MJD); 213 double Tyears = MJD_MIN_YRS + drand48()*(MJD_MAX_YRS - MJD_MIN_YRS); 214 double Tmjd = 365.25*Tyears + MJD_J2000; 211 215 212 216 catalog->measureT[i].t = ohana_mjd_to_sec (Tmjd); 213 double Tyears = (Tmjd - MJD_J2000) / 365.25;214 217 215 218 double pR, pD; -
trunk/Ohana/src/relastro/src/fitpm.c
r39364 r39370 33 33 }; 34 34 35 float ERROR_BIAS = 1.0; 36 float RA_BIAS = 0.0; 37 float DEC_BIAS = 0.0; 38 35 39 int main (int argc, char **argv) { 36 40 … … 59 63 remove_argument (N, &argc, argv); 60 64 N_BOOTSTRAP = atoi (argv[N]); 65 remove_argument (N, &argc, argv); 66 } 67 if ((N = get_argument (argc, argv, "-error-bias"))) { 68 remove_argument (N, &argc, argv); 69 ERROR_BIAS = atof (argv[N]); 70 remove_argument (N, &argc, argv); 71 } 72 if ((N = get_argument (argc, argv, "-ra-bias"))) { 73 remove_argument (N, &argc, argv); 74 RA_BIAS = atof (argv[N]); 75 remove_argument (N, &argc, argv); 76 } 77 if ((N = get_argument (argc, argv, "-dec-bias"))) { 78 remove_argument (N, &argc, argv); 79 DEC_BIAS = atof (argv[N]); 61 80 remove_argument (N, &argc, argv); 62 81 } … … 108 127 long A = now.tv_sec + now.tv_usec * 1000000; 109 128 srand48(A); 129 srand48(1); 110 130 } 111 131 … … 184 204 fitStats->fit[k].uR = uR; 185 205 fitStats->fit[k].uD = uD; 186 if (!FitPosPMfixed_Basic (&fitStats->fit[ k], fitStats->fitdataPos, fitStats->sample, Nnomask)) continue;206 if (!FitPosPMfixed_Basic (&fitStats->fit[fitStats->Nfit], fitStats->fitdataPos, fitStats->sample, Nnomask)) continue; 187 207 fitStats->Nfit ++; 188 208 } … … 204 224 for (k = 0; k < fitStats->NfitAlloc; k++) { 205 225 BootstrapResample (fitStats->sample, fitStats->nomask, Nnomask); 206 if (!FitPM_Basic (&fitStats->fit[ k], fitStats->fitdataPM, fitStats->sample, Nnomask)) continue;226 if (!FitPM_Basic (&fitStats->fit[fitStats->Nfit], fitStats->fitdataPM, fitStats->sample, Nnomask)) continue; 207 227 fitStats->Nfit ++; 208 228 } … … 226 246 for (k = 0; k < fitStats->NfitAlloc; k++) { 227 247 BootstrapResample (fitStats->sample, fitStats->nomask, Nnomask); 228 if (!FitPMandPar_Basic (&fitStats->fit[ k], fitStats->fitdataPar, fitStats->sample, Nnomask)) continue;248 if (!FitPMandPar_Basic (&fitStats->fit[fitStats->Nfit], fitStats->fitdataPar, fitStats->sample, Nnomask)) continue; 229 249 fitStats->Nfit ++; 230 250 } … … 282 302 points[i].D = Do + (dD + plx*pD + uD*(points[i].T - MJD_REF_YRS))/3600; 283 303 284 points[i].dX = POS_ERROR ;285 points[i].dY = POS_ERROR ;304 points[i].dX = POS_ERROR*ERROR_BIAS; 305 points[i].dY = POS_ERROR*ERROR_BIAS; 286 306 } 287 307 … … 295 315 ParFactor (&pR, &pD, Ro, Do, points[i].T); 296 316 297 double dR = OUT_ERROR*(drand48() - 0.5) ;298 double dD = OUT_ERROR*(drand48() - 0.5) ;317 double dR = OUT_ERROR*(drand48() - 0.5) + RA_BIAS; 318 double dD = OUT_ERROR*(drand48() - 0.5) + DEC_BIAS; 299 319 300 320 points[i].R = Ro + (dR + plx*pR + uR*(points[i].T - MJD_REF_YRS))/3600/dcos(Do); 301 321 points[i].D = Do + (dD + plx*pD + uD*(points[i].T - MJD_REF_YRS))/3600; 302 322 303 points[i].dX = POS_ERROR ;304 points[i].dY = POS_ERROR ;323 points[i].dX = POS_ERROR*ERROR_BIAS; 324 points[i].dY = POS_ERROR*ERROR_BIAS; 305 325 } 306 326 fitStats->Npoints = Ntotal; -
trunk/Ohana/src/relastro/test/mana.sh
r39367 r39370 30 30 end 31 31 32 macro testobj 33 if ($0 != 1) 34 echo "USAGE: testobj" 35 break 36 end 37 38 foreach mode pos pm plx 39 exec ../bin/fitobj.lin64 $mode > test.$mode.dat 40 if ("$mode" == "plx") 41 echo "is plx" 42 reload test.$mode.dat 1 43 else 44 reload test.$mode.dat 0 45 end 46 47 fprintf "%5.2f %5.2f %5.2f %5.2f %5.2f : %5.2f %5.2f %5.2f %5.2f %5.2f : %5.2f %5.2f %5.2f %5.2f %5.2f : %6.2f %5.2f" $value_dRf $value_dDf $value_duR $value_duD $value_dP $value_dRo $value_dDo $value_duRo $value_duDo $value_dPo $sigma_dRo $sigma_dDo $sigma_duRo $sigma_duDo $sigma_dPo $mean_Nfit $mean_chisq 48 end 49 end 50 32 51 macro testnboot 33 52 if ($0 != 2) … … 38 57 foreach nboot 20 30 100 300 1000 39 58 exec ../bin/fitpm.lin64 -Nstars 3000 -Noutliers 20 -Npoints 100 -Nbootstrap $nboot $1 > test.$1.dat 40 reload test.$1.dat 59 reload test.$1.dat 0 41 60 42 61 fprintf "%4d : %5.2f %5.2f %5.2f %5.2f %5.2f : %5.2f %5.2f %5.2f %5.2f %5.2f : %5.2f %5.2f %5.2f %5.2f %5.2f : %6.2f %5.2f" $nboot $value_dRf $value_dDf $value_duR $value_duD $value_dP $value_dRo $value_dDo $value_duRo $value_duDo $value_dPo $sigma_dRo $sigma_dDo $sigma_duRo $sigma_duDo $sigma_dPo $mean_Nfit $mean_chisq … … 50 69 end 51 70 52 foreach outliers 0 3 10 30 100 71 # foreach outliers 0 3 10 30 100 72 73 foreach outliers 10 53 74 exec ../bin/fitpm.lin64 -Nstars 3000 -Noutliers $outliers -Npoints 100 -Nbootstrap 100 $1 > test.$1.dat 54 reload test.$1.dat 75 reload test.$1.dat 0 55 76 56 77 fprintf "%4d : %5.2f %5.2f %5.2f %5.2f %5.2f : %5.2f %5.2f %5.2f %5.2f %5.2f : %5.2f %5.2f %5.2f %5.2f %5.2f : %6.2f %5.2f" $outliers $value_dRf $value_dDf $value_duR $value_duD $value_dP $value_dRo $value_dDo $value_duRo $value_duDo $value_dPo $sigma_dRo $sigma_dDo $sigma_duRo $sigma_duDo $sigma_dPo $mean_Nfit $mean_chisq … … 59 80 60 81 macro reload 61 if ($0 != 2)62 echo "USAGE: reload (file) "82 if ($0 != 3) 83 echo "USAGE: reload (file) (isObjPLX)" 63 84 break 64 85 end 65 86 66 87 data $1 67 read Ro 1 Do 2 uRo 3 uDo 4 Po 5 Rx 7 Dx 8 uRx 9 uDx 10 Px 11 Tx 13 dRo 15 dDo 16 duRo 17 duDo 18 dPo 19 Nfit 20 chisq 22 88 if ($2) 89 read Npts 1 Nout 2 Ro 3 Do 4 uRo 5 uDo 6 Po 7 Rx 9 Dx 10 uRx 11 uDx 12 Px 13 Tx 15 dRo 17 dDo 18 duRo 19 duDo 20 dPo 21 Nfit 22 chisq 26 90 # read Ro 1 Do 2 uRo 3 uDo 4 Po 5 Rx 7 Dx 8 uRx 9 uDx 10 Px 11 Tx 13 dRo 15 dDo 16 duRo 17 duDo 18 dPo 19 Nfit 20 chisq 24 91 else 92 read Ro 1 Do 2 uRo 3 uDo 4 Po 5 Rx 7 Dx 8 uRx 9 uDx 10 Px 11 Tx 13 dRo 15 dDo 16 duRo 17 duDo 18 dPo 19 Nfit 20 chisq 22 93 end 68 94 69 95 foreach f R D uD uR P … … 98 124 end 99 125 126 macro teststats 127 if ($0 != 2) 128 echo "USAGE: teststats (file)" 129 break 130 end 131 132 data $1 133 # read Npts 1 Nout 2 Ro 3 Do 4 uRo 5 uDo 6 Po 7 Rx 9 Dx 10 uRx 11 uDx 12 Px 13 Tx 15 dRo 17 dDo 18 duRo 19 duDo 20 dPo 21 Nfit 22 chisq 26 134 # read Ro 1 Do 2 uRo 3 uDo 4 Po 5 Rx 7 Dx 8 uRx 9 uDx 10 Px 11 Tx 13 dRo 15 dDo 16 duRo 17 duDo 18 dPo 19 Nfit 20 chisq 24 135 read Ro 1 Do 2 uRo 3 uDo 4 Po 5 Rx 7 Dx 8 uRx 9 uDx 10 Px 11 Tx 13 dRo 15 dDo 16 duRo 17 duDo 18 dPo 19 Nfit 20 chisq 22 136 137 foreach f R D uD uR P 138 set d$f = $f\o - $f\x 139 end 140 141 set Rf = Rx - uRx*(Tx - $Tref)/3600.0/dcos(Dx) 142 set Df = Dx - uDx*(Tx - $Tref)/3600.0 143 144 set dRf = 3600*(Ro - Rf)*dcos(Dx) 145 set dDf = 3600*(Do - Df) 146 147 # echo "fit scatter" 148 vstat -q dRf; $value_dRf = $SIGMA*1000 149 vstat -q dDf; $value_dDf = $SIGMA*1000 150 vstat -q duR; $value_duR = $SIGMA*1000 151 vstat -q duD; $value_duD = $SIGMA*1000 152 vstat -q dP ; $value_dP = $SIGMA*1000 153 154 # echo "fit errors" 155 vstat -q dRo; $value_dRo = $MEAN*1000; $sigma_dRo = $SIGMA*1000 156 vstat -q dDo; $value_dDo = $MEAN*1000; $sigma_dDo = $SIGMA*1000 157 vstat -q duRo; $value_duRo = $MEAN*1000; $sigma_duRo = $SIGMA*1000 158 vstat -q duDo; $value_duDo = $MEAN*1000; $sigma_duDo = $SIGMA*1000 159 vstat -q dPo ; $value_dPo = $MEAN*1000; $sigma_dPo = $SIGMA*1000 160 161 # echo "Nfit" 162 vstat -q Nfit; $mean_Nfit = $MEAN 163 164 # echo chisq 165 vstat -q chisq; $mean_chisq = $MEAN 166 167 fprintf "%5.2f %5.2f %5.2f %5.2f %5.2f : %5.2f %5.2f %5.2f %5.2f %5.2f : %5.2f %5.2f %5.2f %5.2f %5.2f : %6.2f %5.2f" $value_dRf $value_dDf $value_duR $value_duD $value_dP $value_dRo $value_dDo $value_duRo $value_duDo $value_dPo $sigma_dRo $sigma_dDo $sigma_duRo $sigma_duDo $sigma_dPo $mean_Nfit $mean_chisq 168 169 end 170 100 171 # determine the parallax factor (time) (ra) (dec) (parfR) (parfD) are vectors, 101 172 macro getParFactor_vectors
Note:
See TracChangeset
for help on using the changeset viewer.
