{ "cells": [ { "cell_type": "markdown", "id": "6713b0f2342f4be1", "metadata": {}, "source": [ "# LIFE Star Catalog\n", "## Introduction\n", "One of the main use cases of the LIFE Target Database is to enable the creation of the LIFE Star Catalog (LIFE-StarCat). It is the stellar sample of potential targets that is used by LIFEsim to provide mission yield estimates. In this tutorial we guide you through how the 4th version of this catalog was created. Following our example you can learn how you could create your own catalog for your science project.\n", "\n", "\n", " __Important: The newest catalog is version 5. There is no tutorial for its creation (yet) but you can access it at [LIFE-StarCat5](https://drive.google.com/file/d/1QSo1d7BvfKKVFt3oZ4KXxLdAZNWK1I_C/view?usp=sharing).__" ] }, { "cell_type": "markdown", "id": "9d065e57484a900a", "metadata": {}, "source": [ "## File location\n", "Make sure to run this file in the correct location (data_generation/life_td_data_generation/catalog). The file in data_generation/docs/source/tutorials is only intended for proper display on the webpage. Alternatively you can adapt the paths to the modules and saving locations." ] }, { "cell_type": "markdown", "id": "1808e4de6072fe84", "metadata": {}, "source": [ "## Getting started\n", "We start by importing the required Python modules for this tutorial. Be aware that you will need to have them installed in your environment for this to work." ] }, { "cell_type": "code", "execution_count": 1, "id": "6403f882decc49b3", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:50:58.584962Z", "start_time": "2025-11-04T13:50:58.301988Z" } }, "outputs": [], "source": [ "import astropy as ap # Used for votables\n", "import numpy as np # Used for arrays\n", "import pyvo as vo # Used for catalog query" ] }, { "cell_type": "markdown", "id": "18820e0b9d3546bb", "metadata": {}, "source": "Next we import the life_td_data_generation specific functions from the modules." }, { "cell_type": "code", "execution_count": 2, "id": "b192cfbe5fecf26c", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:08.394438Z", "start_time": "2025-11-04T13:51:08.391450Z" } }, "outputs": [], "source": [ "# Self created modules\n", "from provider.utils import query\n", "from utils.io import objecttostring" ] }, { "cell_type": "markdown", "id": "deee4feee08142a8", "metadata": {}, "source": "In case you don't want to download the life_td_data_generation package you can also just use the two functions below. Be aware in that case you might need to adjust the paths for saving of the catalog and the plotting functions won't work." }, { "cell_type": "code", "execution_count": 3, "id": "61ea7e5ffaf33339", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:17.432924Z", "start_time": "2025-11-04T13:51:17.428552Z" } }, "outputs": [], "source": [ "def objecttostring(cat):\n", " for i in cat.colnames:\n", " if cat[i].dtype == object: # object =adaptable length string\n", " # transform the type into string\n", " cat[i] = cat[i].astype(str)\n", " return cat\n", "\n", "\n", "def query(link, query, catalogs=[], no_description=True):\n", " \"\"\"\n", " Performs a query via TAP on the service given in the link parameter.\n", "\n", " If a list of tables is given in the catalogs parameter,\n", " those are uploaded to the service beforehand.\n", "\n", " :param str link: Service access URL.\n", " :param str query: Query to be asked of the external database service\n", " in ADQL.\n", " :param catalogs: List of astropy tables to be uploaded to the\n", " service.\n", " :type catalogs: list(astropy.table.table.Table)\n", " :param bool no_description: Defaults to True, wether description gets removed\n", " :returns: Result of the query.\n", " :rtype: astropy.table.table.Table\n", " \"\"\"\n", " # defining the vo service using the given link\n", " service = vo.dal.TAPService(link)\n", " # without upload tables\n", " if catalogs == []:\n", " result = service.run_sync(query.format(**locals()), maxrec=1600000)\n", " # with upload tables\n", " else:\n", " tables = {}\n", " for i in range(len(catalogs)):\n", " tables.update({f\"t{i + 1}\": catalogs[i]})\n", " result = service.run_sync(\n", " query, uploads=tables, timeout=None, maxrec=1600000\n", " )\n", " cat = result.to_table()\n", "\n", " # removing descriptions because merging of data leaves wrong description\n", " for col in cat.colnames:\n", " if no_description:\n", " cat[col].description = \"\"\n", "\n", " return cat" ] }, { "cell_type": "markdown", "id": "4627ce3158da4cb4", "metadata": {}, "source": [ "## Querying the Database\n", "We will now query the LIFE Target Database (life_td) for the data needed to create the catalog. We specify the distance cut as 30 parsec according to the latest LIFE catalog version (4)." ] }, { "cell_type": "code", "execution_count": 4, "id": "5b00da6b06675f19", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:21.679446Z", "start_time": "2025-11-04T13:51:21.676965Z" } }, "outputs": [], "source": [ "distance_cut = 30.0" ] }, { "cell_type": "markdown", "id": "d579748ae3714264", "metadata": {}, "source": "Now we define the concrete query. It is one of the provided examples at http://dc.zah.uni-heidelberg.de/life/q/ex/examples and returns parameters for all objects of type star with distances smaller than 30 pc. We also give the link for the service." }, { "cell_type": "code", "execution_count": 5, "id": "d0f82906b7f808fb", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:23.741469Z", "start_time": "2025-11-04T13:51:23.739211Z" } }, "outputs": [], "source": [ "adql_query = \"\"\"\n", " SELECT o.main_id, sb.coo_ra, sb.coo_dec, sb.sptype_string,\n", " sb.plx_value, sb.dist_st_value, sb.coo_gal_l, sb.coo_gal_b,\n", " sb.teff_st_value, teff_source.ref AS teff_ref,\n", " sb.mass_st_value, mass_source.ref AS mass_ref,\n", " sb.radius_st_value, radius_source.ref AS radius_ref,\n", " sb.binary_flag, binary_source.ref AS binary_ref,\n", " sb.mag_i_value, sb.mag_j_value, sb.class_lum, sb.class_temp,\n", " o_parent.main_id AS parent_main_id, sb_parent.sep_ang_value\n", " FROM life_td.star_basic AS sb\n", " JOIN life_td.object AS o ON sb.object_idref=o.object_id\n", " LEFT JOIN life_td.h_link AS h ON o.object_id=h.child_object_idref\n", " LEFT JOIN life_td.object AS o_parent ON\n", " h.parent_object_idref=o_parent.object_id\n", " LEFT JOIN life_td.star_basic AS sb_parent ON\n", " o_parent.object_id=sb_parent.object_idref\n", " LEFT JOIN life_td.source AS radius_source ON\n", " sb.radius_st_source_idref=radius_source.source_id\n", " LEFT JOIN life_td.source AS mass_source ON\n", " sb.mass_st_source_idref=mass_source.source_id\n", " LEFT JOIN life_td.source AS teff_source ON\n", " sb.teff_st_source_idref=teff_source.source_id\n", " LEFT JOIN life_td.source AS binary_source ON\n", " sb.binary_source_idref=binary_source.source_id\n", " WHERE o.type = 'st' AND sb.dist_st_value < \"\"\" + str(distance_cut)\n", "service = \"http://dc.zah.uni-heidelberg.de/tap\"\n", "# service = \"http://dc.g-vo.org/tap\"" ] }, { "cell_type": "markdown", "id": "7768b95d2535e345", "metadata": {}, "source": [ "Next we perform the actual query.\n", "\n", "Note: If you use the query function through the import and it takes long (<1min) that is because that function uses the asynchroneous modus which can take longer if there are many big queries on the same server. In that case instead run the cell with the query function written out instead of imported. It uses the synchroneous modus." ] }, { "cell_type": "code", "execution_count": 6, "id": "f105bd3bf66fef10", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:29.733259Z", "start_time": "2025-11-04T13:51:26.957256Z" } }, "outputs": [], "source": [ "catalog = query(service, adql_query)" ] }, { "cell_type": "markdown", "id": "3164061c23fae205", "metadata": {}, "source": "Let's have a short look at what we got:" }, { "cell_type": "code", "execution_count": 7, "id": "bf25a8c69ae8bf9b", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:34.597619Z", "start_time": "2025-11-04T13:51:34.588330Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " main_id coo_ra ... parent_main_id sep_ang_value\n", " deg ... arcsec \n", "---------------------- ------------------ ... -------------- -------------\n", " * 61 Cyg B 316.7302660185276 ... * 61 Cyg 17.5\n", " * 61 Cyg A 316.7247482895925 ... * 61 Cyg 17.5\n", " BD+40 883A 315.0224464400413 ... BD+40 883 1.0\n", " L 1578-44 B 324.1601460120721 ... L 1578-44 1.0\n", " L 1578-44 A 324.16073469423293 ... L 1578-44 1.0\n", " UPM J2325+4717B 351.4090302929913 ... UPM J2325+4717 --\n", " UPM J2325+4717A 351.4091812460812 ... UPM J2325+4717 --\n", " Ross 200B 325.0050669305063 ... Ross 200 1.2\n", " Ross 200A 325.0044367358217 ... Ross 200 1.2\n", " ... ... ... ... ...\n", " HD 39071 87.34407314049 ... --\n", " LP 745-67 250.50179723021 ... --\n", "2MASSW J1338261+414034 204.6088835976029 ... --\n", " LEHPM 5537 347.4554103764454 ... --\n", " HD 62848 115.83953258883004 ... --\n", " CFBDS J030135-161418 45.396532 ... --\n", " Wolf 1014 333.14977013473833 ... --\n", " G 130-14 357.47429569389 ... --\n", " LP 860-46 238.48788628228536 ... --\n", " LP 709-43 32.51528919165918 ... --\n", "Length = 9067 rows\n" ] } ], "source": [ "print(catalog)" ] }, { "cell_type": "markdown", "id": "987c52404f9915b0", "metadata": {}, "source": "We can see that we obtained a table of about 10'000 stars." }, { "cell_type": "markdown", "id": "6a5d248d6145ac49", "metadata": {}, "source": [ "## Processing the result\n", "### Removing non main-sequence stars\n", "For the LIFE mission we are only interested in main sequence stars so in the next step we remove all other stars. We first remove those without main sequence temperature classes (e.g. white dwarfs)." ] }, { "cell_type": "code", "execution_count": 8, "id": "b7280d937a4f997", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:41.600690Z", "start_time": "2025-11-04T13:51:41.595076Z" } }, "outputs": [], "source": [ "ms_tempclass = np.array([\"O\", \"B\", \"A\", \"F\", \"G\", \"K\", \"M\"])\n", "cat_ms_tempclass = catalog[\n", " np.where(np.isin(catalog[\"class_temp\"], ms_tempclass))\n", "]" ] }, { "cell_type": "markdown", "id": "713d30061e7b8a27", "metadata": {}, "source": [ "Next we remove objects that are not main sequence in luminosity class.\n", "Note that the class_lum parameter from the LIFE Target Database assumes V if no luminosity class is given in the sptype_string parameter. This is justified as the main sequence is the longest lasting evolutionary period of a star leaving the great majority of stars in this stage. This assumption was neccessary as the estimated stellar effective temperature, mass and radius values use a relation requiring luminosity class V." ] }, { "cell_type": "code", "execution_count": 9, "id": "49b9db1a27c1368", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:43.711484Z", "start_time": "2025-11-04T13:51:43.697359Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " main_id coo_ra ... parent_main_id sep_ang_value\n", " deg ... arcsec \n", "--------------- ------------------ ... -------------- -------------\n", " * 61 Cyg B 316.7302660185276 ... * 61 Cyg 17.5\n", " * 61 Cyg A 316.7247482895925 ... * 61 Cyg 17.5\n", " BD+40 883A 315.0224464400413 ... BD+40 883 1.0\n", " L 1578-44 A 324.16073469423293 ... L 1578-44 1.0\n", " HD 239960B 336.9991483422729 ... HD 239960 113.7\n", " HD 239960A 336.9981564512275 ... HD 239960 113.7\n", " HD 179958 288.02093934795624 ... BD+49 2959 196.0\n", " HD 179957 288.01949584708956 ... BD+49 2959 196.0\n", " Wolf 1084 310.8302599214592 ... Wolf 1084 0.1\n", " ... ... ... ... ...\n", " LP 346-21 350.99969919854044 ... --\n", "SIPS J1906-5828 286.60564127791 ... --\n", " L 404-10 214.3578488896829 ... --\n", " G 85-38 75.47167763647 ... --\n", " HD 39071 87.34407314049 ... --\n", " HD 62848 115.83953258883004 ... --\n", " Wolf 1014 333.14977013473833 ... --\n", " G 130-14 357.47429569389 ... --\n", " LP 860-46 238.48788628228536 ... --\n", " LP 709-43 32.51528919165918 ... --\n", "Length = 5217 rows\n" ] } ], "source": [ "ms_lumclass = np.array([\"V\"])\n", "cat_ms_lumclass = cat_ms_tempclass[\n", " np.where(np.isin(cat_ms_tempclass[\"class_lum\"], ms_lumclass))\n", "]\n", "print(cat_ms_lumclass)" ] }, { "cell_type": "markdown", "id": "f7e02a0f260a219c", "metadata": {}, "source": "Now for the final catalog we want to have stellar mass values for each object. Currently the database is not able to assign model masses to some of the spectral types. This is the case when something like M or M (3) V is given in sptype_string. This will be implemented in one of the future database releases but for now we will just remove all objects without entries in mass_st_value." }, { "cell_type": "code", "execution_count": 10, "id": "e104a0610133297", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:46.814759Z", "start_time": "2025-11-04T13:51:46.806717Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " main_id mass_st_value sptype_string\n", " solMass \n", "---------------- ------------- -------------\n", " * zet01 UMa -- A1.5Vas\n", " HD 61606 -- K3V\n", " BD+16 2708 -- M3V\n", " HD 191408 -- K2.5V\n", " HD 21209 -- K3.5V\n", " * 54 Psc -- K0.5V\n", " * 54 Psc -- K0.5V\n", " HD 6440A -- K3.5V\n", " HD 15468 -- K4.5Vk\n", " ... ... ...\n", " HD 27274 -- K4.5Vk:\n", "UCAC4 563-099325 -- F\n", " UCAC2 1564860 -- M\n", " HD 192961 -- K5.5V\n", " HD 170209 -- K(2)V\n", " HD 12058 -- K4.5Vk:\n", " HD 214749 -- K4.5Vk\n", " HD 197396 -- K2.5V\n", " HD 109333 -- K4.5V\n", " CD-34 1169 -- M\n", "Length = 88 rows\n" ] } ], "source": [ "print(\n", " cat_ms_lumclass[\"main_id\", \"mass_st_value\", \"sptype_string\"][\n", " cat_ms_lumclass[\"mass_st_value\"].mask.nonzero()[0]\n", " ]\n", ")\n", "cat_ms_lumclass.remove_rows(cat_ms_lumclass[\"mass_st_value\"].mask.nonzero()[0])" ] }, { "cell_type": "markdown", "id": "824ada927d9cfc62", "metadata": {}, "source": [ "### Removing higher order multiples\n", "For the LIFE catalog we want single stars and wide binaries that can be approximated as single stars. For that we now split the sample into single and multiple stars:" ] }, { "cell_type": "code", "execution_count": 11, "id": "c546d0892b69b178", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:49.602622Z", "start_time": "2025-11-04T13:51:49.595935Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3137 1992\n" ] } ], "source": [ "singles = cat_ms_lumclass[np.where(cat_ms_lumclass[\"binary_flag\"] == \"False\")]\n", "multiples = cat_ms_lumclass[np.where(cat_ms_lumclass[\"binary_flag\"] == \"True\")]\n", "print(len(singles), len(multiples))" ] }, { "cell_type": "markdown", "id": "1bc403563a9ce27c", "metadata": {}, "source": [ "Next we remove higher order multiples. That means we remove systems like shown in the nextled multiples part of the following figure:\n", "![title](multiplicity.png)" ] }, { "cell_type": "markdown", "id": "c05ebb4b89b54306", "metadata": {}, "source": "To do that we first remove those objects, where the parent object is a child object as well. In the example above that would be \"system AB\". For that we need to get the hierarchy table from life_td." }, { "cell_type": "code", "execution_count": 12, "id": "69bea1f678667ba9", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:52.020239Z", "start_time": "2025-11-04T13:51:51.641034Z" } }, "outputs": [], "source": [ "adql_query2 = \"\"\"\n", " SELECT o.main_id as child_main_id,o.object_id\n", " FROM life_td.object AS o\n", " JOIN life_td.h_link AS h on o.object_id=h.child_object_idref\n", " \"\"\"\n", "h_link = query(service, adql_query2)" ] }, { "cell_type": "code", "execution_count": 13, "id": "172e45cafed13cba", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:53.589058Z", "start_time": "2025-11-04T13:51:53.490254Z" } }, "outputs": [], "source": [ "higher_order_multiples = np.isin(\n", " multiples[\"parent_main_id\"], h_link[\"child_main_id\"]\n", ")\n", "multiples.remove_rows(higher_order_multiples)" ] }, { "cell_type": "markdown", "id": "6915ab3b9fa135fe", "metadata": {}, "source": "Now we also remove objects that have multiple parent objects, e.g., * 9 Aur has as parent WDS J05067+5136AB, WDS J05067+5136AC and WDS J05067+5136AE given." }, { "cell_type": "code", "execution_count": 14, "id": "b4cedda3e39ccf5b", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:55.327355Z", "start_time": "2025-11-04T13:51:55.311971Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "974\n" ] } ], "source": [ "multi_parent = []\n", "grouped = multiples.group_by(\"main_id\")\n", "ind = grouped.groups.indices\n", "for i in range(len(ind) - 1):\n", " if ind[i + 1] - ind[i] != 1:\n", " multi_parent.append(grouped[\"main_id\"][ind[i]])\n", "\n", "single_parent_multiples = grouped[\n", " np.where(np.invert(np.isin(grouped[\"main_id\"], multi_parent)))\n", "]\n", "print(len(single_parent_multiples))" ] }, { "cell_type": "markdown", "id": "4f0c4a5f3e0b697b", "metadata": {}, "source": "Since we want to get wide binaries the next step is to have a look at the given separation values. We remove those binaries where no separation value is given." }, { "cell_type": "code", "execution_count": 15, "id": "bc79f39892301d0b", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:57.269905Z", "start_time": "2025-11-04T13:51:57.205671Z" } }, "outputs": [], "source": [ "sep_multiples = single_parent_multiples[\n", " np.where(single_parent_multiples[\"sep_ang_value\"].mask == False)\n", "].copy()" ] }, { "cell_type": "markdown", "id": "3a7e8bd10272e020", "metadata": {}, "source": "Now we transform the separation values from angular into physical. This is neccessary as we want to look at in a later step at the planetery orbit stability around the habitable zone." }, { "cell_type": "code", "execution_count": 16, "id": "3b28bf2dd701da9f", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:51:58.967340Z", "start_time": "2025-11-04T13:51:58.929587Z" } }, "outputs": [], "source": [ "sep_multiples[\"sep_phys_value\"] = sep_multiples[\n", " \"sep_ang_value\"\n", "] # just initiating new column with same properties\n", "sep_multiples[\"sep_phys_value\"].unit = ap.units.AU\n", "for i in range(len(sep_multiples)):\n", " sep_multiples[\"sep_phys_value\"][i] = np.round(\n", " sep_multiples[\"sep_ang_value\"][i] * sep_multiples[\"dist_st_value\"][i], 1\n", " )" ] }, { "cell_type": "markdown", "id": "7d7d6c7cc823228e", "metadata": {}, "source": "Now we only keep those binaries where both components fulfill all our requirements. Meaning the posses the parameters we need to compute the orbital stability mentioned above. Those parameters are being main sequence having the separation value given." }, { "cell_type": "code", "execution_count": 17, "id": "9021f6bd6141d065", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:52:01.315174Z", "start_time": "2025-11-04T13:52:00.717794Z" } }, "outputs": [], "source": [ "grouped_multiples = sep_multiples.group_by(\"parent_main_id\")\n", "ind = grouped_multiples.groups.indices\n", "\n", "result = grouped_multiples[:0].copy()\n", "\n", "for i in range(len(ind) - 1):\n", " l = ind[i + 1] - ind[i]\n", " if l == 2:\n", " result.add_row(grouped_multiples[ind[i]])\n", " result.add_row(grouped_multiples[ind[i] + 1])" ] }, { "cell_type": "code", "execution_count": 18, "id": "2cecebe47b9d8707", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:52:02.688574Z", "start_time": "2025-11-04T13:52:02.686694Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "418\n" ] } ], "source": [ "print(len(result))" ] }, { "cell_type": "markdown", "id": "3096c966a188e83a", "metadata": {}, "source": [ "### Wide binaries\n", "Now we actually focus on the wide binaries. This means we keep only objects where <10 AU planet orbits are stable. For that we use the formula from Holman and Wiegert 1999 while assuming circular orbits and neglegt projection effects of the bianry separations.\n", "The following function computes the critical separation beyond which a planet on a S-type orbit is not stable any more." ] }, { "cell_type": "code", "execution_count": 19, "id": "5a6c811b5154d54d", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:52:04.605914Z", "start_time": "2025-11-04T13:52:04.603285Z" } }, "outputs": [], "source": [ "def crit_sep(eps, mu, a_bin):\n", " \"\"\"\n", " Computes critical semimajor-axis for planet orbit stability.\n", "\n", " For binary system as described in Holman and Wiegert 1999.\n", "\n", " :param eps: Binary orbit excentricity.\n", " :type eps:\n", " :param mu: mass fraction with mu=m_s/(m_p+m_s), with m_s the mass\n", " of the star considered as perturbing binary companion and m_p\n", " the mass of the star the planet is orbiting.\n", " :type mu:\n", " :param a_bin: semimajor-axis of the binary stars.\n", " :type a_bin:\n", " :returns: Critical separation beyond which a planet on a S-type\n", " orbit (circumstellar) and on a P-type orbit (circumbinary) is\n", " not stable any more.\n", " :rtype:\n", " \"\"\"\n", " a_crit_s = (\n", " 0.464\n", " - 0.38 * mu\n", " - 0.631 * eps\n", " + 0.586 * mu * eps\n", " + 0.15 * eps**2\n", " - 0.198 * mu * eps**2\n", " ) * a_bin\n", " a_crit_p = (\n", " 1.6\n", " + 5.1 * eps\n", " - 2.22 * eps**2\n", " + 4.12 * mu\n", " - 4.27 * eps * mu\n", " - 5.09 * mu**2\n", " + 4.61 * eps**2 * mu**2\n", " ) * a_bin\n", " return a_crit_s, a_crit_p" ] }, { "cell_type": "markdown", "id": "6546002ccc7b4c9b", "metadata": {}, "source": "Now we assign the critical separation to each binary component." }, { "cell_type": "code", "execution_count": 20, "id": "71d10a1dce10fbb4", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:52:07.708478Z", "start_time": "2025-11-04T13:52:07.688428Z" } }, "outputs": [], "source": [ "result[\"a_crit_s\"] = result[\n", " \"sep_phys_value\"\n", "] # initializing column a... like sep...\n", "\n", "for i in range(len(result)):\n", " m_p = result[\"mass_st_value\"][i]\n", " if i % 2 == 0:\n", " m_s = result[\"mass_st_value\"][i + 1]\n", " else:\n", " m_s = result[\"mass_st_value\"][i - 1]\n", " mu = m_s / (m_p + m_s)\n", " result[\"a_crit_s\"][i] = crit_sep(0, mu, result[\"sep_phys_value\"][i])[0]\n", " # assumed circular orbit and sep_phys = a_bin" ] }, { "cell_type": "markdown", "id": "b0fa94f87418f104", "metadata": {}, "source": "Next we keep only those where orbits up to 10AU are stable." }, { "cell_type": "code", "execution_count": 21, "id": "1a411657952a043e", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:52:10.272819Z", "start_time": "2025-11-04T13:52:09.722145Z" } }, "outputs": [], "source": [ "final = result[:0].copy()\n", "# wait, didn't I already define this? -> was before removing some\n", "ind = result.group_by(\"parent_main_id\").groups.indices\n", "a_max = 10.0\n", "\n", "for i in range(len(ind) - 1):\n", " if a_max < min(result[\"a_crit_s\"][ind[i]], result[\"a_crit_s\"][ind[i] + 1]):\n", " final.add_row(result[ind[i]])\n", " final.add_row(result[ind[i] + 1])" ] }, { "cell_type": "code", "execution_count": 22, "id": "f562c50acdbfe3e7", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:52:12.303446Z", "start_time": "2025-11-04T13:52:12.300473Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "374\n" ] } ], "source": [ "print(len(final))" ] }, { "cell_type": "markdown", "id": "c1e17070a72b84a3", "metadata": {}, "source": "Finally we combine the singles stars and wide binaries back into a single sample." }, { "cell_type": "code", "execution_count": 23, "id": "53b47c216fc0de19", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:52:14.944884Z", "start_time": "2025-11-04T13:52:14.935045Z" } }, "outputs": [], "source": [ "StarCat4 = ap.table.vstack([singles, final])" ] }, { "cell_type": "markdown", "id": "5e3d4d29f87b483d", "metadata": {}, "source": [ "### Adding architecture parameter\n", "For mission design trade space we are interested in the ability to take subsamples of the stars depending on ecliptic angle. We therefore add another parameter indicating if the given star is within 45 degrees from the ecliptic plane." ] }, { "cell_type": "code", "execution_count": 24, "id": "f3327c0bd041c181", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:52:17.681660Z", "start_time": "2025-11-04T13:52:17.592339Z" } }, "outputs": [], "source": [ "def ecliptic(ang, ra, dec):\n", " \"\"\"\n", " Computes if position is within angle from the ecliptic.\n", "\n", " Flag any object whose declination is contained within the region\n", " between -(23.4+angle)*sin(RA) and +(23.4+angle)*sin(RA) with the\n", " object's RA in degrees.\n", "\n", " :param ang: Angle in degrees.\n", " :type ang:\n", " :param ra: Right ascention in degrees.\n", " :type ra: np.array\n", " :param dec: Array of declination in degrees.\n", " :type dec: np.array\n", " :returns: Flags.\n", " :rtype: np.array\n", " \"\"\"\n", " ecliptic = (23.4) * np.sin(2 * np.pi * ra / 360)\n", " flag = [\n", " \"True\"\n", " if dec[j] > -ang + ecliptic[j] and dec[j] < ang + ecliptic[j]\n", " else \"False\"\n", " for j in range(len(ra))\n", " ]\n", " return flag\n", "\n", "\n", "StarCat4[\"ecliptic_pm45deg\"] = ecliptic(\n", " 45, StarCat4[\"coo_ra\"], StarCat4[\"coo_dec\"]\n", ")" ] }, { "cell_type": "markdown", "id": "f784f097a94ffdf8", "metadata": {}, "source": "Let's have a last look at our final catalog and then save the table." }, { "cell_type": "code", "execution_count": 25, "id": "3257fadb4ee65144", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:52:20.180605Z", "start_time": "2025-11-04T13:52:20.171311Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " main_id coo_ra ... ecliptic_pm45deg\n", " deg ... \n", "----------------------- ------------------ ... ----------------\n", " BD-12 662 52.33246607947125 ... True\n", " LP 1032-116 335.4571804690921 ... True\n", " G 138-37 247.89607291868327 ... True\n", " G 144-64 316.8518218343254 ... True\n", " G 141-10 276.60248715442 ... True\n", " CD-22 13916 291.14264684284916 ... True\n", " LP 759-6 329.30281861144 ... True\n", " SIPS J2049-1944 312.3322935777066 ... True\n", " PM J11523+1640 178.08549480447 ... True\n", " ... ... ... ...\n", " BD-20 6558 348.56928489779494 ... True\n", " BD-20 6558B 348.56858731544924 ... True\n", " LP 704-14 359.33066256794 ... True\n", " LP 704-15 359.33575040549 ... True\n", " G 242-44 359.46796458627824 ... False\n", " G 242-45 359.5066840224466 ... False\n", "2MASS J16334908-6808480 248.45438018371166 ... False\n", "2MASS J16334976-6808488 248.45740935813626 ... False\n", " Wolf 1561 A 334.32905356941666 ... True\n", " Wolf 1561 B 334.3279097421108 ... True\n", "Length = 3511 rows\n" ] } ], "source": [ "print(StarCat4)" ] }, { "cell_type": "markdown", "id": "a0c52ccb76f011c4", "metadata": {}, "source": "This next line is to convert data from object into string type. I use object as default because it prevents data getting truncated. Though it does have issues with the astropy ecsv format.\n" }, { "cell_type": "code", "execution_count": 26, "id": "4ae139db7bdddd1c", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:52:22.701301Z", "start_time": "2025-11-04T13:52:22.690738Z" } }, "outputs": [], "source": [ "StarCat4 = objecttostring(StarCat4)" ] }, { "cell_type": "code", "execution_count": 27, "id": "6f85a35496c172db", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:52:53.373057Z", "start_time": "2025-11-04T13:52:52.836958Z" } }, "outputs": [], "source": [ "StarCat4.write(\n", " \"../../../additional_data/catalogs/StarCat4.ecsv\",\n", " delimiter=\",\",\n", " overwrite=True,\n", ")" ] }, { "cell_type": "markdown", "id": "3596e8cc741732cb", "metadata": {}, "source": "We can also look at the distance and spectral type distribution to make sure it looks reasonable." }, { "cell_type": "code", "execution_count": 28, "id": "fcc2c4fad5a02aa0", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:53:02.993343Z", "start_time": "2025-11-04T13:53:02.194209Z" } }, "outputs": [ { "data": { "image/png": "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WZJ+/fVXffvttxo8eLB8fX2zzSpJjz/+uAIDAzVp0iRt2rRJH3zwgS5evKj58+ffNe/tcpLtdqdPn1bz5s117do1DRkyRKVKldK8efPUtWtXLV68WBERERbtJ0+eLCcnJ40YMUKJiYmaMmWKnnrqKW3evNmqnAAA+2A8c3f5aTzz119/admyZXrsscdUuXJlnT59Wv/5z3/UqlUrxcfHq3z58hbtc/I5/fnnn+uFF15Q8+bNNWzYMP3111/q2rWrSpYsKX9//7vuv+eee05ffvmlnnzySTVv3ly//vqrOnXqdNfnnTlzRu3atVPp0qU1atQo+fj46PDhw/ruu+8k/TNWye798fPPP+uvv/5Sv3795Ofnp7179+rTTz/V3r17tWnTpgyTFD3++OOqXLmyJk2apO3bt+uzzz5TmTJl9M4775jbjB8/XuPGjVPz5s01YcIEubq6avPmzfr111/Vrl07SYxHGY8COWQAgJVWr15tODs7G87OzkazZs2MkSNHGqtWrTKSk5MztJVkSDK2bt1qXnbkyBHD3d3diIiIMC8bMGCAUa5cOePcuXMWz3/iiScMb29v49q1a4ZhGMbs2bMNScb06dMzvFZaWpphGIZx9uxZQ5IxduzYDG369OljSDJGjRqVYV36a9xu0qRJhslkMo4cOWJeNnbsWCMn/3126tTJCAgIyLB81apVhiTjp59+slhet25do1WrVubHc+bMMSQZDRs2tNi3U6ZMMSQZ33//vWEYhnHlyhXDx8fHGDhwoEV/p06dMry9vTMsv9OwYcMMScbmzZvNy86cOWN4e3sbkoyEhATz8latWllkDA8PN2rVqpVt/1OnTs3QTzpJhpOTk7F3795M191+DNP3e9euXS3avfTSS4YkY+fOnYZhGEZCQoIhyZgzZ85d+8wuW0BAgNGnTx/z4/T9tH79evOyK1euGJUrVzYCAwON1NRUwzAMIyYmxpBk1KxZ07h586a57fvvv29IMnbv3p3htQAAuY/xTMEaz9y4ccP8WZwuISHBcHNzMyZMmGBeltPP6eTkZKNMmTJGvXr1LNp9+umnhiSLbcxMXFycIcl46aWXLJY/+eSTGY5r+j5KH48sXbrUkGTExsZm2X9274/M3gNff/21IclYt26deVn6e6B///4WbSMiIoxSpUqZHx84cMBwcnIyIiIiMuzj9Pcr41HG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T9+4cUMNGzbUa6+9Ji8vL61YsULPPPOMqlatqsaNG+v999/Xn3/+qdq1a2vChAmSpNKlS0uS4uPjNWHCBG3evFl//fWXTfcXAAAFna1vK3Mvt40BAAAAOCOyACpSpIjmzp2refPmycfHRw899JD+9a9/adeuXZL+r7jn4+MjPz8/8+Pg4GC98MILql27tqpXr6633npLVatW1Q8//GDR/yOPPKJXXnlFVatWVdWqVXXgwAF5eXmpXLly2eaqUKGCRowYoXr16qlKlSp6+eWX1b59e3377beSJG9vb7m6uqpYsWLy8/OTn5+fnJ2ddfPmTfXu3VtTp061KIgCAAAAAAAg/6AQWUD16NFDJ06c0A8//KD27dtr7dq1atCggebOnZvlc65evaoRI0aoZs2a8vHxkYeHh/bt26ejR49atGvUqJHFY8MwZDKZ7popNTVVb731lurUqaOSJUvKw8NDq1atytD/nUaPHq2aNWvq6aefvutrAAAAAAAAIG+iEFmAubu769FHH9Wbb76pDRs2qG/fvubLqTMzYsQILV26VBMnTtT69esVFxenOnXqmCekSVe8eHGLxw888IASExN18uTJbPNMnTpV77//vl577TXFxMQoLi5OYWFhGfq/06+//qpFixapSJEiKlKkiNq0aSNJ8vX1zXZ7AAAAAAAAkHdQiCxEgoKClJSUJElycXFRamqqxfrff/9dffv2VUREhOrUqSM/Pz+LyWKy0rNnT7m6umrKlCmZrr906ZK5//DwcD399NMKDg5WlSpV9Oeff1q0dXV1zZBryZIl2rlzp+Li4hQXF6fPPvtMkrR+/XpFRkbmZNMBAAAAAADgYExWUwCdP39ejz32mPr376+6devK09NTW7du1ZQpUxQeHi7pn9mv16xZo4ceekhubm4qUaKEqlevru+++05dunSRyWTSm2++qbS0tLu+nr+/v9577z0NHjxYly9f1rPPPqvAwEAdP35c8+fPl4eHh6ZNm6bq1atr8eLF2rBhg0qUKKHp06fr9OnTCgoKMvcVGBiozZs36/Dhw/Lw8FDJkiVVtWpVi9c7d+6cJJkvIQcAAAAAAEDeRyHyHuT1mSI9PDzUpEkTvffeezp06JBSUlLk7++vgQMH6l//+pckadq0aYqKitKsWbNUoUIFHT58WNOnT1f//v3VvHlz+fr66rXXXtPly5dz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3HPPaezYserbt2+Onn/16lU1bNhQCxYsyLCudOnScnK69++BihcvnmFZly5dFBAQoFmzZql8+fJKS0tT7dq1zZeB34/nnntO0dHRGjVqlObMmaN+/fplOaDPzNWrV9WlSxe98847GdaVK1dOzs7O+vnnn7VhwwatXr1aH374oV5//XVt3rxZlStXvu/8AACg8Nq3b1+W44kGDRooISFBP/30k3755Rc9/vjjatu2bYb7Y99uxIgR+vnnn/Xuu++qWrVqKlq0qHr27JlhzHVnYc9kMpkvvS5atGi2ma9evarx48ere/fuGdal3x/cVu6WBQBsjTMiASAHgoKCMkyesmnTpgyPa9asKemfge2BAwdUpkwZVatWzeLH29tbnp6eCgwM1Jo1a7J8TRcXF6Wmpt412/nz57V//3698cYbatOmjWrWrHlPZxS6urpm+npPP/20jhw5og8++EDx8fHq06dPhja374tbt25p27ZtFvti7969CgwMzLAv0ouqJpNJDz30kMaPH68dO3bI1dVVS5cutXobAAAA0v3666/avXu3evTokWUbLy8v9erVS7NmzdLChQu1ZMkSXbhwQVLmY7Hff/9dffv2VUREhOrUqSM/P78MkxHeTd26dRUXF2d+nTs1aNBA+/fvzzBuqlat2j19mZ3dOK1u3bpav369UlJSrO4XAO4FhUgAuM358+f1yCOP6Msvv9SuXbuUkJCgRYsWacqUKQoPD7dou2jRIs2ePVt//vmnxo4dqy1btphnvX7qqafk6+ur8PBwrV+/XgkJCVq7dq2GDBmi48ePS/pnBuxp06bpgw8+0IEDB7R9+3Z9+OGH5v7TC5WnTp3KtrBYokQJlSpVSp9++qkOHjyoX3/9VVFRUVZve2BgoNatW6e///7bYkbrEiVKqHv37nr11VfVrl07VaxYMcNzo6OjtXTpUv3xxx+KjIzUxYsX1b9/f0lSZGSkLly4oN69eys2NlaHDh3SqlWr1K9fP6Wmpmrz5s2aOHGitm7dqqNHj+q7777T2bNnzQNkAACAu7l586ZOnTqlv//+W9u3b9fEiRMVHh6uzp0769lnn830OdOnT9fXX3+tP/74Q3/++acWLVokPz8/+fj4SMp8LFa9enXzhIE7d+7Uk08+mePJAdP17t1bfn5+6tatm37//Xf99ddfWrJkiTZu3ChJGjNmjObPn6/x48dr79692rdvn7755hu98cYb97RvshunDR48WJcvX9YTTzyhrVu36sCBA/riiy/ME+sAgK1RiASA23h4eKhJkyZ677339PDDD6t27dp68803NXDgQH300UcWbcePH69vvvlGdevW1fz58/X1118rKChIklSsWDGtW7dOlSpVUvfu3VWzZk0NGDBAN27ckJeXlySpT58+mjFjhj7++GPVqlVLnTt31oEDB8z9T5s2TT///LP8/f1Vv379LDM7OTnpm2++0bZt21S7dm0NHz5cU6dOtXrbJ0yYoMOHD6tq1aoZ7kE5YMAAJScnmwetd5o8ebImT56s4OBg/e9//9MPP/wgX19fSVL58uX1+++/KzU1Ve3atVOdOnU0bNgw+fj4yMnJSV5eXlq3bp06duyoBx54QG+88YamTZumDh06WL0NAACgcFq5cqXKlSunwMBAtW/fXjExMfrggw/0/fffy9nZOdPneHp6asqUKWrUqJFCQkJ0+PBh/fjjj+azDjMbi02fPl0lSpRQ8+bN1aVLF4WFhalBgwZWZXV1ddXq1atVpkwZdezYUXXq1NHkyZPNOcPCwrR8+XKtXr1aISEhatq0qd577z0FBATc077JbpxWqlQp/frrr+aZvBs2bKhZs2Zxz0gAdmMyDMNwdAgAyG9MJpOWLl2qbt26OTpKrvjiiy80fPhwnThxQq6urublhw8fVuXKlbVjxw7Vq1fPcQEBAAAKsb59++rSpUtatmyZeZktx2mBgYEaNmyYhg0bdl/9AABnRAIAsnTt2jUdOnRIkydP1gsvvGBRhAQAAEDesXz5cnl4eGj58uU263PixIny8PDIMCs4ANwrCpEAgCxNmTJFDz74oPz8/DR69GhHxwEAAEAmpkyZoj/++ENxcXEKDQ21Wb8vvvii4uLi9Oeff6pfv3426xdA4cWl2QAAAAAAAADsjjMiAQAAAAAAANgdhUgAAAAAAAAAdkchEgAAAAAAAIDdUYgEAAAAAAAAYHcUIgEAAAAAAADYHYVIAAAAAAAAAHZHIRIAAAAAAACA3VGIBAAAAAAAAGB3/w/md1ftruP3nwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "jetTransient": { "display_id": null }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from utils.analysis.finalplot import starcat_distribution_plot\n", "\n", "starcat_distribution_plot(\n", " [StarCat4[\"class_temp\", \"dist_st_value\"]],\n", " [\"StarCat4\"],\n", " path=\"../../../plots/final_plot.png\",\n", ")" ] }, { "cell_type": "markdown", "id": "7be7a157a20f201f", "metadata": {}, "source": "We can observe that the spectral type distribution looks as expected meaning the lower the mass of the star the more of them are within 30pc. We also see that within 20 pc we only have M and K stars in our sample. Also the spectral type distribution of the stars in our catalog between 20-25pc are nearly identical to the ones between 25-30pc. We would expect there to be way more lower mass stars in the further away distance bin. This let's us conclude that at the end of the distance cut our catalog is magnitude limited meaning we miss quite a bit of the faint stars." }, { "cell_type": "markdown", "id": "cdd7e26e48a0c708", "metadata": {}, "source": "To have a look at the data using the same plot as in the RNAAS article use the code below." }, { "cell_type": "code", "execution_count": 29, "id": "7b632d06fa0cf45c", "metadata": { "ExecuteTime": { "end_time": "2025-11-04T13:53:07.285628Z", "start_time": "2025-11-04T13:53:06.602544Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "jetTransient": { "display_id": null }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from utils.analysis.catalog_comparison_plot import (\n", " spectral_type_histogram_catalog_comparison,\n", ")\n", "\n", "spectral_type_histogram_catalog_comparison(\n", " [StarCat4[\"class_temp\", \"dist_st_value\"]],\n", " [\"StarCat4\"],\n", " distance_colname=\"dist_st_value\",\n", " spectral_type_colname=\"class_temp\",\n", " path=\"../../../plots/sthcc.png\",\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "56b0b0ac5b6ff8a0", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 5 }