|
17 | 17 | from typing_extensions import Self, assert_never |
18 | 18 |
|
19 | 19 | from bioimageio.spec.model import v0_4, v0_5 |
| 20 | +from bioimageio.spec.model.v0_5 import TensorId |
| 21 | +from bioimageio.spec.model.v0_5 import ( |
| 22 | + _convert_proc, # pyright: ignore [reportPrivateUsage] |
| 23 | +) |
20 | 24 |
|
21 | 25 | from ._op_base import BlockedOperator, Operator |
22 | 26 | from .axis import AxisId, PerAxis |
@@ -699,3 +703,113 @@ def get_proc_class(proc_spec: ProcDescr): |
699 | 703 | return ZeroMeanUnitVariance |
700 | 704 | else: |
701 | 705 | assert_never(proc_spec) |
| 706 | + |
| 707 | + |
| 708 | +def preproc_v4_to_processing( |
| 709 | + inp: v0_4.InputTensorDescr, |
| 710 | + proc_spec: v0_4.PreprocessingDescr, |
| 711 | +) -> Processing: |
| 712 | + member_id = TensorId(str(inp.name)) |
| 713 | + if isinstance(proc_spec, v0_4.BinarizeDescr): |
| 714 | + return Binarize.from_proc_descr(proc_spec, member_id) |
| 715 | + elif isinstance(proc_spec, v0_4.ClipDescr): |
| 716 | + return Clip.from_proc_descr(proc_spec, member_id) |
| 717 | + elif isinstance(proc_spec, v0_4.ScaleLinearDescr): |
| 718 | + return ScaleLinear.from_proc_descr(proc_spec, member_id) |
| 719 | + elif isinstance(proc_spec, v0_4.ScaleRangeDescr): |
| 720 | + return ScaleRange.from_proc_descr(proc_spec, member_id) |
| 721 | + elif isinstance(proc_spec, v0_4.SigmoidDescr): |
| 722 | + return Sigmoid.from_proc_descr(proc_spec, member_id) |
| 723 | + elif isinstance(proc_spec, v0_4.ZeroMeanUnitVarianceDescr): |
| 724 | + if proc_spec.kwargs.mode == "fixed": |
| 725 | + axes = inp.axes |
| 726 | + v5_proc_spec = _convert_proc(proc_spec, axes) |
| 727 | + assert isinstance( |
| 728 | + v5_proc_spec, v0_5.FixedZeroMeanUnitVarianceDescr |
| 729 | + ) # FIXME |
| 730 | + return FixedZeroMeanUnitVariance.from_proc_descr(v5_proc_spec, member_id) |
| 731 | + else: |
| 732 | + return ZeroMeanUnitVariance.from_proc_descr(proc_spec, member_id) |
| 733 | + else: |
| 734 | + assert_never(proc_spec) |
| 735 | + |
| 736 | + |
| 737 | +def postproc_v4_to_processing( |
| 738 | + inp: v0_4.OutputTensorDescr, |
| 739 | + proc_spec: v0_4.PostprocessingDescr, |
| 740 | +) -> Processing: |
| 741 | + member_id = TensorId(str(inp.name)) |
| 742 | + if isinstance(proc_spec, v0_4.BinarizeDescr): |
| 743 | + return Binarize.from_proc_descr(proc_spec, member_id) |
| 744 | + if isinstance(proc_spec, v0_4.ScaleMeanVarianceDescr): |
| 745 | + return ScaleMeanVariance.from_proc_descr(proc_spec, member_id) |
| 746 | + elif isinstance(proc_spec, v0_4.ClipDescr): |
| 747 | + return Clip.from_proc_descr(proc_spec, member_id) |
| 748 | + elif isinstance(proc_spec, v0_4.ScaleLinearDescr): |
| 749 | + return ScaleLinear.from_proc_descr(proc_spec, member_id) |
| 750 | + elif isinstance(proc_spec, v0_4.ScaleRangeDescr): |
| 751 | + return ScaleRange.from_proc_descr(proc_spec, member_id) |
| 752 | + elif isinstance(proc_spec, v0_4.SigmoidDescr): |
| 753 | + return Sigmoid.from_proc_descr(proc_spec, member_id) |
| 754 | + elif isinstance(proc_spec, v0_4.ZeroMeanUnitVarianceDescr): |
| 755 | + if proc_spec.kwargs.mode == "fixed": |
| 756 | + axes = inp.axes |
| 757 | + v5_proc_spec = _convert_proc(proc_spec, axes) |
| 758 | + assert isinstance( |
| 759 | + v5_proc_spec, v0_5.FixedZeroMeanUnitVarianceDescr |
| 760 | + ) # FIXME |
| 761 | + return FixedZeroMeanUnitVariance.from_proc_descr(v5_proc_spec, member_id) |
| 762 | + else: |
| 763 | + return ZeroMeanUnitVariance.from_proc_descr(proc_spec, member_id) |
| 764 | + else: |
| 765 | + assert_never(proc_spec) |
| 766 | + |
| 767 | + |
| 768 | +def preproc_v5_to_processing( |
| 769 | + inp: v0_5.InputTensorDescr, |
| 770 | + proc_spec: v0_5.PreprocessingDescr, |
| 771 | +) -> Processing: |
| 772 | + if isinstance(proc_spec, v0_5.BinarizeDescr): |
| 773 | + return Binarize.from_proc_descr(proc_spec, inp.id) |
| 774 | + elif isinstance(proc_spec, v0_5.ClipDescr): |
| 775 | + return Clip.from_proc_descr(proc_spec, inp.id) |
| 776 | + elif isinstance(proc_spec, v0_5.ScaleLinearDescr): |
| 777 | + return ScaleLinear.from_proc_descr(proc_spec, inp.id) |
| 778 | + elif isinstance(proc_spec, v0_5.ScaleRangeDescr): |
| 779 | + return ScaleRange.from_proc_descr(proc_spec, inp.id) |
| 780 | + elif isinstance(proc_spec, v0_5.SigmoidDescr): |
| 781 | + return Sigmoid.from_proc_descr(proc_spec, inp.id) |
| 782 | + elif isinstance(proc_spec, v0_5.EnsureDtypeDescr): |
| 783 | + return EnsureDtype.from_proc_descr(proc_spec, inp.id) |
| 784 | + elif isinstance(proc_spec, v0_5.ZeroMeanUnitVarianceDescr): |
| 785 | + return ZeroMeanUnitVariance.from_proc_descr(proc_spec, inp.id) |
| 786 | + elif isinstance(proc_spec, v0_5.FixedZeroMeanUnitVarianceDescr): |
| 787 | + return FixedZeroMeanUnitVariance.from_proc_descr(proc_spec, inp.id) |
| 788 | + else: |
| 789 | + assert_never(proc_spec) |
| 790 | + |
| 791 | + |
| 792 | +def postproc_v5_to_processing( |
| 793 | + inp: v0_5.OutputTensorDescr, |
| 794 | + proc_spec: v0_5.PostprocessingDescr, |
| 795 | +) -> Processing: |
| 796 | + if isinstance(proc_spec, v0_5.BinarizeDescr): |
| 797 | + return Binarize.from_proc_descr(proc_spec, inp.id) |
| 798 | + if isinstance(proc_spec, v0_5.ScaleMeanVarianceDescr): |
| 799 | + return ScaleMeanVariance.from_proc_descr(proc_spec, inp.id) |
| 800 | + elif isinstance(proc_spec, v0_5.ClipDescr): |
| 801 | + return Clip.from_proc_descr(proc_spec, inp.id) |
| 802 | + elif isinstance(proc_spec, v0_5.ScaleLinearDescr): |
| 803 | + return ScaleLinear.from_proc_descr(proc_spec, inp.id) |
| 804 | + elif isinstance(proc_spec, v0_5.ScaleRangeDescr): |
| 805 | + return ScaleRange.from_proc_descr(proc_spec, inp.id) |
| 806 | + elif isinstance(proc_spec, v0_5.SigmoidDescr): |
| 807 | + return Sigmoid.from_proc_descr(proc_spec, inp.id) |
| 808 | + elif isinstance(proc_spec, v0_5.EnsureDtypeDescr): |
| 809 | + return EnsureDtype.from_proc_descr(proc_spec, inp.id) |
| 810 | + elif isinstance(proc_spec, v0_5.ZeroMeanUnitVarianceDescr): |
| 811 | + return ZeroMeanUnitVariance.from_proc_descr(proc_spec, inp.id) |
| 812 | + elif isinstance(proc_spec, v0_5.FixedZeroMeanUnitVarianceDescr): |
| 813 | + return FixedZeroMeanUnitVariance.from_proc_descr(proc_spec, inp.id) |
| 814 | + else: |
| 815 | + assert_never(proc_spec) |
0 commit comments