Я хочу создавать фреймы данных, где End больше, чем Start.
Это я делаю с:
from hypothesis.extra.pandas import columns, data_frames, column
import hypothesis.strategies as st
positions = st.integers(min_value=0, max_value=int(1e7))
strands = st.sampled_from("+ -".split())
data_frames(columns=columns(["Start", "End"], dtype=int),
rows=st.tuples(positions, positions).map(sorted)).example()
который дает
Start End
0 589492 6620613
1 5990807 8083222
2 252458 8368032
3 1575938 5763895
4 4689113 9133040
5 7439297 8646668
6 838051 1886133
Однако я хочу добавить к данным третий столбец Strand, созданный с помощью описанной выше стратегии. Затем это перестает работать:
data_frames(columns=columns(["Start", "End", "Strands"], dtype=int),
rows=st.tuples(positions, positions, strands).map(sorted)).example()
Выдает ошибку
TypeError: '<' not supported between instances of 'str' and 'int'
Это связано с сортировкой кортежей как int, так и strs. Как это исправить?
Я могу спросить гипотезу о создании фрейма данных с pos, pos, strand_int, где strand_int либо 0, либо 1, и преобразовать это в «-» или «+» в тесте, но это выглядит неприятно.