磁通比的编码校正

2024-06-17 14:50:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉编码。有个大四学生写了这段代码然后离开了。我无法联系他。该代码用于获取在IR实验室进行的测线比率。代码如下。我需要计算出 CIV/Lya;CIV/Lya中的错误
CIV/CIII;CIV/CIII中的错误 CIV/HeII;CIV/HeII中的错误 CIV/MgII;CIV/MgII中的错误

程序必须搜索通用JD(即相同的观察日期),JD必须在该范围内对以下链接data files中的值进行此比率计算

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]) 

注释掉这一行,它将在下一个类似类型的命令处停止

这是在Ubuntu16.04终端上运行时的错误

TabError: inconsistent use of tabs and spaces in indentation

好心帮忙


Tags: inrefforlinerangefilewriteratio