小编Har*_*pal的帖子

Shell脚本:从shell脚本中执行python程序

我试过谷歌搜索答案,但没有运气.

我需要使用我的工作超级计算机服务器,但是为了运行我的python脚本,它必须通过shell脚本执行.

例如,我想job.sh执行python_script.py

如何实现这一目标?

python shell

114
推荐指数
6
解决办法
41万
查看次数

如何索引到字典?

我在下面有一个词典:

colors = {
    "blue" : "5",
    "red" : "6",
    "yellow" : "8",
}
Run Code Online (Sandbox Code Playgroud)

如何索引字典中的第一个条目?

colors[0]将返回一个KeyError明显的原因.

python indexing dictionary

72
推荐指数
2
解决办法
28万
查看次数

Python:CSV按列而不是行写入

我有一个python脚本,在while循环中生成一堆数据.我需要将此数据写入CSV文件,因此它按列而不是行进行写入.

例如,在我的脚本的循环1中,我生成:

(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)

我需要这个在我的csv脚本中反映如下:

Result_1    1
Result_2    2
Result_3    3
Result_4    4
Run Code Online (Sandbox Code Playgroud)

在我的第二个循环中,我生成:

(5, 6, 7, 8)
Run Code Online (Sandbox Code Playgroud)

我需要这样来查看我的csv文件,如下所示:

Result_1    1    5
Result_2    2    6
Result_3    3    7
Result_4    4    8
Run Code Online (Sandbox Code Playgroud)

等等直到while循环结束.有谁能够帮我?


编辑

while循环可以持续超过100,000个循环

python csv

36
推荐指数
3
解决办法
11万
查看次数

Python:OverflowError:数学范围错误

我尝试这个计算时遇到溢出错误,但我无法弄清楚原因.

1-math.exp(-4*1000000*-0.0641515994108)
Run Code Online (Sandbox Code Playgroud)

python math overflow

27
推荐指数
4
解决办法
7万
查看次数

内存上限?

python的内存是否有限制?我一直在使用python脚本来计算文件的平均值,该文件最小值为150mb.

根据文件的大小,我有时会遇到一个MemoryError.

可以为python分配更多的内存,所以我没有遇到错误?


编辑:现在的代码如下

注意:文件大小可能有很大差异(最大为20GB),文件的最小大小为150mb

file_A1_B1 = open("A1_B1_100000.txt", "r")
file_A2_B2 = open("A2_B2_100000.txt", "r")
file_A1_B2 = open("A1_B2_100000.txt", "r")
file_A2_B1 = open("A2_B1_100000.txt", "r")
file_write = open ("average_generations.txt", "w")
mutation_average = open("mutation_average", "w")

files = [file_A2_B2,file_A2_B2,file_A1_B2,file_A2_B1]

for u in files:
    line = u.readlines()
    list_of_lines = []
    for i in line:
        values = i.split('\t')
        list_of_lines.append(values)

    count = 0
    for j in list_of_lines:
        count +=1

    for k in range(0,count):
        list_of_lines[k].remove('\n')

    length = len(list_of_lines[0])
    print_counter = 4

    for o in range(0,length):
        total = 0 …
Run Code Online (Sandbox Code Playgroud)

python memory

25
推荐指数
5
解决办法
12万
查看次数

找到峰的最大半宽

我一直试图找出蓝色峰的半峰全宽(FWHM)(见图).绿色峰和洋红色峰组合构成蓝色峰.我一直在使用以下等式来找到绿色和洋红色峰的FWHM:fwhm = 2*np.sqrt(2*(math.log(2)))*sd其中sd =标准偏差.我创建了绿色和洋红色的峰值,我知道标准偏差,这就是为什么我可以使用这个等式.

我使用以下代码创建了绿色和洋红色峰:

def make_norm_dist(self, x, mean, sd):
    import numpy as np

    norm = []
    for i in range(x.size):
        norm += [1.0/(sd*np.sqrt(2*np.pi))*np.exp(-(x[i] - mean)**2/(2*sd**2))]
    return np.array(norm) 
Run Code Online (Sandbox Code Playgroud)

如果我不知道蓝峰是由两个峰组成的,而我的数据中只有蓝峰,我怎么能找到FWHM?

我一直在用这段代码找到最高峰:

peak_top = 0.0e-1000
for i in x_axis:
    if i > peak_top:
        peak_top = i
Run Code Online (Sandbox Code Playgroud)

我可以将peak_top2 除以找到半高,然后尝试找到对应于半高的y值,但是如果没有与半高完全匹配的x值,我会遇到麻烦.

我非常确定我正在尝试的解决方案有更优雅的解决方案.

python matplotlib

19
推荐指数
4
解决办法
4万
查看次数

Python:具有非线性最小二乘的双曲线高斯拟合

我对数学的了解有限,这就是我可能被困的原因.我有一个光谱,我试图适应两个高斯峰.我可以适应最大的峰值,但我无法适应最小的峰值.我知道我需要对两个峰值的高斯函数求和,但我不知道哪里出了问题.显示当前输出的图像:

电流输出

蓝线是我的数据,绿线是我目前适合的.在我的数据中主峰左侧有一个肩膀,我目前正在尝试使用以下代码:

import matplotlib.pyplot as pt
import numpy as np
from scipy.optimize import leastsq
from pylab import *

time = []
counts = []


for i in open('/some/folder/to/file.txt', 'r'):
    segs = i.split()
    time.append(float(segs[0]))
    counts.append(segs[1])

time_array = arange(len(time), dtype=float)
counts_array = arange(len(counts))
time_array[0:] = time
counts_array[0:] = counts


def model(time_array0, coeffs0):
    a = coeffs0[0] + coeffs0[1] * np.exp( - ((time_array0-coeffs0[2])/coeffs0[3])**2 )
    b = coeffs0[4] + coeffs0[5] * np.exp( - ((time_array0-coeffs0[6])/coeffs0[7])**2 ) 
    c = a+b
    return c


def residuals(coeffs, counts_array, time_array):
    return …
Run Code Online (Sandbox Code Playgroud)

python gaussian scipy least-squares

17
推荐指数
2
解决办法
2万
查看次数

杀死一个python进程

我写了一个python脚本但是在我的脚本中意外地放了一个无限循环.

我如何杀死这个过程?我试过ctrl+c但没有成功.

还有其他选择吗?

我在Mac OS X 10.7.2上使用python 2.7

python macos

11
推荐指数
3
解决办法
3万
查看次数

在ggplot2中叠加条形图

我正试图覆盖条形图 ggplot2

我当前的代码生成条形图,但它们堆叠在一起.我不想要这个,我希望它们叠加,所以我可以看到每个条形高度的差异.

码:

library(ggplot2)
library(reshape)


x = c("Band 1", "Band 2", "Band 3")
y1 = c("1","2","3")
y2 = c("2","3","4")

to_plot <- data.frame(x=x,y1=y1,y2=y2)
melted<-melt(to_plot, id="x")

print(ggplot(melted,aes(x=x,y=value,fill=variable)) + geom_bar(stat="identity", alpha=.3))
Run Code Online (Sandbox Code Playgroud)

堆叠输出:

在此输入图像描述

r ggplot2

11
推荐指数
1
解决办法
2万
查看次数

在ggplot2中使用nls的pred $ fit出错

所以我在ggplot2中使用nls绘制功率曲线代码如下:

mass <- c(4120,4740,5550,5610,6520,6870,7080,8500,8960,10350,10480,10550,11450,11930,12180,13690,13760,13800,14050,14700,15340,15790,15990,17300,18460,18630,18650,20050,23270,24530,25030,27540,28370,33460,33930,34450,34500)

solv_acc <- c(2760,2990,2990,3180,3900,4010,4140,4680,4750,5330,4980,5860,5930,5570,5910,6790,6690,7020,6240,6620,6600,6860,7940,7600,8250,8530,7410,9160,9140,10300,10440,10390,11020,12640,11920,12110,12650)

df <- data.frame(Mass=log(mass),Solv=log(solv_acc))

plotter <- (ggplot(df, aes(x=Mass, y=Solv)) + geom_point(shape=1) + stat_smooth(method = "nls", formula = y~i*x^z, start=list(i=1,z=0.2)))
plotter <-  plotter + labs(x = "Mass kDa" ,y = "Solvent Accessibility")
print(plotter)
Run Code Online (Sandbox Code Playgroud)

运行上面的代码我收到以下错误:

Error in pred$fit : $ operator is invalid for atomic vectors
Run Code Online (Sandbox Code Playgroud)

我假设它尝试使用时发生错误predict()

当我nls在同一数据帧上不使用ggplot2 执行时,我没有收到错误

> nls1=nls(Solv~i*Mass^z,start=list(i=1,z=0.2),data=df)
> predict(nls1)
 [1] 7.893393 7.997985 8.115253 8.123230 8.234519 8.273135 8.295350 8.429871 8.468550 8.574147 8.583270 8.588134 8.647895 8.677831 8.692939 8.777944 8.781648 8.783757 …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

8
推荐指数
1
解决办法
1536
查看次数