import numpy as np

class BasicTemplateAlgorithm(QCAlgorithm):

def Initialize(self):

self.SetStartDate(2010,1,1) #Set Start Date
self.SetEndDate(2010,2,2) #Set End Date
self.SetCash(100000) #Set Strategy Cash
self.AddUniverse(self.CoarseSelectionFunction, self.FineSelectionFunction)


def CoarseSelectionFunction(self, coarse):

sortedByDollarVolume = sorted(coarse, key=lambda x: x.DollarVolume, reverse=True)

return [ x.Symbol for x in sortedByDollarVolume[:500] ]


def FineSelectionFunction(self, fine):

sortedByPeRatio = sorted(fine, key=lambda x: x.ValuationRatios.PERatio, reverse=True)

return [ x.Symbol for x in sortedByPeRatio ]


def OnData(self, data):

symbols = self.CoarseSelectionFunction(self, data)

I have attempted this but receieve the error: 

Runtime Error: TypeError : CoarseSelectionFunction() takes 2 positional arguments but 3 were given
at OnData in main.py:line 35
TypeError : CoarseSelectionFunction() takes 2 positional arguments but 3 were given (Open Stacktrace)

How can I call the CoarseSelectionFunction and return the result to OnData?