Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include "pch.h"
- #include <iostream>
- #pragma warning(push)
- #pragma warning(disable : 4996)
- #pragma warning(disable : 4244)
- #include "csv.h"
- #pragma warning(pop)
- #include <time.h>
- #include <string>
- #include <vector>
- #include <math.h>
- #include <fstream>
- #include <random>
- using namespace std;
- string calcsspectral(float teff_val, float AbsM) {
- if (teff_val > 0 && teff_val <= 3500 && AbsM >= 4 && AbsM < 100) {
- int randoms = (rand() % 9 + 1);
- return("M" + to_string(randoms) + "V");
- }
- if (teff_val > 3500 && teff_val <= 4750 && AbsM >= 4 && AbsM < 14) {
- int randoms = (rand() % 9 + 1);
- return("K" + to_string(randoms) + "V");
- }
- if (teff_val > 4750 && teff_val <= 5800 && AbsM >= 3 && AbsM < 12) {
- int randoms = (rand() % 9 + 1);
- return("G" + to_string(randoms) + "V");
- }
- if (teff_val > 5800 && teff_val <= 7300 && AbsM >= -1 && AbsM < 9) {
- int randoms = (rand() % 9 + 1);
- return("F" + to_string(randoms) + "V");
- }
- if (teff_val > 7300 && teff_val <= 9750 && AbsM >= -2 && AbsM < 6) {
- int randoms = (rand() % 9 + 1);
- return("A" + to_string(randoms) + "V");
- }
- if (teff_val > 9750 && teff_val <= 22500 && AbsM >= -2 && AbsM < 5) {
- int randoms = (rand() % 9 + 1);
- return("B" + to_string(randoms) + "V");
- }
- if (teff_val > 22500 && teff_val <= 100000 && AbsM >= -2 && AbsM < 5) {
- int randoms = (rand() % 9 + 1);
- return("O" + to_string(randoms) + "V");
- }
- if (teff_val > 0 && teff_val <= 3500 && AbsM >= -4 && AbsM < 4) {
- int randoms = (rand() % 9 + 1);
- return("M" + to_string(randoms) + "III");
- }
- if (teff_val > 3500 && teff_val <= 4750 && AbsM >= -3 && AbsM < 4) {
- int randoms = (rand() % 9 + 1);
- return("K" + to_string(randoms) + "III");
- }
- if (teff_val > 4750 && teff_val <= 5800 && AbsM >= -2 && AbsM < 3) {
- int randoms = (rand() % 9 + 1);
- return("G" + to_string(randoms) + "III");
- }
- if (teff_val > 5800 && teff_val <= 7300 && AbsM >= -3 && AbsM < -1) {
- int randoms = (rand() % 9 + 1);
- return("F" + to_string(randoms) + "II");
- }
- if (teff_val > 7300 && teff_val <= 9750 && AbsM >= -4 && AbsM < -2) {
- int randoms = (rand() % 9 + 1);
- return("A" + to_string(randoms) + "II");
- }
- if (teff_val > 9750 && teff_val <= 22500 && AbsM >= -4 && AbsM < -3) {
- int randoms = (rand() % 9 + 1);
- return("B" + to_string(randoms) + "II");
- }
- if (teff_val > 22500 && teff_val <= 100000 && AbsM >= -4 && AbsM < -3) {
- int randoms = (rand() % 9 + 1);
- return("O" + to_string(randoms) + "II");
- }
- if (teff_val > 0 && teff_val <= 3500 && AbsM >= -6 && AbsM < -4) {
- int randoms = (rand() % 9 + 1);
- return("M" + to_string(randoms) + "Ib");
- }
- if (teff_val > 3500 && teff_val <= 4750 && AbsM >= -6 && AbsM < -3) {
- int randoms = (rand() % 9 + 1);
- return("K" + to_string(randoms) + "Ib");
- }
- if (teff_val > 4750 && teff_val <= 5800 && AbsM >= -6 && AbsM < -2) {
- int randoms = (rand() % 9 + 1);
- return("G" + to_string(randoms) + "Ib");
- }
- if (teff_val > 5800 && teff_val <= 7300 && AbsM >= -6 && AbsM < -3) {
- int randoms = (rand() % 9 + 1);
- return("F" + to_string(randoms) + "Ib");
- }
- if (teff_val > 7300 && teff_val <= 9750 && AbsM >= -6 && AbsM < -4) {
- int randoms = (rand() % 9 + 1);
- return("A" + to_string(randoms) + "Ib");
- }
- if (teff_val > 9750 && teff_val <= 22500 && AbsM >= -6 && AbsM < -4) {
- int randoms = (rand() % 9 + 1);
- return("B" + to_string(randoms) + "Ib");
- }
- if (teff_val > 22500 && teff_val <= 100000 && AbsM >= -6 && AbsM < -4) {
- int randoms = (rand() % 9 + 1);
- return("O" + to_string(randoms) + "Ib");
- }
- if (teff_val > 0 && teff_val <= 3500 && AbsM >= -100 && AbsM < -6) {
- int randoms = (rand() % 9 + 1);
- return("M" + to_string(randoms) + "Ia");
- }
- if (teff_val > 3500 && teff_val <= 4750 && AbsM >= -100 && AbsM < -6) {
- int randoms = (rand() % 9 + 1);
- return("K" + to_string(randoms) + "Ia");
- }
- if (teff_val > 4750 && teff_val <= 5800 && AbsM >= -100 && AbsM < -6) {
- int randoms = (rand() % 9 + 1);
- return("G" + to_string(randoms) + "Ia");
- }
- if (teff_val > 5800 && teff_val <= 7300 && AbsM >= -100 && AbsM < -6) {
- int randoms = (rand() % 9 + 1);
- return("F" + to_string(randoms) + "Ia");
- }
- if (teff_val > 7300 && teff_val <= 9750 && AbsM >= -100 && AbsM < -6) {
- int randoms = (rand() % 9 + 1);
- return("A" + to_string(randoms) + "Ia");
- }
- if (teff_val > 9750 && teff_val <= 22500 && AbsM >= -100 && AbsM < -6) {
- int randoms = (rand() % 9 + 1);
- return("B" + to_string(randoms) + "Ia");
- }
- if (teff_val > 22500 && teff_val <= 100000 && AbsM >= -100 && AbsM < -6) {
- int randoms = (rand() % 9 + 1);
- return("O" + to_string(randoms) + "Ia");
- }
- if (teff_val > 3500 && teff_val <= 4750 && AbsM >= 14 && AbsM < 100) {
- return("WD");
- }
- if (teff_val > 4750 && teff_val <= 5800 && AbsM >= 12 && AbsM < 100) {
- return("WD");
- }
- if (teff_val > 5800 && teff_val <= 7300 && AbsM >= 9 && AbsM < 100) {
- return("WD");
- }
- if (teff_val > 7300 && teff_val <= 9750 && AbsM >= 6 && AbsM < 100) {
- return("WD");
- }
- if (teff_val > 9750 && teff_val <= 22500 && AbsM >= 5 && AbsM < 100) {
- return("WD");
- }
- if (teff_val > 22500 && teff_val <= 100000 && AbsM >= 5 && AbsM < 100) {
- return("WD");
- }
- // WD End -----------
- // Avoid compiling return warning
- // Should not reach here
- cout << "Should not reach here!" << endl;
- return "x";
- }
- int csvlinecount(string csv_file) {
- int count = 0;
- // Seed rand
- srand((unsigned int)time(NULL));
- rand();
- srand((unsigned int)time(NULL));
- rand();
- srand((unsigned int)time(NULL));
- rand();
- string line;
- ifstream file(csv_file);
- while (getline(file, line)) {
- count++;
- }
- file.close();
- vector<double> raarray(count - 1);
- vector<double> decarray(count - 1);
- vector<double> distarray(count - 1);
- vector<float> teffarray(count - 1);
- vector<float> radiusarray(count - 1);
- vector<float> magnitudearray(count - 1);
- vector<string> designationarray(count - 1);
- vector<float> AbsMagnarray(count - 1);
- //vector<double> parallaxarray(count - 1);
- //vector<double> parallax_errorarray(count - 1);
- io::CSVReader<7> in(csv_file);
- ofstream myfile("output.csv");
- int newcount = 0;
- int csvcount = 0;
- 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"*/);
- 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;*/
- while (in.read_row(designation, RA, Dec, r_est, teff_val, radius_val, phot_g_mean_mag /*radius_val, lum_val, parallax, parallax_error*/))
- {
- csvcount++;
- designationarray[csvcount - 1] = designation;
- raarray[csvcount - 1] = RA;
- decarray[csvcount - 1] = Dec;
- distarray[csvcount - 1] = r_est;
- teffarray[csvcount - 1] = teff_val;
- radiusarray[csvcount - 1] = radius_val;
- magnitudearray[csvcount - 1] = phot_g_mean_mag /* = lum_val*/;
- //parallaxarray[csvcount - 1] = parallax;
- //parallax_errorarray[csvcount - 1] = parallax_error;
- // double raout = raarray[csvcount - 1] * 360 / 24;
- AbsMagnarray[csvcount - 1] = -5 * log10(distarray[csvcount - 1] / 10) + phot_g_mean_mag;
- if ((csvcount % 8192) == 0)
- {
- cout << csvcount << endl;
- }
- if (myfile.is_open())
- {
- if (csvcount == 1)
- {
- myfile << "Name,RA,Dec,Dist,AppMagn,SpecClass,MassSol,RadSol,Temperature" << std::endl;
- }
- {
- /* Name RA Dec Dist AppMagn SpecClass Mass RadSol Temperature */
- 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;
- }
- // else
- // {
- // cout << "unable to open output.csv." << endl;
- // }
- }
- }
- // cout << "Total/incluster count = " << csvcount << "/" << inclustercount << endl;
- myfile.close();
- std::cout << "Done.";
- std::cin.ignore();
- return 0;
- }
- int main()
- {
- cout << "What is the name of the csv?" << endl;
- string inputfile;
- cin >> inputfile;
- csvlinecount(inputfile);
- cin.ignore();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement