У меня есть код, который отлично работает на моем локальном компьютере, но говорит, что есть проблема с моим форматированием f-строки:
def get_coordinates(row, df):
try:
row_ra = df['ra_deg'].iloc[row]
row_dec = df['dec_deg'].iloc[row]
return [row_ra, row_dec]
except KeyError:
try:
row_ra = df['ra'].iloc[row]
row_dec = df['dec'].iloc[row]
return [row_ra, row_dec]
except KeyError:
try:
row_ra = df['ra'].iloc[row]
row_dec = df['decl'].iloc[row]
return [row_ra, row_dec]
except KeyError:
pass
def circle_intercepts(r, radius):
ra_pos = r[0] + radius
dec_pos = r[1] + radius
ra_neg = r[0] - radius
dec_neg = r[1] - radius
return [ra_neg, ra_pos, dec_neg, dec_pos]
import pandas as pd
from astropy import units as u
from simbad_functions import get_coordinates
from simbad_functions import circle_intercepts
import psycopg2
import os
import pandas.io.sql as sqlio
from astropy.coordinates import SkyCoord
import datetime
environment = os.getenv('STARDB')
conn = psycopg2.connect(environment)
cur = conn.cursor()
simbad = pd.read_csv('simbad_data.csv')
half_arc_second = 1.39 * 10 ** -4
table = 'gaia_data_1'
ra = 'ra'
dec = 'dec'
n = len(simbad)
match_list = []
degrees = 1
start = datetime.datetime.now()
f = open("match_list.txt","w+")
print(datetime.datetime.now())
for i in range(n):
ri = get_coordinates(i, simbad)
ri_intercepts = circle_intercepts(ri, degrees)
table = 'gaia_data_1'
ra = 'ra'
dec = 'dec'
sql_query = ('select '
f'{ra}, {dec} '
'from '
f'{table} '
'where '
f'ra between {ri_intercepts[0]} and {ri_intercepts[1]} and '
f'dec between {ri_intercepts[2]} and {ri_intercepts[3]} '
)
pts_in_square_on_ri = sqlio.read_sql_query(sql_query, conn)
catalog = SkyCoord(
ra=pts_in_square_on_ri['ra'] * u.degree,
dec=pts_in_square_on_ri['dec'] * u.degree,
frame='icrs'
)
ri_ra = [simbad['ra_deg'].iloc[i]]
ri_dec = [simbad['dec_deg'].iloc[i]]
ri = SkyCoord(
simbad['ra_deg'].iloc[i] * u.deg,
simbad['dec_deg'].iloc[i] * u.deg,
frame='icrs'
)
idx, d2d, d3d = ri.match_to_catalog_sky(catalog)
matches = catalog[idx]
match_list.append(matches)
f.write(str(matches))
print(datetime.datetime.now() - start)
f.close
ошибка, которую я получаю в AWS:
File "fetch_gaia_features.py", line 45
f'{ra}, {dec} '
^
SyntaxError: invalid syntax
File "fetch_gaia_features.py", line 45
f'{ra}, {dec} '
^
SyntaxError: invalid syntax
File "fetch_gaia_features.py", line 45
f'{ra}, {dec} '
^
SyntaxError: invalid syntax
File "fetch_gaia_features.py", line 45
f'{ra}, {dec} ' +
^
SyntaxError: invalid syntax
File "fetch_gaia_features.py", line 46
f'{ra}, {dec} '
^
SyntaxError: invalid syntax
File "fetch_gaia_features.py", line 45
f'{ra}, {dec} '
^
SyntaxError: invalid syntax
Код отлично работает на моем локальном терминале и в ноутбуках Jupyter на моем компьютере. С терминала ec2 Ubuntu я получаю эту ошибку. То, что я пытаюсь сделать, - это использовать каталог, который я собрал с данными из simbad, и искать ближайшую вещь к координатам в моем списке из базы данных Gaia. Кто-нибудь понимает, почему Ubuntu реагирует таким образом на f-струны? Есть ли способ использовать f-строки в Ubuntu, который не конфликтует? Это проблема с библиотекой или обновлением?