Advertisement
Guest User

Untitled

a guest
Apr 18th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.51 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include "pch.h"
  3. #include <iostream>
  4. #pragma warning(push)
  5. #pragma warning(disable : 4996)
  6. #pragma warning(disable : 4244)
  7. #include "csv.h"
  8. #pragma warning(pop)
  9. #include <time.h>
  10. #include <string>
  11. #include <vector>
  12. #include <math.h>
  13. #include <fstream>
  14. #include <random>
  15.  
  16. using namespace std;
  17.  
  18. string calcsspectral(float teff_val, float AbsM) {
  19. if (teff_val > 0 && teff_val <= 3500 && AbsM >= 4 && AbsM < 100) {
  20. int randoms = (rand() % 9 + 1);
  21. return("M" + to_string(randoms) + "V");
  22. }
  23. if (teff_val > 3500 && teff_val <= 4750 && AbsM >= 4 && AbsM < 14) {
  24. int randoms = (rand() % 9 + 1);
  25. return("K" + to_string(randoms) + "V");
  26. }
  27. if (teff_val > 4750 && teff_val <= 5800 && AbsM >= 3 && AbsM < 12) {
  28. int randoms = (rand() % 9 + 1);
  29. return("G" + to_string(randoms) + "V");
  30. }
  31. if (teff_val > 5800 && teff_val <= 7300 && AbsM >= -1 && AbsM < 9) {
  32. int randoms = (rand() % 9 + 1);
  33. return("F" + to_string(randoms) + "V");
  34. }
  35. if (teff_val > 7300 && teff_val <= 9750 && AbsM >= -2 && AbsM < 6) {
  36. int randoms = (rand() % 9 + 1);
  37. return("A" + to_string(randoms) + "V");
  38. }
  39. if (teff_val > 9750 && teff_val <= 22500 && AbsM >= -2 && AbsM < 5) {
  40. int randoms = (rand() % 9 + 1);
  41. return("B" + to_string(randoms) + "V");
  42. }
  43. if (teff_val > 22500 && teff_val <= 100000 && AbsM >= -2 && AbsM < 5) {
  44. int randoms = (rand() % 9 + 1);
  45. return("O" + to_string(randoms) + "V");
  46. }
  47.  
  48. if (teff_val > 0 && teff_val <= 3500 && AbsM >= -4 && AbsM < 4) {
  49. int randoms = (rand() % 9 + 1);
  50. return("M" + to_string(randoms) + "III");
  51. }
  52. if (teff_val > 3500 && teff_val <= 4750 && AbsM >= -3 && AbsM < 4) {
  53. int randoms = (rand() % 9 + 1);
  54. return("K" + to_string(randoms) + "III");
  55. }
  56. if (teff_val > 4750 && teff_val <= 5800 && AbsM >= -2 && AbsM < 3) {
  57. int randoms = (rand() % 9 + 1);
  58. return("G" + to_string(randoms) + "III");
  59. }
  60. if (teff_val > 5800 && teff_val <= 7300 && AbsM >= -3 && AbsM < -1) {
  61. int randoms = (rand() % 9 + 1);
  62. return("F" + to_string(randoms) + "II");
  63. }
  64. if (teff_val > 7300 && teff_val <= 9750 && AbsM >= -4 && AbsM < -2) {
  65. int randoms = (rand() % 9 + 1);
  66. return("A" + to_string(randoms) + "II");
  67. }
  68. if (teff_val > 9750 && teff_val <= 22500 && AbsM >= -4 && AbsM < -3) {
  69. int randoms = (rand() % 9 + 1);
  70. return("B" + to_string(randoms) + "II");
  71. }
  72. if (teff_val > 22500 && teff_val <= 100000 && AbsM >= -4 && AbsM < -3) {
  73. int randoms = (rand() % 9 + 1);
  74. return("O" + to_string(randoms) + "II");
  75. }
  76.  
  77. if (teff_val > 0 && teff_val <= 3500 && AbsM >= -6 && AbsM < -4) {
  78. int randoms = (rand() % 9 + 1);
  79. return("M" + to_string(randoms) + "Ib");
  80. }
  81. if (teff_val > 3500 && teff_val <= 4750 && AbsM >= -6 && AbsM < -3) {
  82. int randoms = (rand() % 9 + 1);
  83. return("K" + to_string(randoms) + "Ib");
  84. }
  85. if (teff_val > 4750 && teff_val <= 5800 && AbsM >= -6 && AbsM < -2) {
  86. int randoms = (rand() % 9 + 1);
  87. return("G" + to_string(randoms) + "Ib");
  88. }
  89. if (teff_val > 5800 && teff_val <= 7300 && AbsM >= -6 && AbsM < -3) {
  90. int randoms = (rand() % 9 + 1);
  91. return("F" + to_string(randoms) + "Ib");
  92. }
  93. if (teff_val > 7300 && teff_val <= 9750 && AbsM >= -6 && AbsM < -4) {
  94. int randoms = (rand() % 9 + 1);
  95. return("A" + to_string(randoms) + "Ib");
  96. }
  97. if (teff_val > 9750 && teff_val <= 22500 && AbsM >= -6 && AbsM < -4) {
  98. int randoms = (rand() % 9 + 1);
  99. return("B" + to_string(randoms) + "Ib");
  100. }
  101. if (teff_val > 22500 && teff_val <= 100000 && AbsM >= -6 && AbsM < -4) {
  102. int randoms = (rand() % 9 + 1);
  103. return("O" + to_string(randoms) + "Ib");
  104. }
  105.  
  106. if (teff_val > 0 && teff_val <= 3500 && AbsM >= -100 && AbsM < -6) {
  107. int randoms = (rand() % 9 + 1);
  108. return("M" + to_string(randoms) + "Ia");
  109. }
  110. if (teff_val > 3500 && teff_val <= 4750 && AbsM >= -100 && AbsM < -6) {
  111. int randoms = (rand() % 9 + 1);
  112. return("K" + to_string(randoms) + "Ia");
  113. }
  114. if (teff_val > 4750 && teff_val <= 5800 && AbsM >= -100 && AbsM < -6) {
  115. int randoms = (rand() % 9 + 1);
  116. return("G" + to_string(randoms) + "Ia");
  117. }
  118. if (teff_val > 5800 && teff_val <= 7300 && AbsM >= -100 && AbsM < -6) {
  119. int randoms = (rand() % 9 + 1);
  120. return("F" + to_string(randoms) + "Ia");
  121. }
  122. if (teff_val > 7300 && teff_val <= 9750 && AbsM >= -100 && AbsM < -6) {
  123. int randoms = (rand() % 9 + 1);
  124. return("A" + to_string(randoms) + "Ia");
  125. }
  126. if (teff_val > 9750 && teff_val <= 22500 && AbsM >= -100 && AbsM < -6) {
  127. int randoms = (rand() % 9 + 1);
  128. return("B" + to_string(randoms) + "Ia");
  129. }
  130. if (teff_val > 22500 && teff_val <= 100000 && AbsM >= -100 && AbsM < -6) {
  131. int randoms = (rand() % 9 + 1);
  132. return("O" + to_string(randoms) + "Ia");
  133. }
  134.  
  135. if (teff_val > 3500 && teff_val <= 4750 && AbsM >= 14 && AbsM < 100) {
  136. return("WD");
  137. }
  138. if (teff_val > 4750 && teff_val <= 5800 && AbsM >= 12 && AbsM < 100) {
  139. return("WD");
  140. }
  141. if (teff_val > 5800 && teff_val <= 7300 && AbsM >= 9 && AbsM < 100) {
  142. return("WD");
  143. }
  144. if (teff_val > 7300 && teff_val <= 9750 && AbsM >= 6 && AbsM < 100) {
  145. return("WD");
  146. }
  147. if (teff_val > 9750 && teff_val <= 22500 && AbsM >= 5 && AbsM < 100) {
  148. return("WD");
  149. }
  150. if (teff_val > 22500 && teff_val <= 100000 && AbsM >= 5 && AbsM < 100) {
  151. return("WD");
  152. }
  153. // WD End -----------
  154.  
  155. // Avoid compiling return warning
  156. // Should not reach here
  157. cout << "Should not reach here!" << endl;
  158. return "x";
  159. }
  160.  
  161. int csvlinecount(string csv_file) {
  162. int count = 0;
  163.  
  164. // Seed rand
  165. srand((unsigned int)time(NULL));
  166. rand();
  167. srand((unsigned int)time(NULL));
  168. rand();
  169. srand((unsigned int)time(NULL));
  170. rand();
  171. string line;
  172. ifstream file(csv_file);
  173.  
  174. while (getline(file, line)) {
  175.  
  176. count++;
  177. }
  178. file.close();
  179. vector<double> raarray(count - 1);
  180. vector<double> decarray(count - 1);
  181. vector<double> distarray(count - 1);
  182. vector<float> teffarray(count - 1);
  183. vector<float> radiusarray(count - 1);
  184. vector<float> magnitudearray(count - 1);
  185. vector<string> designationarray(count - 1);
  186. vector<float> AbsMagnarray(count - 1);
  187. //vector<double> parallaxarray(count - 1);
  188. //vector<double> parallax_errorarray(count - 1);
  189.  
  190. io::CSVReader<7> in(csv_file);
  191. ofstream myfile("output.csv");
  192. int newcount = 0;
  193. int csvcount = 0;
  194. in.read_header(io::ignore_extra_column, "designation", "ra", "dec", "r_est", "teff_val", "radius_val", "phot_g_mean_mag" /*"radius_val", lum_val, "parallax", "parallax_error"*/);
  195. string designation; double RA; double Dec; double r_est; float teff_val; float radius_val; float phot_g_mean_mag; /*; float lum_val; double parallax; double parallax_error;*/
  196. while (in.read_row(designation, RA, Dec, r_est, teff_val, radius_val, phot_g_mean_mag /*radius_val, lum_val, parallax, parallax_error*/))
  197.  
  198. {
  199. csvcount++;
  200. designationarray[csvcount - 1] = designation;
  201. raarray[csvcount - 1] = RA;
  202. decarray[csvcount - 1] = Dec;
  203. distarray[csvcount - 1] = r_est;
  204. teffarray[csvcount - 1] = teff_val;
  205. radiusarray[csvcount - 1] = radius_val;
  206. magnitudearray[csvcount - 1] = phot_g_mean_mag /* = lum_val*/;
  207. //parallaxarray[csvcount - 1] = parallax;
  208. //parallax_errorarray[csvcount - 1] = parallax_error;
  209. // double raout = raarray[csvcount - 1] * 360 / 24;
  210.  
  211. AbsMagnarray[csvcount - 1] = -5 * log10(distarray[csvcount - 1] / 10) + phot_g_mean_mag;
  212.  
  213. if ((csvcount % 8192) == 0)
  214. {
  215. cout << csvcount << endl;
  216. }
  217.  
  218. if (myfile.is_open())
  219. {
  220. if (csvcount == 1)
  221. {
  222. myfile << "Name,RA,Dec,Dist,AppMagn,SpecClass,MassSol,RadSol,Temperature" << std::endl;
  223. }
  224. {
  225. /* Name RA Dec Dist AppMagn SpecClass Mass RadSol Temperature */
  226. myfile << designationarray[csvcount - 1] << "," << raarray[csvcount - 1] << "," << decarray[csvcount - 1] << "," << distarray[csvcount - 1] << "," << magnitudearray[csvcount - 1] << "," << calcsspectral(teff_val, AbsMagnarray[csvcount - 1]) << "," << "," << radiusarray[csvcount - 1] << "," << teffarray[csvcount - 1] << std::endl;
  227.  
  228. }
  229. // else
  230. // {
  231. // cout << "unable to open output.csv." << endl;
  232. // }
  233.  
  234.  
  235. }
  236. }
  237.  
  238. // cout << "Total/incluster count = " << csvcount << "/" << inclustercount << endl;
  239.  
  240. myfile.close();
  241. std::cout << "Done.";
  242. std::cin.ignore();
  243. return 0;
  244. }
  245.  
  246. int main()
  247. {
  248. cout << "What is the name of the csv?" << endl;
  249. string inputfile;
  250. cin >> inputfile;
  251. csvlinecount(inputfile);
  252. cin.ignore();
  253. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement