python - 通量比的编码校正
问题描述
我是编码新手。有一个前辈写了这段代码就走了。我无法联系到他。该代码用于获取在 IR 实验室中进行的线测量的比率。代码如下。我需要计算 CIV/Lya 的比率;CIV/Lya
CIV/CIII 错误;CIV/CIII CIV/HeII 错误;CIV/HeII CIV/MgII 错误;CIV/MgII 错误
程序必须搜索共同的 JD(即相同的观察日期),并且在该 JD 中必须对以下链接数据文件中存在的值进行此比率计算
import math
import os
import numpy
#print os.getcwd()
Input_file_1 = open("L58.txt",'r')
#Input_file_1 = 'lineflux.txt'
first_line=Input_file_1.readline()
first_line=Input_file_1.readline()
line_flux = []
line_flux.append([])
line_flux.append([])
line_flux.append([])
line_flux.append([])
line_flux.append([])
for line in Input_file_1.readlines():
ywl = [value for value in line.split()]
#print ywl
line_flux[0].append(float(ywl[0]))
line_flux[1].append(ywl[3])
line_flux[2].append(float(ywl[4]))
line_flux[3].append(float(ywl[5]))
line_flux[4].append(float(ywl[6]))
sigma_alpha = 0
v1=0
v2=0
ele = set(line_flux[1])
#print ele
ref_line_flux=[]
ref_line_flux.append([])
ref_line_flux.append([])
ref_line_flux.append([])
ref_line_flux.append([])
for l in range(len(line_flux[0])):
if line_flux[1][l] == 'CIII':
ref_line_flux[0].append(line_flux[0][l]) # MJD
ref_line_flux[1].append(line_flux[2][l]) # Number
ref_line_flux[2].append(line_flux[3][l]) # Line flux
ref_line_flux[3].append(line_flux[4][l]) # RMS Error
print(ref_line_flux[0])
line_ratio=[]
line_ratio.append([])
line_ratio.append([])
line_ratio.append([])
line_ratio.append([])
line_ratio.append([])
line_ratio.append([])
rms_line_ratio=[] # Delete or add the below command accordingly
rms_line_ratio.append([])
rms_line_ratio.append([])
rms_line_ratio.append([])
rms_line_ratio.append([])
rms_line_ratio.append([])
rms_line_ratio.append([])
mjd=[]
mjd.append([])
mjd.append([])
mjd.append([])
mjd.append([])
mjd.append([])
mjd.append([])
for l in range(len(line_flux[0])):
for x in range(len(ref_line_flux[0])):
if ref_line_flux[0][x] == line_flux[0][l]:
if line_flux[1][l] == 'LyA': # Put 0 for LyA
mjd[0].append(ref_line_flux[0][x])
line_ratio[0].append(line_flux[3][l]/ref_line_flux[2][x])
rms_line_ratio[0].append(((line_flux[4][l]/line_flux[3][l])**2 + (ref_line_flux[3][x]/ref_line_flux[2][x])**2)**0.5)
if line_flux[1][l] == 'CIV': # Put 1 for CIV
mjd[1].append(ref_line_flux[0][x])
line_ratio[1].append(line_flux[3][l]/ref_line_flux[2][x])
rms_line_ratio[1].append(((line_flux[4][l]/line_flux[3][l])**2 + (ref_line_flux[3][x]/ref_line_flux[2][x])**2)**0.5)
if line_flux[1][l] == 'HeII':
mjd[2].append(ref_line_flux[0][x])
line_ratio[2].append(line_flux[3][l]/ref_line_flux[2][x])
rms_line_ratio[2].append(((line_flux[4][l]/line_flux[3][l])**2 + (ref_line_flux[3][x]/ref_line_flux[2][x])**2)**0.5)
if line_flux[1][l] == 'MgII':
mjd[3].append(ref_line_flux[0][x])
line_ratio[3].append(line_flux[3][l]/ref_line_flux[2][x])
rms_line_ratio[3].append(((line_flux[4][l]/line_flux[3][l])**2 + (ref_line_flux[3][x]/ref_line_flux[2][x])**2)**0.5)
if line_flux[1][l] == 'SiIV':
mjd[4].append(ref_line_flux[0][x])
line_ratio[4].append(line_flux[3][l]/ref_line_flux[2][x])
rms_line_ratio[4].append(((line_flux[4][l]/line_flux[3][l])**2 + (ref_line_flux[3][x]/ref_line_flux[2][x])**2)**0.5)
if line_flux[1][l] == 'Unknown':
mjd[5].append(ref_line_flux[0][x])
line_ratio[5].append(line_flux[3][l]/ref_line_flux[2][x])
rms_line_ratio[5].append(((line_flux[4][l]/line_flux[3][l])**2 + (ref_line_flux[3][x]/ref_line_flux[2][x])**2)**0.5)
sigma_alpha = math.log(v1/v2)*((sigma_12/ B12 + sigma_alpha / B22)**0.5)
alpha = math.log(B1/B2)/math.log(v1/v2)
file=open("output.txt", "w")
file.write('MJD\t Flux ratio-CIII\t Error Flux ratio-CIII\n')
for i in range(len(line_ratio[0])):
file.write(str(mjd[0][i]) + "\t" +str(line_ratio[0][i]) + "\t" + str(rms_line_ratio[0][i]) + "\n")
file.write('\n')
file.write('MJD\t Flux ratio-CIV\t Error Flux ratio-CIV\n')
for i in range(len(line_ratio[1])):
file.write(str(mjd[1][i]) + "\t" +str(line_ratio[1][i]) + "\t" + str(rms_line_ratio[1][i]) + "\n")
file.write('\n')
file.write('MJD\t Flux ratio-HeII\t Error Flux ratio-HeII\n')
for i in range(len(line_ratio[2])):
file.write(str(mjd[2][i]) + "\t" +str(line_ratio[2][i]) + "\t" + str(rms_line_ratio[2][i]) + "\n")
file.write('\n')
file.write('MJD\t Flux ratio-MgII\t Error Flux ratio-MgII\n')
for i in range(len(line_ratio[3])):
file.write(str(mjd[3][i]) + "\t" +str(line_ratio[3][i]) + "\t" + str(rms_line_ratio[3][i]) + "\n")
file.write('\n')
file.write('MJD\t Flux ratio-SiIV\t Error Flux ratio-SiIV\n')
for i in range(len(line_ratio[4])):
file.write(str(mjd[4][i]) + "\t" +str(line_ratio[4][i]) + "\t" + str(rms_line_ratio[4][i]) + "\n")
file.write('\n')
file.write('MJD\t Flux ratio-Unknown\t Error Flux ratio-Unknown\n')
for i in range(len(line_ratio[5])):
file.write(str(mjd[5][i]) + "\t" +str(line_ratio[5][i]) + "\t" + str(rms_line_ratio[5][i]) + "\n")
file.write('\n')
file.write('\n')
file.close()
代码不起作用。
到达线路时停止
if line_flux[1][l] == 'LyA': # Put 0 for LyA
mjd[0].append(ref_line_flux[0][x])
注释掉这一行,它将在下一个类似类型的命令处停止。
这是在 ubuntu 16.04 终端运行时的错误
TabError: inconsistent use of tabs and spaces in indentation
请帮助
解决方案
推荐阅读
- neo4j - 如何启用 Neo4J 相似度算法
- c++ - C++“未知类型名称”和“使用未声明的标识符”错误
- php - 在 php foreach 循环中访问 xml 节点
- python - 如何在while循环中的每个循环之后从字符串中删除一个字符
- authorization - 使用 ecto 变更集对实体实施授权
- ios - 如何保持多个 Google 登录会话处于活动状态以允许用户在不注销的情况下切换帐户?
- c# - 为什么我们在组件上使用 GetComponent<>()?
- php - 启动 Laravel 服务器时遇到无效请求错误
- linux - 在容器内从 docker-compose 命令运行 shell 脚本
- flutter - 访问 API 响应并在按钮单击时打印它?