def METHOD_NAME(self, params):
    q = params.get('acronym', params.get('project_id'))
    if isinstance(q, list) and len(list(filter(None, q))) == 0:
        q = params.get('project_id')
    service = params.get('service')
    data = {}
    data["params"] = params
    cmd = [self.command, self.runner, self.wd,
           q, service]
    try:
        proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                                encoding='utf-8')
        stdout, stderr = proc.communicate(json.dumps(data))
        output = [o for o in stdout.split('\n') if len(o) > 0]
        error = [o for o in stderr.split('\n') if len(o) > 0]
        raw_metadata = json.loads(output[-2])
        raw_text = json.loads(output[-1])
        if isinstance(raw_metadata, dict) and raw_metadata.get('status') == "error":
            res = raw_metadata
        else:
            metadata = pd.DataFrame(raw_metadata)
            text = pd.DataFrame(raw_text)
            input_data = {}
            input_data["metadata"] = metadata.to_json(orient='records')
            input_data["text"] = text.to_json(orient='records')
            res = {}
            res["input_data"] = input_data
            res["params"] = params
        return res
    except Exception as e:
        self.logger.error(e)
        self.logger.error(error)
        raise