docstr: Mark the given order as 'rejected', which is functionally similar to
  cancelled. The distinction is that rejections are involuntary (and
  usually include a message from a broker indicating why the order was
  rejected) while cancels are typically user-driven.
docstr_tok: ["Mark","the","given","order","as","'rejected","'",",","which","is","functionally","similar","to","cancelled",".","The","distinction","is","that","rejections","are","involuntary","(","and","usually","include","a","message","from","a","broker","indicating","why","the","order","was","rejected",")","while","cancels","are","typically","user-driven","."]
code: def reject(self, order_id, reason=""):
      """
      Mark the given order as 'rejected', which is functionally similar to
      cancelled. The distinction is that rejections are involuntary (and
      usually include a message from a broker indicating why the order was
      rejected) while cancels are typically user-driven.
      """
      if order_id not in self.orders:
          return
  
      cur_order = self.orders[order_id]
  
      order_list = self.open_orders[cur_order.asset]
      if cur_order in order_list:
          order_list.remove(cur_order)
  
      if cur_order in self.new_orders:
          self.new_orders.remove(cur_order)
      cur_order.reject(reason=reason)
      cur_order.dt = self.current_dt
      # we want this order's new status to be relayed out
      # along with newly placed orders.
      self.new_orders.append(cur_order)
  
imports: from logbook import Logger
  from collections import defaultdict
  from copy import copy
  from six import iteritems
  from catalyst.assets import Equity, Future, Asset
  from catalyst.finance.order import Order
  from catalyst.finance.slippage import DEFAULT_FUTURE_VOLUME_SLIPPAGE_BAR_LIMIT, VolatilityVolumeShare, VolumeShareSlippage
  from catalyst.finance.commission import DEFAULT_PER_CONTRACT_COST, FUTURE_EXCHANGE_FEES_BY_SYMBOL, PerContract, PerShare
  from catalyst.finance.cancel_policy import NeverCancel
  from catalyst.utils.input_validation import expect_types
  from catalyst.constants import LOG_LEVEL
label_desc: Use image node_id 9 for calling the Blotter obj's underlying member method code with example usage: obj.reject(order_id, reason) without return types