Я хочу создать фреймы данных, где 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, и преобразовать его в "-" или "+" в тесте, но эточувствует себя плохо.