Ejemplo n.º 1
0
 def test_repr(self):
     self.assertEqual(
         repr(interval(1, 2)),
         '<interval: [(1, 2)]>')
     self.assertEqual(
         repr(interval()),
         '<interval: null interval>')
Ejemplo n.º 2
0
 def test_equity_error(self):
     try:
         interval(1, 4) == 10
     except TypeError as e:
         self.assertIn(repr(int), repr(e))
     else:
         assert False
Ejemplo n.º 3
0
 def test_equity_error(self):
     try:
         interval(1, 4) == 10
     except TypeError as e:
         self.assertIn(repr(int), repr(e))
     else:
         assert False
Ejemplo n.º 4
0
    def test_len(self):
        interv = interval(1, 2) + interval(3, 4)
        self.assertEqual(interv.length(), 2)

        self.assertAlmostEqual(interval(10.0, 20.1).length(), 10.1)

        interv = interval(datetime(1, 1, 1), datetime(1, 1, 10))
        self.assertEqual(interv.length().days, 9)
Ejemplo n.º 5
0
    def test_len(self):
        interv = interval(1, 2) + interval(3, 4)
        self.assertEqual(interv.length(), 2)

        self.assertAlmostEqual(interval(10.0, 20.1).length(), 10.1)

        interv = interval(datetime(1, 1, 1), datetime(1, 1, 10))
        self.assertEqual(interv.length().days, 9)
Ejemplo n.º 6
0
 def test_add(self):
     interv = interval(1, 3) + interval(6, 10)
     self.assertEqual(interv.subintervals, [(1, 3), (6, 10)])
     self.assertIn(2, interv)
     self.assertIn(7, interv)
     self.assertNotIn(0, interv)
     self.assertNotIn(4, interv)
     self.assertNotIn(11, interv)
Ejemplo n.º 7
0
 def test_add(self):
     interv = interval(1, 3) + interval(6, 10)
     self.assertEqual(interv.subintervals, [(1, 3), (6, 10)])
     self.assertIn(2, interv)
     self.assertIn(7, interv)
     self.assertNotIn(0, interv)
     self.assertNotIn(4, interv)
     self.assertNotIn(11, interv)
Ejemplo n.º 8
0
 def test_contains(self):
     interv = interval(-1, 1)
     self.assertIn(0, interv)
     self.assertIn(-1, interv)
     self.assertIn(1, interv)
     self.assertNotIn(-1.1, interv)
     self.assertNotIn(1.1, interv)
Ejemplo n.º 9
0
def mergeIntervals(int1, int2):
    '''
    Merge two overlapping intervals. Raise error if they are not adjacent
    '''
    if int1.starting_value <= int2.ending_value:
        if int1.ending_value <= int2.ending_value:
            return int2
        else:
            return interval(int2.lower_bound + str(int2.input_value[0]) + ',' + str(int1.input_value[1]) + int1.upper_bound)
    elif int2.starting_value <= int1.ending_value:
        if int2.ending_value <= int1.ending_value:
            return int1
        else:
            return interval(int1.lower_bound + str(int1.input_value[0]) + ',' + str(int2.input_value[1]) + int2.upper_bound)
    else:
        raise MergeError
Ejemplo n.º 10
0
def interval_translator():
    """This function takes in a list of intervals in string form from the user and then turns it into an actual list of intervals """
    
    # These are the characters that this function is allowed to use to build an interval
    white_list = "[(-0123456789)],"

    # Takes in the input from the user and gets it ready to be processed
    input_string = input("List of intervals? \n") + ","
    ind = 0
    intervals = []
    
    # Goes through the input string and starts building the list of intervals
    while ind < len(input_string):
        comma_count = 0
        temp_string = ""
        while comma_count < 2 :
            test = input_string[ind]
            if test == "," :
                comma_count += 1
            
            if (test in white_list) and comma_count < 2 :
                temp_string += test
            
            ind += 1
        else :
            intervals.append(interval(temp_string))
    print(intervals)
    return intervals
Ejemplo n.º 11
0
 def test_contains(self):
     interv = interval(-1, 1)
     self.assertIn(0, interv)
     self.assertIn(-1, interv)
     self.assertIn(1, interv)
     self.assertNotIn(-1.1, interv)
     self.assertNotIn(1.1, interv)
Ejemplo n.º 12
0
def mergeIntervals(int1, int2):
    '''
    Merge two overlapping intervals. Raise error if they are not adjacent
    '''
    if int1.starting_value <= int2.ending_value:
        if int1.ending_value <= int2.ending_value:
            return int2
        else:
            return interval(int2.lower_bound + str(int2.input_value[0]) + ',' +
                            str(int1.input_value[1]) + int1.upper_bound)
    elif int2.starting_value <= int1.ending_value:
        if int2.ending_value <= int1.ending_value:
            return int1
        else:
            return interval(int1.lower_bound + str(int1.input_value[0]) + ',' +
                            str(int2.input_value[1]) + int2.upper_bound)
    else:
        raise MergeError
Ejemplo n.º 13
0
 def test_equity(self):
     self.assertEqual(
         interval(1, 2),
         interval(1, 2))
     self.assertEqual(
         interval(1, 2) + interval(3, 4),
         interval(3, 4) + interval(1, 2))
Ejemplo n.º 14
0
def do_merge(i1, i2):  #2 interval object
    # check the lower bound of 2 intervals
    if (len(set(i1.integers) & set(i2.integers)) > 0):
        if i1.lower_value < i2.lower_value:
            merge_interval = i1.lower_bound + str(i1.lower_value) + ','
        elif i2.lower_value < i1.lower_value:
            merge_interval = i2.lower_bound + str(i2.lower_value) + ','
        else:
            if i1.lower_bound == '(' and i2.lower_bound == '(':
                merge_interval = '(' + str(i2.lower_value) + ','
            else:
                merge_interval = '[' + str(i2.lower_limit) + ','

        #check the upper bound of the intervals
        if i1.upper_value < i2.upper_value:
            merged_interval = merged_interval + str(
                int2.upper_value) + int2.upper_bound
        elif i2.upper_value < i1.upper_value:
            merge_interval = merge_interval + str(
                i1.upper_value) + i1.upper_bound
        else:
            if i1.upper_bound == ')' and i2.upper_bound == ')':
                merged_interval = merged_interval + str(i2.upper_value) + ')'
            else:
                merged_interval = merged_interval + str(i2.upper_value) + ']'
    elif ((i1.lower_bound == '[' or i2.upper_bound == ']')
          and (i1.lower_value == i2.upper_value)):
        merged_interval = i2.lower_bound + str(i2.lower_value) + ',' + str(
            i1.upper_value) + i1.upper_bound

    elif ((i1.upper_bound == ']' or i2.lower_bound == '[')
          and (int1.upper_value == int2.lower_value)):
        merged_interval = i1.lower_bound + str(i1.lower_value) + ',' + str(
            int2.upper_value) + int2.upper_bound

    elif ((i1.lower_bound == '[' and i2.upper_bound == ']')
          and (i1.lower_value - 1 == i2.upper_value)):
        merged_interval = i2.lower_bound + str(i2.lower_value) + ',' + str(
            i1.upper_value) + i1.upper_bound

    elif ((i1.upper_bound == ']' and i2.lower_bound == '[')
          and (i1.upper_value + 1 == i2.lower_value)):
        merged_interval = i1.lower_bound + str(i1.lower_value) + ',' + str(
            i2.upper_value) + i2.upper_bound

    else:
        print "not overlap"

    return interval(merged_interval)
Ejemplo n.º 15
0
def mergeIntervals(int1, int2) :
    """ This function should take in two intervals and merge them into one interval. If a merge is not possible then it will             raise a NameError """
    # Gets the true upper and lower limits of the new interval as well as what it is expected to contain as well as what it does       contain
    true_lower = min(int1.true_lower, int2.true_lower)
    true_upper = max(int1.true_upper, int2.true_upper)
    actlly_contain = list(int1.contains) + list(int2.contains)
    should_contain = list(range(true_lower,true_upper))
    
    # Determines if the new interval contains what it should
    for number in should_contain :
        if number not in actlly_contain :
            mergeable = False
            break
        else :
            mergeable = True
            
    # If the intervals are mergeable starts building the new interval. If not raises a NameError
    if mergeable :
        if int1.true_lower == int2.true_lower :
            lower = max(int1.lower, int2.lower)
        else : 
            if true_lower == int1.true_lower :
                lower = int1.lower
            elif true_lower == int2.true_lower :
                lower = int2.lower

        
        if int1.true_upper == int2.true_upper :
            if not int1.upper_inclusive:
                upper = int1.upper
            else :
                upper = int2.upper
        else :
            if true_upper == int1.true_upper :
                upper = int1.upper
            elif true_upper == int2.true_upper :
                upper = int2.upper
    else :
        raise NameError("Not mergeable intervals")
    
    new_int_string = lower + "," + upper
    new_int = interval(new_int_string)
    return new_int
Ejemplo n.º 16
0
def do_merge(i1,i2): #2 interval object
    # check the lower bound of 2 intervals
    if (len(set(i1.integers) & set(i2.integers)) > 0):
        if i1.lower_value<i2.lower_value:
            merge_interval=i1.lower_bound + str(i1.lower_value) + ','
        elif i2.lower_value<i1.lower_value:
            merge_interval=i2.lower_bound+str(i2.lower_value)+','
        else:
            if i1.lower_bound=='(' and i2.lower_bound=='(':
                merge_interval='('+str(i2.lower_value)+','
            else:
                merge_interval='['+str(i2.lower_limit)+','

        #check the upper bound of the intervals
        if i1.upper_value<i2.upper_value:
            merged_interval = merged_interval + str(int2.upper_value) + int2.upper_bound
        elif i2.upper_value<i1.upper_value:
            merge_interval = merge_interval+str(i1.upper_value)+i1.upper_bound
        else:
            if i1.upper_bound == ')' and i2.upper_bound == ')':
                merged_interval = merged_interval + str(i2.upper_value) + ')'
            else: 
                merged_interval = merged_interval + str(i2.upper_value) + ']'
    elif ((i1.lower_bound == '[' or i2.upper_bound == ']') and (i1.lower_value == i2.upper_value)):
        merged_interval = i2.lower_bound + str(i2.lower_value) + ',' + str(i1.upper_value) + i1.upper_bound
    
    elif ((i1.upper_bound == ']' or i2.lower_bound == '[') and (int1.upper_value == int2.lower_value)):
        merged_interval = i1.lower_bound + str(i1.lower_value) + ',' + str(int2.upper_value) + int2.upper_bound

    elif ((i1.lower_bound == '[' and i2.upper_bound == ']') and (i1.lower_value - 1 == i2.upper_value)):
        merged_interval = i2.lower_bound + str(i2.lower_value) + ',' + str(i1.upper_value) + i1.upper_bound

    elif ((i1.upper_bound == ']' and i2.lower_bound == '[') and (i1.upper_value + 1 == i2.lower_value)):
        merged_interval = i1.lower_bound + str(i1.lower_value) + ',' + str(i2.upper_value) + i2.upper_bound
        
    else:
        print "not overlap" 

    return interval(merged_interval)
Ejemplo n.º 17
0
 def test_null_interval(self):
     interv = interval()
     self.assertEqual(interv.subintervals, [])
     self.assertNotIn(1, interv)
     self.assertNotIn(-1, interv)
Ejemplo n.º 18
0
 def test_init_naught(self):
     interv = interval()
     self.assertEqual(interv.subintervals, [])
Ejemplo n.º 19
0
 def test_init_naught(self):
     interv = interval()
     self.assertEqual(interv.subintervals, [])
Ejemplo n.º 20
0
 def test_init(self):
     interv = interval(1, 2)
     self.assertEqual(interv.subintervals, [(1, 2)])
Ejemplo n.º 21
0
 def test_equity(self):
     self.assertEqual(interval(1, 2), interval(1, 2))
     self.assertEqual(
         interval(1, 2) + interval(3, 4),
         interval(3, 4) + interval(1, 2))
Ejemplo n.º 22
0
 def test_add_collapses_intervals(self):
     self.assertEqual(interval(1, 2) + interval(2, 3), interval(1, 3))
Ejemplo n.º 23
0
if __name__=="__main__":
    flag=1  #set to input
    while flag:
        interval_list=raw_input("List of intervals?")
        if interval_list=="quit":
            break
        process_list=re.findall(r'[[(].*?[\])]',interval_list)
        if not len(process_list):
            print "no input"
            continue
        intervals=[]
        flag=0  #set to stop input
        for i in process_list:
            try:
                intervals.append(interval(i))
            except:
                print "invalid input"
                flag=1
                break
            else:
                intervals.append(interval(i))
        intervals=merge_intervals(intervals)
    while 1:
        new_interval=raw_input("interval?")
        if new_interval=='quit':
            break
        else:
            pre_pro_interval=re.findall(r'[[(].*?[\])]',new_interval)
            try:
                pre_pro_interval=interval(pre_pro_interval[0])
Ejemplo n.º 24
0
 def test_null_interval(self):
     interv = interval()
     self.assertEqual(interv.subintervals, [])
     self.assertNotIn(1, interv)
     self.assertNotIn(-1, interv)
Ejemplo n.º 25
0
 def test_add_collapses_intervals(self):
     self.assertEqual(
         interval(1, 2) + interval(2, 3),
         interval(1, 3))
Ejemplo n.º 26
0
 def test_datetimes(self):
     start = datetime(1, 1, 1, 20, 0)
     end = datetime(1, 1, 1, 23, 30)
     interv = interval(start, end)
     self.assertIn(datetime(1, 1, 1, 23, 0), interv)
Ejemplo n.º 27
0
#        if intervals.index(i) != 0:
#            out = out + ', ' + i.input
            

if __name__ == '__main__':
    
    
    lists = []
    try:
        while True:
            inputs = raw_input('List of Intervals?')
            if inputs == 'quit':
                sys.exit()
            try:
                temp = inputs.split(', ')
                lists = [interval(i) for i in temp]
                print len(lists)
                break
            except ValueError:
                print temp
                print "Invalid intervals: Please make sure you use comma and one whitespace between intervals"
            
        while True:
            inputs = raw_input('Intervals?')
            if inputs == 'quit':
                sys.exit()
            try:
                # print input
                newint = interval(inputs)
            except ValueError:
                print "Invalid Interval: make sure your input is a proper interval"
Ejemplo n.º 28
0
        intervals = interval_translator()
    except NameError:
        print("One of the intervals is not a valid interval")
    except IndexError:
        print("Not a valid list of intervals")
    else: 
        is_proper_intervals = True

# Here the program continuely asks the user for an interval to be inserted and then merged into the list of intervals until         prompted to quit.        
quit = False
while quit == False :
    is_proper_input = False
    while is_proper_input == False:
        interval_string = input("Interval? \n")
        # Here the program determines if the interval can actually be made or if the user is quitting
        try:
            newint = interval(interval_string)
        except NameError:
            if interval_string == 'quit' :
                quit = True
                is_proper_input = True
            else: 
                print("Invalid interval")
        else: 
            is_proper_input = True
    else:
        if not quit:
            intervals = insert(intervals, newint)
            print(intervals)
            
   
Ejemplo n.º 29
0
rate = 44100
duration = 5
volume = 1
sd.default.samplerate = rate

scale = 'major'

print(scale)
chord = [0, 2, 4]
octaves = 2
notes = chain.from_iterable(
    (n + o * len(SCALES[scale]) for n in chord) for o in range(octaves))

wave = None
amplitude = math.sqrt(volume) / (len(chord) * octaves)
for s in semitones(notes, scale):
    f = frequency(s, base=220)
    i = interval(s)
    print(f'{s:02} {f:.2f} Hz : {i[0]} ({i[1]})')
    w = waveform(f, rate, duration, amplitude)
    if wave is None:
        wave = w
    else:
        wave += w

crossfade(wave)
plt.plot(wave)
sd.play(wave)
plt.show()
# sd.wait()
Ejemplo n.º 30
0
 def test_init(self):
     interv = interval(1, 2)
     self.assertEqual(interv.subintervals, [(1, 2)])
Ejemplo n.º 31
0
 def test_repr(self):
     self.assertEqual(repr(interval(1, 2)), '<interval: [(1, 2)]>')
     self.assertEqual(repr(interval()), '<interval: null interval>')
Ejemplo n.º 32
0
if __name__ == "__main__":
    flag = 1  #set to input
    while flag:
        interval_list = raw_input("List of intervals?")
        if interval_list == "quit":
            break
        process_list = re.findall(r'[[(].*?[\])]', interval_list)
        if not len(process_list):
            print "no input"
            continue
        intervals = []
        flag = 0  #set to stop input
        for i in process_list:
            try:
                intervals.append(interval(i))
            except:
                print "invalid input"
                flag = 1
                break
            else:
                intervals.append(interval(i))
        intervals = merge_intervals(intervals)
    while 1:
        new_interval = raw_input("interval?")
        if new_interval == 'quit':
            break
        else:
            pre_pro_interval = re.findall(r'[[(].*?[\])]', new_interval)
            try:
                pre_pro_interval = interval(pre_pro_interval[0])
Ejemplo n.º 33
0
 def test_datetimes(self):
     start = datetime(1, 1, 1, 20, 0)
     end = datetime(1, 1, 1, 23, 30)
     interv = interval(start, end)
     self.assertIn(datetime(1, 1, 1, 23, 0), interv)