Code Duplication    Length = 36-39 lines in 2 locations

mandos/entries/entries.py 2 locations

@@ 145-183 (lines=39) @@
142
        return cls._run(built, path, to, check, log, quiet, verbose, no_setup)
143
144
145
class ChemblQsarPredictions(Entry[TargetPredictionSearch]):
146
    @classmethod
147
    def run(
148
        cls,
149
        path: Path = CommonArgs.compounds,
150
        key: str = EntryArgs.key("chembl:predictions"),
151
        to: Optional[Path] = CommonArgs.to_single,
152
        taxa: str = CommonArgs.taxa,
153
        traversal: str = EntryArgs.traversal_strategy,
154
        target_types: str = EntryArgs.target_types,
155
        min_threshold: float = EntryArgs.min_threshold,
156
        as_of: Optional[str] = CommonArgs.as_of,
157
        check: bool = EntryArgs.check,
158
        log: Optional[Path] = CommonArgs.log_path,
159
        quiet: bool = CommonArgs.quiet,
160
        verbose: bool = CommonArgs.verbose,
161
        no_setup: bool = CommonArgs.no_setup,
162
    ) -> Searcher:
163
        """
164
        Predicted target binding from ChEMBL.
165
166
        https://mandos-chem.readthedocs.io/en/latest/binding.html
167
168
        OBJECT: ChEMBL preferred target name
169
170
        PREDICATE: Either "binding:yes", "binding:no", or "binding:unknown".
171
172
        WEIGHT: The sqrt pchembl multiplied by a normalized odds ratio from the confidence set
173
        """
174
        built = TargetPredictionSearch(
175
            key=key,
176
            api=Apis.Chembl,
177
            scrape=Apis.ChemblScrape,
178
            taxa=EntryUtils.get_taxa(taxa),
179
            traversal=traversal,
180
            target_types=EntryUtils.get_target_types(target_types),
181
            min_threshold=min_threshold,
182
        )
183
        return cls._run(built, path, to, check, log, quiet, verbose, no_setup)
184
185
186
class EntryChemblTrials(Entry[IndicationSearch]):
@@ 107-142 (lines=36) @@
104
        return cls._run(built, path, to, check, log, quiet, verbose, no_setup)
105
106
107
class EntryChemblMechanism(Entry[MechanismSearch]):
108
    @classmethod
109
    def run(
110
        cls,
111
        path: Path = CommonArgs.compounds,
112
        key: str = EntryArgs.key("chembl:mechanism"),
113
        to: Optional[Path] = CommonArgs.to_single,
114
        taxa: Optional[str] = CommonArgs.taxa,
115
        traversal: str = EntryArgs.traversal_strategy,
116
        target_types: str = EntryArgs.target_types,
117
        min_confidence: Optional[int] = EntryArgs.min_confidence,
118
        as_of: Optional[str] = CommonArgs.as_of,
119
        check: bool = EntryArgs.check,
120
        log: Optional[Path] = CommonArgs.log_path,
121
        quiet: bool = CommonArgs.quiet,
122
        verbose: bool = CommonArgs.verbose,
123
        no_setup: bool = CommonArgs.no_setup,
124
    ) -> Searcher:
125
        """
126
        Mechanism of action (MoA) data from ChEMBL.
127
128
        OBJECT: ChEMBL preferred target name
129
130
        PREDICATE: Target action; e.g. "agonist" or "positive allosteric modulator"
131
132
        WEIGHT: 1.0
133
        """
134
        built = MechanismSearch(
135
            key=key,
136
            api=Apis.Chembl,
137
            taxa=EntryUtils.get_taxa(taxa),
138
            traversal_strategy=traversal,
139
            allowed_target_types=EntryUtils.get_target_types(target_types),
140
            min_confidence_score=min_confidence,
141
        )
142
        return cls._run(built, path, to, check, log, quiet, verbose, no_setup)
143
144
145
class ChemblQsarPredictions(Entry[TargetPredictionSearch]):