def phased_geno_ACC(randLst1, randLst2): from tqdm import tqdm rand1 = pd.read_csv(randLst1,header=None) rand2 = pd.read_csv(randLst2,header=None) ori_geno1 = pd.read_csv("randLst1.original_gt.txt", header=None) miss1 = ori_geno1[ori_geno1[0] =="./."].shape[0] ori_geno2 = pd.read_csv("randLst2.original_gt.txt", header=None) miss2 = ori_geno2[ori_geno2[0] =="./."].shape[0] phased_geno1 = open("randLst1.phase.gt.txt", "w") phased_geno2 = open("randLst2.phase.gt.txt", "w") ACCfile = open("imputed_ACC.result.txt", "w") total_1 = imputedVcf.shape[0] - miss1 total_2 = imputedVcf.shape[0] - miss2 right1 = 0 right2 = 0 for row in tqdm(range(imputedVcf.shape[0])): print(imputedVcf.iloc[row, rand1.iloc[row, 0]], file = phased_geno1) print(imputedVcf.iloc[row, rand2.iloc[row, 0]], file = phased_geno2) if ori_geno1.iloc[row, 0] == imputedVcf.iloc[row, rand1.iloc[row,0]].replace("|", "/"): right1 += 1 if ori_geno2.iloc[row, 0] == imputedVcf.iloc[row, rand2.iloc[row,0]].replace("|", "/"): right2 += 1 ACC1 = right1 / total_1 ACC2 = right2 / total_2 print(f"regarding missing site as wrongness, the total masked site is {total_1} and {total_2}\n ACC1 site is {right1} and ACC2 site is {right2}\nimputed genotype ACC1 is {ACC1} and ACC2 is {ACC2}", file=ACCfile) phased_geno_ACC("randLst1.txt", "randLst2.txt")
时间: 2023-04-10 18:00:42 浏览: 100
这是一个关于 Python 编程的问题,我可以回答。这段代码是一个函数,名为 phased_geno_ACC,它接受两个文件名作为参数,这两个文件包含随机数列表。函数会读取这些文件,并使用随机数从另一个文件中读取数据。然后,函数会将读取到的数据写入两个文件中,并计算准确率。最后,函数会将结果写入一个文件中。
相关问题
解释这段代码:ang = (0:N-1)*theta; ang(ang >= 180.0) = ang(ang >= 180.0) - 360.0; array = phased.ConformalArray; array.ElementPosition = [radius*cosd(ang);... radius*sind(ang);... zeros(1,N)]; array.ElementNormal = [ang;zeros(1,N)];
这段代码主要涉及到相控阵天线阵列的构建。
首先,代码中计算了相邻天线之间的夹角 theta,并用 0 到 N-1 的整数乘以 theta 计算出每个天线的相对角度 ang。
接着,将 ang 中大于等于 180 度的元素减去 360 度,以确保所有角度都在 -180 到 180 度之间。
然后,初始化一个 ConformalArray 对象,表示一个符合要求的天线阵列,其中元素的位置由 x,y,z 三个坐标轴的值组成,这里的 z 坐标轴被赋为 0。
最后,将天线的位置指定为 [radius*cosd(ang); radius*sind(ang); zeros(1,N)],即天线按照相对角度 ang 和半径 radius 进行坐标计算,其中第三行都是 0,表示在 xy 平面上。同时,将天线的法向量指定为 [ang;zeros(1,N)],表示所有天线的法向量与其相对角度相同,且垂直于 xy 平面。
ecmwfapi.api.APIException: 'ecmwf.API error 1: ERROR 170: This service has been phased out.
这个错误提示是因为 ECMWF API v1 已经被弃用,需要使用 ECMWF API v2 进行访问。你需要更新你的代码和安装的 Python 模块。
首先,你需要安装 ECMWF API v2 的 Python 模块。可以使用以下命令安装:
```
pip install https://github.com/ecmwf/cfgrib/archive/master.zip
pip install https://github.com/ecmwf/eccodes/archive/master.zip
pip install https://github.com/ecmwf/ecmwf-api-client-python/archive/master.zip
```
然后,你需要更新你的 Python 代码,使用 ECMWF API v2 的方式进行数据访问。以下是一个使用 ECMWF API v2 的 Python 代码示例:
```python
from ecmwfapi import ECMWFService
server = ECMWFService("mars")
server.execute({
"class": "od",
"dataset": "era5",
"date": "2019-01-01/to/2019-01-31",
"expver": "1",
"grid": "0.25/0.25",
"levtype": "sfc",
"param": "167.128",
"step": "0",
"stream": "oper",
"time": "00:00:00/12:00:00",
"type": "an",
"area": "90/-180/-90/180",
"format": "netcdf",
"target": "output.nc"
})
```
其中,需要替换 `"date"` 参数为需要查询的时间范围,替换 `"param"` 参数为需要查询的参数代码,替换 `"target"` 参数为输出文件名。如果还有其他参数需要替换,请参考 ECMWF API v2 的文档进行修改。
注意,使用 ECMWF API v2 需要先设置 ECMWF 的 API key 和密钥。你可以在 ECMWF 的网站上申请 API key 和密钥,然后在代码中进行设置。
阅读全文