|
3 | 3 | from dataclasses import InitVar, dataclass, field |
4 | 4 | from typing import ( |
5 | 5 | Collection, |
| 6 | + List, |
6 | 7 | Literal, |
7 | 8 | Mapping, |
8 | 9 | Optional, |
|
17 | 18 | from typing_extensions import Self, assert_never |
18 | 19 |
|
19 | 20 | from bioimageio.spec.model import v0_4, v0_5 |
| 21 | +from bioimageio.spec.model.v0_5 import TensorId |
20 | 22 |
|
21 | 23 | from ._op_base import BlockedOperator, Operator |
22 | 24 | from .axis import AxisId, PerAxis |
@@ -688,3 +690,95 @@ def get_proc_class(proc_spec: ProcDescr): |
688 | 690 | return ZeroMeanUnitVariance |
689 | 691 | else: |
690 | 692 | assert_never(proc_spec) |
| 693 | + |
| 694 | +def preproc_v4_to_processing(inp: v0_4.InputTensorDescr, proc_spec: v0_4.PreprocessingDescr,) -> Processing: |
| 695 | + from bioimageio.spec.model.v0_5 import _convert_proc # pyright: ignore [reportPrivateUsage] |
| 696 | + member_id = TensorId(str(inp.name)) |
| 697 | + if isinstance(proc_spec, v0_4.BinarizeDescr): |
| 698 | + return Binarize.from_proc_descr(proc_spec, member_id) |
| 699 | + elif isinstance(proc_spec, v0_4.ClipDescr): |
| 700 | + return Clip.from_proc_descr(proc_spec, member_id) |
| 701 | + elif isinstance(proc_spec, v0_4.ScaleLinearDescr): |
| 702 | + return ScaleLinear.from_proc_descr(proc_spec, member_id) |
| 703 | + elif isinstance(proc_spec, v0_4.ScaleRangeDescr): |
| 704 | + return ScaleRange.from_proc_descr(proc_spec, member_id) |
| 705 | + elif isinstance(proc_spec, v0_4.SigmoidDescr): |
| 706 | + return Sigmoid.from_proc_descr(proc_spec, member_id) |
| 707 | + elif isinstance(proc_spec, v0_4.ZeroMeanUnitVarianceDescr): |
| 708 | + if proc_spec.kwargs.mode == "fixed": |
| 709 | + axes = inp.axes |
| 710 | + v5_proc_spec = _convert_proc(proc_spec, axes) |
| 711 | + assert isinstance(v5_proc_spec, v0_5.FixedZeroMeanUnitVarianceDescr) #FIXME |
| 712 | + return FixedZeroMeanUnitVariance.from_proc_descr(v5_proc_spec, member_id) |
| 713 | + else: |
| 714 | + return ZeroMeanUnitVariance.from_proc_descr(proc_spec, member_id) |
| 715 | + else: |
| 716 | + assert_never(proc_spec) |
| 717 | + |
| 718 | +def postproc_v4_to_processing(inp: v0_4.OutputTensorDescr, proc_spec: v0_4.PostprocessingDescr,) -> Processing: |
| 719 | + from bioimageio.spec.model.v0_5 import _convert_proc # pyright: ignore [reportPrivateUsage] |
| 720 | + member_id = TensorId(str(inp.name)) |
| 721 | + if isinstance(proc_spec, v0_4.BinarizeDescr): |
| 722 | + return Binarize.from_proc_descr(proc_spec, member_id) |
| 723 | + if isinstance(proc_spec, v0_4.ScaleMeanVarianceDescr): |
| 724 | + return ScaleMeanVariance.from_proc_descr(proc_spec, member_id) |
| 725 | + elif isinstance(proc_spec, v0_4.ClipDescr): |
| 726 | + return Clip.from_proc_descr(proc_spec, member_id) |
| 727 | + elif isinstance(proc_spec, v0_4.ScaleLinearDescr): |
| 728 | + return ScaleLinear.from_proc_descr(proc_spec, member_id) |
| 729 | + elif isinstance(proc_spec, v0_4.ScaleRangeDescr): |
| 730 | + return ScaleRange.from_proc_descr(proc_spec, member_id) |
| 731 | + elif isinstance(proc_spec, v0_4.SigmoidDescr): |
| 732 | + return Sigmoid.from_proc_descr(proc_spec, member_id) |
| 733 | + elif isinstance(proc_spec, v0_4.ZeroMeanUnitVarianceDescr): |
| 734 | + if proc_spec.kwargs.mode == "fixed": |
| 735 | + axes = inp.axes |
| 736 | + v5_proc_spec = _convert_proc(proc_spec, axes) |
| 737 | + assert isinstance(v5_proc_spec, v0_5.FixedZeroMeanUnitVarianceDescr) #FIXME |
| 738 | + return FixedZeroMeanUnitVariance.from_proc_descr(v5_proc_spec, member_id) |
| 739 | + else: |
| 740 | + return ZeroMeanUnitVariance.from_proc_descr(proc_spec, member_id) |
| 741 | + else: |
| 742 | + assert_never(proc_spec) |
| 743 | + |
| 744 | +def preproc_v5_to_processing(inp: v0_5.InputTensorDescr, proc_spec: v0_5.PreprocessingDescr,) -> Processing: |
| 745 | + if isinstance(proc_spec, v0_5.BinarizeDescr): |
| 746 | + return Binarize.from_proc_descr(proc_spec, inp.id) |
| 747 | + elif isinstance(proc_spec, v0_5.ClipDescr): |
| 748 | + return Clip.from_proc_descr(proc_spec, inp.id) |
| 749 | + elif isinstance(proc_spec, v0_5.ScaleLinearDescr): |
| 750 | + return ScaleLinear.from_proc_descr(proc_spec, inp.id) |
| 751 | + elif isinstance(proc_spec, v0_5.ScaleRangeDescr): |
| 752 | + return ScaleRange.from_proc_descr(proc_spec, inp.id) |
| 753 | + elif isinstance(proc_spec, v0_5.SigmoidDescr): |
| 754 | + return Sigmoid.from_proc_descr(proc_spec, inp.id) |
| 755 | + elif isinstance(proc_spec, v0_5.EnsureDtypeDescr): |
| 756 | + return EnsureDtype.from_proc_descr(proc_spec, inp.id) |
| 757 | + elif isinstance(proc_spec, v0_5.ZeroMeanUnitVarianceDescr): |
| 758 | + return ZeroMeanUnitVariance.from_proc_descr(proc_spec, inp.id) |
| 759 | + elif isinstance(proc_spec, v0_5.FixedZeroMeanUnitVarianceDescr): |
| 760 | + return FixedZeroMeanUnitVariance.from_proc_descr(proc_spec, inp.id) |
| 761 | + else: |
| 762 | + assert_never(proc_spec) |
| 763 | + |
| 764 | +def postproc_v5_to_processing(inp: v0_5.OutputTensorDescr, proc_spec: v0_5.PostprocessingDescr,) -> Processing: |
| 765 | + if isinstance(proc_spec, v0_5.BinarizeDescr): |
| 766 | + return Binarize.from_proc_descr(proc_spec, inp.id) |
| 767 | + if isinstance(proc_spec, v0_5.ScaleMeanVarianceDescr): |
| 768 | + return ScaleMeanVariance.from_proc_descr(proc_spec, inp.id) |
| 769 | + elif isinstance(proc_spec, v0_5.ClipDescr): |
| 770 | + return Clip.from_proc_descr(proc_spec, inp.id) |
| 771 | + elif isinstance(proc_spec, v0_5.ScaleLinearDescr): |
| 772 | + return ScaleLinear.from_proc_descr(proc_spec, inp.id) |
| 773 | + elif isinstance(proc_spec, v0_5.ScaleRangeDescr): |
| 774 | + return ScaleRange.from_proc_descr(proc_spec, inp.id) |
| 775 | + elif isinstance(proc_spec, v0_5.SigmoidDescr): |
| 776 | + return Sigmoid.from_proc_descr(proc_spec, inp.id) |
| 777 | + elif isinstance(proc_spec, v0_5.EnsureDtypeDescr): |
| 778 | + return EnsureDtype.from_proc_descr(proc_spec, inp.id) |
| 779 | + elif isinstance(proc_spec, v0_5.ZeroMeanUnitVarianceDescr): |
| 780 | + return ZeroMeanUnitVariance.from_proc_descr(proc_spec, inp.id) |
| 781 | + elif isinstance(proc_spec, v0_5.FixedZeroMeanUnitVarianceDescr): |
| 782 | + return FixedZeroMeanUnitVariance.from_proc_descr(proc_spec, inp.id) |
| 783 | + else: |
| 784 | + assert_never(proc_spec) |
0 commit comments