Commit 6ceaf0e0 authored by Yan Zhaojun's avatar Yan Zhaojun
Browse files

Replace shao.py

parent 22b7ef20
Pipeline #7899 failed with stage
in 0 seconds
from ctypes import * from ctypes import *
def onOrbitObsPosition(path, input_ra_list, input_dec_list, input_pmra_list, input_pmdec_list, input_rv_list, \ # def checkInputList(input_list, n):
input_parallax_list, input_nstars, input_x, input_y, input_z, input_vx, input_vy, \ # if isinstance(type(input_list), list):
# # if type(input_list) != type([1, 2, 3]):
# raise TypeError("Input type is not list!", input_list)
# for i in input_list:
# if isinstance(type(i), float): # type(i) != type(1.1):
# if isinstance(type(i), int): # type(i) != type(1):
# raise TypeError(
# "Input list's element is not float or int!", input_list)
# if len(input_list) != n:
# raise RuntimeError(
# "Length of input list is not equal to stars' number!", input_list)
def onOrbitObsPosition(path, input_ra_list, input_dec_list, input_pmra_list, input_pmdec_list, input_rv_list,
input_parallax_list, input_nstars, input_x, input_y, input_z, input_vx, input_vy,
input_vz, input_epoch, input_date_str, input_time_str): input_vz, input_epoch, input_date_str, input_time_str):
# Check input parameters
if isinstance(type(input_nstars), type(1)): # type(input_nstars) != type(1):
raise TypeError("Parameter 7 is not int!", input_nstars)
# checkInputList(input_ra_list, input_nstars)
# checkInputList(input_dec_list, input_nstars)
# checkInputList(input_pmra_list, input_nstars)
# checkInputList(input_pmdec_list, input_nstars)
# checkInputList(input_rv_list, input_nstars)
# checkInputList(input_parallax_list, input_nstars)
#
# if isinstance(type(input_x), type(1.1)): # type(input_x) != type(1.1):
# raise TypeError("Parameter 8 is not double!", input_x)
# if isinstance(type(input_y), type(1.1)): # type(input_y) != type(1.1):
# raise TypeError("Parameter 9 is not double!", input_y)
# if isinstance(type(input_z), type(1.1)): # type(input_z) != type(1.1):
# raise TypeError("Parameter 10 is not double!", input_z)
# if isinstance(type(input_vx), type(1.1)): # type(input_vx) != type(1.1):
# raise TypeError("Parameter 11 is not double!", input_vx)
# if isinstance(type(input_vy), type(1.1)): # type(input_vy) != type(1.1):
# raise TypeError("Parameter 12 is not double!", input_vy)
# if isinstance(type(input_vz), type(1.1)): # type(input_vz) != type(1.1):
# raise TypeError("Parameter 13 is not double!", input_vz)
# Convert km -> m # Convert km -> m
input_x = input_x*1000.0 input_x = input_x*1000.0
...@@ -14,49 +50,59 @@ def onOrbitObsPosition(path, input_ra_list, input_dec_list, input_pmra_list, inp ...@@ -14,49 +50,59 @@ def onOrbitObsPosition(path, input_ra_list, input_dec_list, input_pmra_list, inp
input_vy = input_vy*1000.0 input_vy = input_vy*1000.0
input_vz = input_vz*1000.0 input_vz = input_vz*1000.0
if type(input_date_str) != type("2025-03-05"): if isinstance(type(input_date_str), type("2025-03-05")):
# type(input_date_str) != type("2025-03-05"):
raise TypeError("Parameter 15 is not string!", input_date_str) raise TypeError("Parameter 15 is not string!", input_date_str)
else: else:
input_date_str = input_date_str.strip() input_date_str = input_date_str.strip()
if not (input_date_str[4]=="-" and input_date_str[7]=="-"): if not (input_date_str[4] == "-" and input_date_str[7] == "-"):
raise TypeError("Parameter 15 format error (1)!", input_date_str) raise TypeError("Parameter 15 format error (1)!", input_date_str)
else: else:
tmp = input_date_str.split("-") tmp = input_date_str.split("-")
if len(tmp) != 3: if len(tmp) != 3:
raise TypeError("Parameter 15 format error (2)!", input_date_str) raise TypeError(
"Parameter 15 format error (2)!", input_date_str)
input_year = int(tmp[0]) input_year = int(tmp[0])
input_month = int(tmp[1]) input_month = int(tmp[1])
input_day = int(tmp[2]) input_day = int(tmp[2])
if not (input_year>=1900 and input_year<=2100): if not (input_year >= 1900 and input_year <= 2100):
raise TypeError("Parameter 15 year range error [1900 ~ 2100]!", input_year) raise TypeError(
if not (input_month>=1 and input_month<=12): "Parameter 15 year range error [1900 ~ 2100]!", input_year)
raise TypeError("Parameter 15 month range error [1 ~ 12]!", input_month) if not (input_month >= 1 and input_month <= 12):
if not (input_day>=1 and input_day<=31): raise TypeError(
raise TypeError("Parameter 15 day range error [1 ~ 31]!", input_day) "Parameter 15 month range error [1 ~ 12]!", input_month)
if not (input_day >= 1 and input_day <= 31):
raise TypeError(
"Parameter 15 day range error [1 ~ 31]!", input_day)
if type(input_time_str) != type("20:15:15.15"): if isinstance(type(input_time_str), type("20:15:15.15")):
# type(input_time_str) != type("20:15:15.15"):
raise TypeError("Parameter 16 is not string!", input_time_str) raise TypeError("Parameter 16 is not string!", input_time_str)
else: else:
input_time_str = input_time_str.strip() input_time_str = input_time_str.strip()
if not (input_time_str[2]==":" and input_time_str[5]==":"): if not (input_time_str[2] == ":" and input_time_str[5] == ":"):
raise TypeError("Parameter 16 format error (1)!", input_time_str) raise TypeError("Parameter 16 format error (1)!", input_time_str)
else: else:
tmp = input_time_str.split(":") tmp = input_time_str.split(":")
if len(tmp) != 3: if len(tmp) != 3:
raise TypeError("Parameter 16 format error (2)!", input_time_str) raise TypeError(
"Parameter 16 format error (2)!", input_time_str)
input_hour = int(tmp[0]) input_hour = int(tmp[0])
input_minute = int(tmp[1]) input_minute = int(tmp[1])
input_second = float(tmp[2]) input_second = float(tmp[2])
if not (input_hour>=0 and input_hour<=23): if not (input_hour >= 0 and input_hour <= 23):
raise TypeError("Parameter 16 hour range error [0 ~ 23]!", input_hour) raise TypeError(
if not (input_minute>=0 and input_minute<=59): "Parameter 16 hour range error [0 ~ 23]!", input_hour)
raise TypeError("Parameter 16 minute range error [0 ~ 59]!", input_minute) if not (input_minute >= 0 and input_minute <= 59):
if not (input_second>=0 and input_second<60.0): raise TypeError(
raise TypeError("Parameter 16 second range error [0 ~ 60)!", input_second) "Parameter 16 minute range error [0 ~ 59]!", input_minute)
#Inital dynamic lib if not (input_second >= 0 and input_second < 60.0):
raise TypeError(
"Parameter 16 second range error [0 ~ 60)!", input_second)
# Inital dynamic lib
import os import os
currfile=os.getcwd() currfile = os.getcwd()
print(currfile) print(currfile)
shao = cdll.LoadLibrary(path+'MCI_inputData/TianCe/libshao.so') shao = cdll.LoadLibrary(path+'MCI_inputData/TianCe/libshao.so')
...@@ -64,11 +110,11 @@ def onOrbitObsPosition(path, input_ra_list, input_dec_list, input_pmra_list, inp ...@@ -64,11 +110,11 @@ def onOrbitObsPosition(path, input_ra_list, input_dec_list, input_pmra_list, inp
shao.onOrbitObs.restype = c_int shao.onOrbitObs.restype = c_int
d3 = c_double * 3 d3 = c_double * 3
shao.onOrbitObs.argtypes = [c_double, c_double, c_double, c_double, c_double, c_double, \ shao.onOrbitObs.argtypes = [c_double, c_double, c_double, c_double, c_double, c_double,
c_int, c_int, c_int, c_int, c_int, c_double, \ c_int, c_int, c_int, c_int, c_int, c_double,
c_double, POINTER(d3), POINTER(d3), \ c_double, POINTER(d3), POINTER(d3),
c_int, c_int, c_int, c_int, c_int, c_double, \ c_int, c_int, c_int, c_int, c_int, c_double,
POINTER(c_double), POINTER(c_double) ] POINTER(c_double), POINTER(c_double)]
output_ra_list = list() output_ra_list = list()
output_dec_list = list() output_dec_list = list()
for i in range(input_nstars): for i in range(input_nstars):
...@@ -89,10 +135,10 @@ def onOrbitObsPosition(path, input_ra_list, input_dec_list, input_pmra_list, inp ...@@ -89,10 +135,10 @@ def onOrbitObsPosition(path, input_ra_list, input_dec_list, input_pmra_list, inp
DAT = c_double(37.0) DAT = c_double(37.0)
output_ra = c_double(0.0) output_ra = c_double(0.0)
output_dec = c_double(0.0) output_dec = c_double(0.0)
rs = shao.onOrbitObs(input_ra, input_dec, input_parallax, input_pmra, input_pmdec, input_rv, \ rs = shao.onOrbitObs(input_ra, input_dec, input_parallax, input_pmra, input_pmdec, input_rv,
input_year_c, input_month_c, input_day_c, input_hour_c, input_minute_c, input_second_c, \ input_year_c, input_month_c, input_day_c, input_hour_c, input_minute_c, input_second_c,
DAT, byref(p3), byref(v3), \ DAT, byref(p3), byref(v3),
input_year_c, input_month_c, input_day_c, input_hour_c, input_minute_c, input_second_c, \ input_year_c, input_month_c, input_day_c, input_hour_c, input_minute_c, input_second_c,
byref(output_ra), byref(output_dec)) byref(output_ra), byref(output_dec))
if rs != 0: if rs != 0:
raise RuntimeError("Calculate error!") raise RuntimeError("Calculate error!")
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment