Skip to main content
Question

utilser fonction python dans python caller


Forum|alt.badge.img

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 = [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

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

Merci de votre aide

8 replies

david_r
Celebrity
  • January 18, 2019

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.


david_r
Celebrity
  • January 18, 2019

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

 


Forum|alt.badge.img
  • Author
  • January 18, 2019
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

Forum|alt.badge.img
  • Author
  • January 18, 2019

Si vous pouvez juste m'aider a corriger ce code

a titre d'exemple

 

Merci


Forum|alt.badge.img
  • Author
  • January 18, 2019
david_r wrote:

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 ?


david_r
Celebrity
  • January 21, 2019

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


david_r
Celebrity
  • January 21, 2019
yodarvey wrote:

desole mais le lien ne fonctionne pas ?

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


david_r
Celebrity
  • January 21, 2019

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 = [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 = 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?


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings