diff --git a/kep_to_att.ipynb b/kep_to_att.ipynb
new file mode 100644
index 0000000..557a222
--- /dev/null
+++ b/kep_to_att.ipynb
@@ -0,0 +1,675 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "c2e5ae80-979a-454d-b87b-667ad732d63b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "from numpy import linalg as LA\n",
+ "import pandas as pd\n",
+ "import math\n",
+ "import scipy.optimize as optimize\n",
+ "import spiceypy"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "19159865-290b-4ad6-ad47-3a34d79dbb85",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Collecting poliastro\n",
+ " Using cached poliastro-0.17.0-py3-none-any.whl.metadata (11 kB)\n",
+ "Requirement already satisfied: astropy<6,>=5.0 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from poliastro) (5.3.4)\n",
+ "Collecting astroquery>=0.3.9 (from poliastro)\n",
+ " Using cached astroquery-0.4.7-py3-none-any.whl.metadata (7.2 kB)\n",
+ "Requirement already satisfied: jplephem in ./miniconda3/envs/py39/lib/python3.9/site-packages (from poliastro) (2.22)\n",
+ "Requirement already satisfied: matplotlib!=3.0.1,>=2.0 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from poliastro) (3.8.0)\n",
+ "Requirement already satisfied: numba>=0.53.0 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from poliastro) (0.59.1)\n",
+ "Requirement already satisfied: numpy in ./miniconda3/envs/py39/lib/python3.9/site-packages (from poliastro) (1.23.5)\n",
+ "Requirement already satisfied: pandas in ./miniconda3/envs/py39/lib/python3.9/site-packages (from poliastro) (2.2.1)\n",
+ "Requirement already satisfied: plotly<6,>=4.0 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from poliastro) (5.22.0)\n",
+ "Requirement already satisfied: pyerfa in ./miniconda3/envs/py39/lib/python3.9/site-packages (from poliastro) (2.0.1.4)\n",
+ "Requirement already satisfied: scipy>=1.4.0 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from poliastro) (1.12.0)\n",
+ "Requirement already satisfied: PyYAML>=3.13 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from astropy<6,>=5.0->poliastro) (6.0.1)\n",
+ "Requirement already satisfied: packaging>=19.0 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from astropy<6,>=5.0->poliastro) (23.2)\n",
+ "Requirement already satisfied: requests>=2.19 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from astroquery>=0.3.9->poliastro) (2.31.0)\n",
+ "Requirement already satisfied: beautifulsoup4>=4.8 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from astroquery>=0.3.9->poliastro) (4.12.2)\n",
+ "Requirement already satisfied: html5lib>=0.999 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from astroquery>=0.3.9->poliastro) (1.1)\n",
+ "Collecting keyring>=15.0 (from astroquery>=0.3.9->poliastro)\n",
+ " Using cached keyring-25.2.0-py3-none-any.whl.metadata (20 kB)\n",
+ "Collecting pyvo>=1.1 (from astroquery>=0.3.9->poliastro)\n",
+ " Using cached pyvo-1.5.1-py3-none-any.whl.metadata (4.7 kB)\n",
+ "Requirement already satisfied: contourpy>=1.0.1 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from matplotlib!=3.0.1,>=2.0->poliastro) (1.2.0)\n",
+ "Requirement already satisfied: cycler>=0.10 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from matplotlib!=3.0.1,>=2.0->poliastro) (0.11.0)\n",
+ "Requirement already satisfied: fonttools>=4.22.0 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from matplotlib!=3.0.1,>=2.0->poliastro) (4.25.0)\n",
+ "Requirement already satisfied: kiwisolver>=1.0.1 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from matplotlib!=3.0.1,>=2.0->poliastro) (1.4.4)\n",
+ "Requirement already satisfied: pillow>=6.2.0 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from matplotlib!=3.0.1,>=2.0->poliastro) (10.2.0)\n",
+ "Requirement already satisfied: pyparsing>=2.3.1 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from matplotlib!=3.0.1,>=2.0->poliastro) (3.0.9)\n",
+ "Requirement already satisfied: python-dateutil>=2.7 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from matplotlib!=3.0.1,>=2.0->poliastro) (2.8.2)\n",
+ "Requirement already satisfied: importlib-resources>=3.2.0 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from matplotlib!=3.0.1,>=2.0->poliastro) (6.1.1)\n",
+ "Requirement already satisfied: llvmlite<0.43,>=0.42.0dev0 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from numba>=0.53.0->poliastro) (0.42.0)\n",
+ "Requirement already satisfied: tenacity>=6.2.0 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from plotly<6,>=4.0->poliastro) (8.3.0)\n",
+ "Requirement already satisfied: pytz>=2020.1 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from pandas->poliastro) (2023.3.post1)\n",
+ "Requirement already satisfied: tzdata>=2022.7 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from pandas->poliastro) (2023.3)\n",
+ "Requirement already satisfied: soupsieve>1.2 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from beautifulsoup4>=4.8->astroquery>=0.3.9->poliastro) (2.5)\n",
+ "Requirement already satisfied: six>=1.9 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from html5lib>=0.999->astroquery>=0.3.9->poliastro) (1.16.0)\n",
+ "Requirement already satisfied: webencodings in ./miniconda3/envs/py39/lib/python3.9/site-packages (from html5lib>=0.999->astroquery>=0.3.9->poliastro) (0.5.1)\n",
+ "Requirement already satisfied: zipp>=3.1.0 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from importlib-resources>=3.2.0->matplotlib!=3.0.1,>=2.0->poliastro) (3.17.0)\n",
+ "Requirement already satisfied: jaraco.classes in ./miniconda3/envs/py39/lib/python3.9/site-packages (from keyring>=15.0->astroquery>=0.3.9->poliastro) (3.4.0)\n",
+ "Requirement already satisfied: jaraco.functools in ./miniconda3/envs/py39/lib/python3.9/site-packages (from keyring>=15.0->astroquery>=0.3.9->poliastro) (4.0.1)\n",
+ "Requirement already satisfied: jaraco.context in ./miniconda3/envs/py39/lib/python3.9/site-packages (from keyring>=15.0->astroquery>=0.3.9->poliastro) (5.3.0)\n",
+ "Requirement already satisfied: importlib-metadata>=4.11.4 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from keyring>=15.0->astroquery>=0.3.9->poliastro) (7.0.1)\n",
+ "Requirement already satisfied: SecretStorage>=3.2 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from keyring>=15.0->astroquery>=0.3.9->poliastro) (3.3.3)\n",
+ "Requirement already satisfied: jeepney>=0.4.2 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from keyring>=15.0->astroquery>=0.3.9->poliastro) (0.8.0)\n",
+ "Requirement already satisfied: charset-normalizer<4,>=2 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from requests>=2.19->astroquery>=0.3.9->poliastro) (2.0.4)\n",
+ "Requirement already satisfied: idna<4,>=2.5 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from requests>=2.19->astroquery>=0.3.9->poliastro) (3.4)\n",
+ "Requirement already satisfied: urllib3<3,>=1.21.1 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from requests>=2.19->astroquery>=0.3.9->poliastro) (1.26.18)\n",
+ "Requirement already satisfied: certifi>=2017.4.17 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from requests>=2.19->astroquery>=0.3.9->poliastro) (2024.2.2)\n",
+ "Requirement already satisfied: cryptography>=2.0 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from SecretStorage>=3.2->keyring>=15.0->astroquery>=0.3.9->poliastro) (42.0.5)\n",
+ "Requirement already satisfied: more-itertools in ./miniconda3/envs/py39/lib/python3.9/site-packages (from jaraco.classes->keyring>=15.0->astroquery>=0.3.9->poliastro) (10.2.0)\n",
+ "Requirement already satisfied: backports.tarfile in ./miniconda3/envs/py39/lib/python3.9/site-packages (from jaraco.context->keyring>=15.0->astroquery>=0.3.9->poliastro) (1.1.1)\n",
+ "Requirement already satisfied: cffi>=1.12 in ./miniconda3/envs/py39/lib/python3.9/site-packages (from cryptography>=2.0->SecretStorage>=3.2->keyring>=15.0->astroquery>=0.3.9->poliastro) (1.16.0)\n",
+ "Requirement already satisfied: pycparser in ./miniconda3/envs/py39/lib/python3.9/site-packages (from cffi>=1.12->cryptography>=2.0->SecretStorage>=3.2->keyring>=15.0->astroquery>=0.3.9->poliastro) (2.21)\n",
+ "Using cached poliastro-0.17.0-py3-none-any.whl (162 kB)\n",
+ "Using cached astroquery-0.4.7-py3-none-any.whl (5.3 MB)\n",
+ "Using cached keyring-25.2.0-py3-none-any.whl (38 kB)\n",
+ "Using cached pyvo-1.5.1-py3-none-any.whl (910 kB)\n",
+ "Installing collected packages: pyvo, keyring, astroquery, poliastro\n",
+ "Successfully installed astroquery-0.4.7 keyring-25.2.0 poliastro-0.17.0 pyvo-1.5.1\n",
+ "Note: you may need to restart the kernel to use updated packages.\n"
+ ]
+ }
+ ],
+ "source": [
+ "pip install poliastro"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "eb4d9629-fbbe-42cc-bbfe-5fb11aff2302",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from astropy import units as u\n",
+ "from astropy import constants as const\n",
+ "from astropy.time import Time\n",
+ "from astropy.coordinates import get_body_barycentric_posvel\n",
+ "from poliastro.bodies import Sun, Earth\n",
+ "from poliastro.twobody import Orbit"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "c5a3cf10-9e10-4d54-8c08-f8b5cac2b0de",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "folder='/home/unipi/v.vichi3/Desktop/'\n",
+ "df=pd.read_csv(folder+'neos_dataframe.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "51bac7c4-0fea-4dd9-b152-6ab13b5ed0b5",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Unnamed: 0 | \n",
+ " spkid | \n",
+ " pha | \n",
+ " H | \n",
+ " epoch_mjd | \n",
+ " e | \n",
+ " a | \n",
+ " i | \n",
+ " om | \n",
+ " w | \n",
+ " ma | \n",
+ " moid | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 20000433 | \n",
+ " N | \n",
+ " 10.41 | \n",
+ " 60400 | \n",
+ " 0.2227 | \n",
+ " 1.458 | \n",
+ " 10.83 | \n",
+ " 304.28 | \n",
+ " 178.90 | \n",
+ " 334.73 | \n",
+ " 0.1500 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 20000719 | \n",
+ " N | \n",
+ " 15.59 | \n",
+ " 60400 | \n",
+ " 0.5469 | \n",
+ " 2.636 | \n",
+ " 11.58 | \n",
+ " 183.85 | \n",
+ " 156.22 | \n",
+ " 102.37 | \n",
+ " 0.2010 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 20000887 | \n",
+ " N | \n",
+ " 13.88 | \n",
+ " 60400 | \n",
+ " 0.5710 | \n",
+ " 2.472 | \n",
+ " 9.40 | \n",
+ " 110.42 | \n",
+ " 350.48 | \n",
+ " 289.48 | \n",
+ " 0.0803 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 3 | \n",
+ " 20001036 | \n",
+ " N | \n",
+ " 9.26 | \n",
+ " 60400 | \n",
+ " 0.5328 | \n",
+ " 2.665 | \n",
+ " 26.69 | \n",
+ " 215.50 | \n",
+ " 132.48 | \n",
+ " 321.69 | \n",
+ " 0.3450 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 4 | \n",
+ " 20001221 | \n",
+ " N | \n",
+ " 17.38 | \n",
+ " 60400 | \n",
+ " 0.4352 | \n",
+ " 1.920 | \n",
+ " 11.88 | \n",
+ " 171.31 | \n",
+ " 26.68 | \n",
+ " 197.64 | \n",
+ " 0.1080 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Unnamed: 0 spkid pha H epoch_mjd e a i om \\\n",
+ "0 0 20000433 N 10.41 60400 0.2227 1.458 10.83 304.28 \n",
+ "1 1 20000719 N 15.59 60400 0.5469 2.636 11.58 183.85 \n",
+ "2 2 20000887 N 13.88 60400 0.5710 2.472 9.40 110.42 \n",
+ "3 3 20001036 N 9.26 60400 0.5328 2.665 26.69 215.50 \n",
+ "4 4 20001221 N 17.38 60400 0.4352 1.920 11.88 171.31 \n",
+ "\n",
+ " w ma moid \n",
+ "0 178.90 334.73 0.1500 \n",
+ "1 156.22 102.37 0.2010 \n",
+ "2 350.48 289.48 0.0803 \n",
+ "3 132.48 321.69 0.3450 \n",
+ "4 26.68 197.64 0.1080 "
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "c68024ad-7917-401b-9f72-3ba3641a7bff",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Mean anomaly to true anomaly\n",
+ "def kepler_equation(M,E,e):\n",
+ " #M=mean anomaly, E=#eccentric anomaly, e=eccentricity\n",
+ " return E-e*np.sin(E)-M\n",
+ "def mean_to_true_an(M,e):\n",
+ " E=optimize.newton(kepler_equation, M, args=(M,e))\n",
+ " nu=math.atan2(math.sin(E)*math.sqrt(1-e**2),math.cos(E)-e) #true anomaly in radians\n",
+ " return math.degrees(nu)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "f8f1dbef-9764-4732-9cfd-fb5cbebb6e5a",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Perform the conversion for each element of the DataFrame\n",
+ "N=df.shape[0]\n",
+ "nu=np.zeros((N,))\n",
+ "for el in range(N):\n",
+ " nu[el]=mean_to_true_an(df['ma'][el],df['e'][el])\n",
+ "df['nu']=nu"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "8188f5ba-609c-45f9-89f1-549d9b71fb0c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Keplerian to Cartesian elements\n",
+ "def kep_to_car(a,e,i,om,w,nu):\n",
+ " orb=Orbit.from_classical(Sun, a<\n",
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | \n",
+ " x | \n",
+ " y | \n",
+ " z | \n",
+ " vx | \n",
+ " vy | \n",
+ " vz | \n",
+ " EPOCH | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " -1.043768 | \n",
+ " -0.948369 | \n",
+ " -0.267177 | \n",
+ " 0.007095 | \n",
+ " -0.012608 | \n",
+ " -0.000237 | \n",
+ " 60400 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 0.009877 | \n",
+ " 2.220705 | \n",
+ " -0.453875 | \n",
+ " -0.010286 | \n",
+ " 0.006398 | \n",
+ " -0.001450 | \n",
+ " 60400 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " -0.590315 | \n",
+ " 0.914974 | \n",
+ " 0.038736 | \n",
+ " -0.018393 | \n",
+ " -0.008600 | \n",
+ " 0.003350 | \n",
+ " 60400 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 0.888349 | \n",
+ " 1.323366 | \n",
+ " -0.282285 | \n",
+ " -0.008231 | \n",
+ " 0.011640 | \n",
+ " -0.007167 | \n",
+ " 60400 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2.682621 | \n",
+ " 0.150702 | \n",
+ " -0.116604 | \n",
+ " 0.000993 | \n",
+ " 0.007884 | \n",
+ " -0.001671 | \n",
+ " 60400 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ ""
+ ],
+ "text/plain": [
+ " x y z vx vy vz EPOCH\n",
+ "0 -1.043768 -0.948369 -0.267177 0.007095 -0.012608 -0.000237 60400\n",
+ "1 0.009877 2.220705 -0.453875 -0.010286 0.006398 -0.001450 60400\n",
+ "2 -0.590315 0.914974 0.038736 -0.018393 -0.008600 0.003350 60400\n",
+ "3 0.888349 1.323366 -0.282285 -0.008231 0.011640 -0.007167 60400\n",
+ "4 2.682621 0.150702 -0.116604 0.000993 0.007884 -0.001671 60400"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "car_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "id": "cc6906b5-f2f6-4855-814e-c49c01beb2d8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Cartesian to Attributable elements\n",
+ "def car_to_att(r_sun, v_sun, epoch):\n",
+ " #r_sun, v_sun are the Cartesian heliocentric elements of the asteroid\n",
+ " #epoch is in MJD\n",
+ " earth_posvel=get_body_barycentric_posvel('earth',Time(epoch,format='mjd'))\n",
+ " r_earth=earth_posvel[0].xyz\n",
+ " v_earth=earth_posvel[1].xyz\n",
+ "\n",
+ " #Cartesian geocentric elements\n",
+ " r=r_sun-r_earth\n",
+ " v=v_sun-v_earth\n",
+ "\n",
+ " #Rotation to the equatorial reference frame\n",
+ " roteceq=spiceypy.spiceypy.pxform(\"ECLIPJ2000\",\"J2000\",0)\n",
+ " r=roteceq.dot(r)\n",
+ " v=roteceq.dot(v)\n",
+ "\n",
+ " rho=LA.norm(r)\n",
+ " dz=r[0]**2+r[1]**2\n",
+ " epsilon=np.finfo(float).eps\n",
+ " if (dz.value<100*epsilon):\n",
+ " ra=0\n",
+ " else: ra=np.arctan2(r[1],r[0]) #in radians\n",
+ " dec=np.arcsin(r[2]/rho)\n",
+ "\n",
+ " #Computation of first derivatives\n",
+ " dadx=np.zeros((3,1))<\n",
+ "\n",
+ "\n",
+ " \n",
+ " \n",
+ " | \n",
+ " cos_ra | \n",
+ " sin_ra | \n",
+ " sin_dec | \n",
+ " ra_dot | \n",
+ " dec_dot | \n",
+ " MOID | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " -0.084129 | \n",
+ " -0.996455 | \n",
+ " -0.606347 | \n",
+ " 0.006616 | \n",
+ " 0.006707 | \n",
+ " 0.1500 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 0.392310 | \n",
+ " 0.919833 | \n",
+ " 0.229663 | \n",
+ " 0.007516 | \n",
+ " 0.004055 | \n",
+ " 0.2010 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 0.387645 | \n",
+ " 0.921809 | \n",
+ " 0.459919 | \n",
+ " 0.019881 | \n",
+ " 0.011605 | \n",
+ " 0.0803 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 0.791026 | \n",
+ " 0.611783 | \n",
+ " 0.166871 | \n",
+ " 0.011227 | \n",
+ " 0.003821 | \n",
+ " 0.3450 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 0.996437 | \n",
+ " 0.084345 | \n",
+ " 0.023712 | \n",
+ " 0.005317 | \n",
+ " 0.003798 | \n",
+ " 0.1080 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ ""
+ ],
+ "text/plain": [
+ " cos_ra sin_ra sin_dec ra_dot dec_dot MOID\n",
+ "0 -0.084129 -0.996455 -0.606347 0.006616 0.006707 0.1500\n",
+ "1 0.392310 0.919833 0.229663 0.007516 0.004055 0.2010\n",
+ "2 0.387645 0.921809 0.459919 0.019881 0.011605 0.0803\n",
+ "3 0.791026 0.611783 0.166871 0.011227 0.003821 0.3450\n",
+ "4 0.996437 0.084345 0.023712 0.005317 0.003798 0.1080"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "attr_df['MOID']=df['moid']\n",
+ "attr_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "id": "f65e0163-c9d8-492a-9095-0d7d34ffad5b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "attr_df.to_csv(folder+'neos_attr.csv',index=False)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.9.19"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}