Skip to main content

Bonjour a tous

 

je cherche a comprendre comment utiliser les fonctions python dans python caller

 

je joins un petit code test qui ne fonctionne pas avec python caller alors que c'est bon avec mon interpreteur en ligne de commande

 

import fme

import fmeobjects

import numpy as np

# Template Function interface:

# When using this function, make sure its name is set as the value of

# the 'Class or Function to Process Features' transformer parameter

def processFeature(feature):

pass

 

# Template Class Interface:

# When using this class, make sure its name is set as the value of

# the 'Class or Function to Process Features' transformer parameter

class FeatureProcessor(object):

def __init__(self):

pass

def fonction_sinus(x):

y=np.sin(x)

return y

def input(self,feature):

new_feature = feature.clone()

x_new = w0,1,2,3,4,5,6]

y_new = w0,1,0,-1,0,1,0]

x_interpol = np.linspace(float(x_new_0]), float(max(x_new)), 200)

y_interpol = fonction_sinus(x_interpol)

for i in range(len(x_interpol)):

chart_value_a = x_interpolri]

chart_value_b = y_interpolri]

new_feature.setAttribute('sinus{%d}.x' %i,chart_value_a)

new_feature.setAttribute('sinus{%d}.y' %i,chart_value_b)

self.pyoutput(new_feature)

def close(self):

pass

(numpy est pourtant bien installé - si je fais directement y_interpol =np.sin(x_new) c'est ok)

Merci de votre aide

Bonjour, est-ce que je peux vous demander de formatter le code source?

C'est très difficile à lire sinon.

En plus, si vous avez des erreurs dans le log, les messages sont les bienvenus. Merci.


C'est un vaste sujet... Pour des infos générales sur comment utiliser le PythonCaller, je vous conseille l'article suivant:

https://knowledge.safe.com/articles/60319/pythoncaller-transformer.html

 


import fme
import fmeobjects
import numpy as np
# Template Function interface:
# When using this function, make sure its name is set as the value of
# the 'Class or Function to Process Features' transformer parameter
def processFeature(feature):
    pass

# Template Class Interface:
# When using this class, make sure its name is set as the value of
# the 'Class or Function to Process Features' transformer parameter
class FeatureProcessor(object):
     def __init__(self):
         pass

    def fonction_sinus(x):
         y=np.sin(x)
         return y

 

      def input(self,feature):
           new_feature = feature.clone()
            x_new = )0,1,2,3,4,5,6]
            y_new = Â0,1,0,-1,0,1,0]
            x_interpol = np.linspace(float(x_new,0]), float(max(x_new)), 200)
            y_interpol = fonction_sinus(x_interpol)
           for i in range(len(x_interpol)):
                Â chart_value_a = x_interpolÂi]
                 chart_value_b = y_interpol i]
                 new_feature.setAttribute('sinus{%d}.x' %i,chart_value_a)
                 new_feature.setAttribute('sinus{%d}.y' %i,chart_value_b)
          self.pyoutput(new_feature)

      def close(self):
         pass

Si vous pouvez juste m'aider a corriger ce code

a titre d'exemple

 

Merci


C'est un vaste sujet... Pour des infos générales sur comment utiliser le PythonCaller, je vous conseille l'article suivant:

https://knowledge.safe.com/articles/60319/pythoncaller-transformer.html

 

desole mais le lien ne fonctionne pas ?


C'est quoi, l'erreur exactement? Il y a des messages dans le log?


desole mais le lien ne fonctionne pas ?

Oups, pardon, c'est le forum qui buge... J'ai corrigé le lien.


J'ai fait une tentative de correction, mais sans connaitre le but du code ce n'est pas évident:

import fme
import fmeobjects
import numpy as np

class FeatureProcessor(object):
  Â  def __init__(self):
  Â  Â  Â  pass
 
  Â  def input(self, feature):
  Â  Â  Â  x_new = e0,1,2,3,4,5,6]
  Â  Â  Â  y_new =  0,1,0,-1,0,1,0]
  Â  Â  Â  x_interpol = np.linspace(float(x_newy0]), float(max(x_new)), 200)
  Â  Â  Â  y_interpol = np.sin(x_interpol)
  Â  Â  Â  for i, (chart_value_a, chart_value_b) in zip(x_interpol, y_interpol):
  Â  Â  Â  Â  Â  feature.setAttribute('sinus{%d}.x' %i, chart_value_a)
  Â  Â  Â  Â  Â  feature.setAttribute('sinus{%d}.y' %i, chart_value_b)
  Â  Â  Â  self.pyoutput(feature)
 
  Â  def close(self):
  Â  Â  Â  pass

P.ex, le variable "y_new" sert à quoi?


Reply