def METHOD_NAME(args, adaptor, rng):
    n_obs = adaptor.get_shape()[0]
    if args.num:
        assert sum(args.num) <= n_obs, "--num exceeds n_obs"
        draw = rng.choice(n_obs, size=sum(args.num), replace=False)
        return draw[0 : args.num[0]], draw[args.num[0] :]
    if args.var:
        vname, vval = args.var[0].split(":")
        filterA = get_filter_from_obs(adaptor, vname, vval)
        vname, vval = args.var[1].split(":")
        filterB = get_filter_from_obs(adaptor, vname, vval)
        return filterA, filterB
    if args.fraction:
        assert 0 < sum(args.fraction) <= 1.0, "--fraction not in range (0, 1]"
        num = [max(1, int(n_obs * f)) for f in args.fraction]
        draw = rng.choice(n_obs, size=sum(num), replace=False)
        return draw[0 : num[0]], draw[num[0] :]
    # error
    raise AssertionError("Unexpected cli arguments")