Code Duplication    Length = 21-41 lines in 2 locations

src/apexpy/apex.py 2 locations

@@ 343-383 (lines=41) @@
340
        # if array is returned, dtype is object, so convert to float
341
        return np.float64(glat), np.float64(glon), np.float64(error)
342
343
    def _apex2qd_nonvectorized(self, alat, alon, height):
344
        """Convert from apex to quasi-dipole (not-vectorised)
345
346
        Parameters
347
        -----------
348
        alat : (float)
349
            Apex latitude in degrees
350
        alon : (float)
351
            Apex longitude in degrees
352
        height : (float)
353
            Height in km
354
355
        Returns
356
        ---------
357
        qlat : (float)
358
            Quasi-dipole latitude in degrees
359
        qlon : (float)
360
            Quasi-diplole longitude in degrees
361
        """
362
363
        alat = helpers.checklat(alat, name='alat')
364
365
        # convert modified apex to quasi-dipole:
366
        qlon = alon
367
368
        # apex height
369
        hA = self.get_apex(alat)
370
371
        if hA < height:
372
            if np.isclose(hA, height, rtol=0, atol=1e-5):
373
                # allow for values that are close
374
                hA = height
375
            else:
376
                estr = 'height {:.3g} is > apex height '.format(np.max(height))
377
                estr += '{:.3g} for alat {:.3g}'.format(hA, alat)
378
                raise ApexHeightError(estr)
379
380
        qlat = np.sign(alat) * np.degrees(np.arccos(np.sqrt((self.RE + height) /
381
                                                            (self.RE + hA))))
382
383
        return qlat, qlon
384
385
    def apex2qd(self, alat, alon, height):
386
        """Converts modified apex to quasi-dipole coordinates.
@@ 416-436 (lines=21) @@
413
        # if array is returned, the dtype is object, so convert to float
414
        return np.float64(qlat), np.float64(qlon)
415
416
    def _qd2apex_nonvectorized(self, qlat, qlon, height):
417
418
        qlat = helpers.checklat(qlat, name='qlat')
419
420
        alon = qlon
421
        hA = self.get_apex(qlat, height) # apex height
422
423
        if hA < self.refh:
424
            if np.isclose(hA, self.refh, rtol=0, atol=1e-5):
425
                # allow for values that are close
426
                hA = self.refh
427
            else:
428
                estr = 'apex height ({:.3g}) is < reference height '.format(hA)
429
                estr += '({:.3g}) for qlat {:.3g}'.format(self.refh, qlat)
430
                raise ApexHeightError(estr)
431
432
        alat = np.sign(qlat) * np.degrees(np.arccos(np.sqrt((self.RE +
433
                                                             self.refh) /
434
                                                            (self.RE + hA))))
435
436
        return alat, alon
437
438
    def qd2apex(self, qlat, qlon, height):
439
        """Converts quasi-dipole to modified apex coordinates.