diff --git a/dadi_cli/GenerateFs.py b/dadi_cli/GenerateFs.py index dc22363..0fa8b60 100644 --- a/dadi_cli/GenerateFs.py +++ b/dadi_cli/GenerateFs.py @@ -59,8 +59,6 @@ def generate_fs( If the VCF file does not contain the AA INFO field and `polarized` is True. """ - if len(pop_ids) != len(projections): - raise ValueError("The lengths of `pop_ids` and `projections` must match.") if polarized: try: @@ -89,6 +87,11 @@ def generate_fs( print(projections, ploidy, subsample) else: dd = dadi.Misc.make_data_dict_vcf(vcf_filename=vcf, popinfo_filename=pop_info, calc_coverage=calc_coverage) + + # Moved this lower, since using subsamples make projections not required + if len(pop_ids) != len(projections): + raise ValueError("The lengths of `pop_ids` and `projections` must match.") + if calc_coverage: import pickle coverage_dd = {chrom_pos:{'coverage':dd[chrom_pos]['coverage']} for chrom_pos in dd} diff --git a/dadi_cli/parsers/generate_fs_parsers.py b/dadi_cli/parsers/generate_fs_parsers.py index 9f096f9..212944e 100644 --- a/dadi_cli/parsers/generate_fs_parsers.py +++ b/dadi_cli/parsers/generate_fs_parsers.py @@ -108,11 +108,15 @@ def add_generate_fs_parsers(subparsers: argparse.ArgumentParser) -> None: dest="pop_info", ) + # Check if subsamples are being requested to determin if --projections needed + proj_req = True + if "--subsample" in sys.argv: + proj_req = False parser.add_argument( "--projections", type=positive_int, nargs="+", - required=True, + required=proj_req, help="Sample sizes after projection; If you do not want to project down your data, please input the original sample sizes of your data.", )