Невозможно получить правильный тип данных для Curve_fit. пример: нехэшируемый, массив с последовательностью и т. д.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно получить правильный тип данных для Curve_fit. пример: нехэшируемый, массив с последовательностью и т. д.

Сообщение Anonymous »

Я работаю над сценарием для анализа скорости релаксации ЯМР с использованием Curve_fit и использую как входные, так и выходные значения из внешних файлов. Когда я на самом деле пытался запустить Curve_Fit, я получал множество сообщений об ошибках, касающихся этих типов данных, например, данные были в нехешируемом типе, неправильное преобразование массива в последовательность, данные имели разную форму и т. д. Я изменил свой скрипт. чтобы убедиться, что они имеют одинаковые типы данных (строка объекта) и форму (36), но я все еще не могу запустить его, не получая сообщений об ошибках. Я чувствую, что есть очень простое решение, и я просто что-то упускаю, но не могу понять, что именно, и буду очень признателен за любую помощь!
Это текущая полная версия сценарий:

Код: Выделить всё

import math
import numpy as np
from numpy import *
import scipy
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import matplotlib.cm as cm
import nmrglue as ng
import sys
from mpl_toolkits.mplot3d import Axes3D
from pathlib import Path
import csv
import pandas as pd

def exp(x, a, b, c):
d=1/b
return a+c*np.exp(-b*x)

out=open((f'/Users/haileyrude/Dropbox/OkunoNMR/1/output.txt'), 'w')

List_area=[]
List_inten=[]

with open(str(f'Okuno Lab Python Work/Okuno Test 1/tau.list'), 'r') as d:
reader = csv.reader(d)
prepretauList = list(reader)
pretauList = np.array(prepretauList)
tauList = pretauList.astype(str)

dic,data = ng.pipe.read(str(Path(f'/Users/haileyrude/Dropbox/OkunoNMR/1/ft/test036.ft1')))#ZY

udic = ng.pipe.guess_udic(dic,data)
uc = ng.fileiobase.uc_from_udic(udic)
ppm_1H = uc.ppm_scale()
uc0 = ng.pipe.make_uc(dic,data,dim=0)
ub=uc0("6.5ppm")
lb=uc0("9.5ppm")

ppm = ppm_1H[lb:ub]
inten = data[lb:ub]
maxvalue=max(inten.real)
pt=np.where(data.real==maxvalue)
intensity=data[pt]
maxpt=uc0.ppm(pt[0])

display(uc0.ppm(pt[0]))
off=0
count=0
for i in range(1, len(tauList)+1, 1):

off=off+500
count=count+1
try:
dic,data = ng.pipe.read(str(Path(f'/Users/haileyrude/Dropbox/OkunoNMR/1/ft/test00{str(i)}.ft1')))#ZY
except IOError:
dic,data = ng.pipe.read(str(Path(f'/Users/haileyrude/Dropbox/OkunoNMR/1/ft/test0{str(i)}.ft1')))#ZY

#print(dic,data)
#define intergration area for the methyl, include some baseline
ppm = ppm_1H[lb:ub]
inten = data[lb:ub]
intensity=data[pt]

#intergrate
area=inten.sum()
List_area.append(float(area.real))
List_inten.append(intensity.real)

colors = cm.gist_heat(np.linspace(0, 1, len(tauList)+1))
plt.xlim([6.5, 9.5])
plt.plot(ppm, inten.real, color=colors[count])

prex=array(tauList, dtype="object")
arx=prex.astype(str)
x=prex.flatten()

prey=array(List_inten, dtype="object")
ary=prey.astype(str)
y=ary.flatten()

popt, pcov = curve_fit(exp, x, y)
#get the errors
errors=np.sqrt(pcov.diagonal())
print ('rate', popt[1], '+/-', errors[1] )
print(out,'rate', popt[1], '+/-', errors[1])

#print 'Relax rate:', popt[1], '+/-', float(errors[1])

rate_fig = plt.figure(1)
plt.plot(tauList, List_inten, marker='o', markersize=10, linestyle='None')
plt.plot(xaxis, exp(xaxis, *popt), marker='None', linestyle='-', linewidth=2, color='r')
plt.show()
Когда я запускаю именно этот сценарий, я получаю сообщение об ошибке: «нехэшируемый тип: 'numpy.ndarray'», но опять же, всякий раз, когда я пробую другие, я просто получаю аналогичные сообщения об ошибках о несовместимых типах данных. для Curve_fit
Кроме того, пытаясь понять причину моей проблемы, я запустил эту ячейку:

Код: Выделить всё

print(x)
print(len(x))
print(x.shape)
print(x.dtype)

print(y)
print(len(y))
print(y.shape)
print(y.dtype)
и получил следующий вывод:
x = ['0.001000' '0.001500' '0.002000' '0.002500' '0.003000' '0.004000'
'0.005000' '0.007500' '0.010000' '0.012500' '0.015000' '0.017500'
'0.020000' '0.022500' '0.025000' '0.027500' '0.030000' '0.0350 00'
'0.050000' ' 0.075000' '0.100000' '0.125000' '0.150000' '0.175000'
'0.250000' '0.500000' '0.750000' '1.000000' '1.250000' '1.500000'
'1.75 0000' '2.000000' '2.500000' ' 3.000000' '3.500000' '5.000000']
len(x) = 36
x.shape = (36,)x dtype = object
y = ['-157341216.0' '-156514192.0' '-156109792.0' '-155292736.0'
'-155541808.0' '- 154359088.0' '-153406112.0' '-152017536.0'
'-150163360.0' '-148821312.0' '-147121408.0' '-145200544.0'
'-143513360.0' '-14 2319280.0' '-140684704.0' '-139887536.0'
'-138132720.0' '-135468448.0' '-127346128.0' '-114155104.0'
'-101980152.0' '-90303376.0' '-78995040.0' '-68271560.0' '-3838 6176.0'
'38851676.0 ' '89095032.0' '121053536.0' '142517744.0' '155447904.0'
'163979280.0' '168583824.0' '174455648.0' '176974160.0' '177651056.0'
'178662960.0']
len(y) = 36
y.shape = (36,)
y dtype =

Подробнее здесь: https://stackoverflow.com/questions/788 ... y-with-seq
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Установленная Lorentzian Curve перевернута по сравнению с исходными данными
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Установленная Lorentzian Curve перевернута по сравнению с исходными данными
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Python: TypeError: нехэшируемый тип: 'slice'
    Anonymous » » в форуме Python
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Вес многометочного вычислительного класса — нехэшируемый тип
    Anonymous » » в форуме Python
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Получение TypeError: нехэшируемый тип: «Серия» при изменении диапазона пороговых значений.
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»