neurodata/ndmg

View on GitHub

Showing 78 of 78 total issues

Similar blocks of code found in 3 locations. Consider refactoring.
Open

            anat_t = glob(op.join(inDir, "sub-{}".format(subj), "anat",
                                  "*_T1w.nii*")) +\
                     glob(op.join(inDir, "sub-{}".format(subj), "ses-*",
                                  "anat", "*_T1w.nii*"))
Severity: Major
Found in ndmg/utils/bids.py and 2 other locations - About 2 hrs to fix
ndmg/utils/bids.py on lines 57..60
ndmg/utils/bids.py on lines 61..64

Duplicated Code

Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

Tuning

This issue has a mass of 50.

We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

Refactorings

Further Reading

Function compute_metrics has 46 lines of code (exceeds 25 allowed). Consider refactoring.
Open

def compute_metrics(fs, outdir, atlas, verb=False):
    """
    Given a set of files and a directory to put things, loads graphs and
    performs set of analyses on them, storing derivatives in a pickle format
    in the desired output location.
Severity: Minor
Found in ndmg/stats/qa_graphs.py - About 1 hr to fix

    Function make_graph has a Cognitive Complexity of 14 (exceeds 5 allowed). Consider refactoring.
    Open

        def make_graph(self, streamlines, attr=None):
            """
            Takes streamlines and produces a graph
    
            **Positional Arguments:**
    Severity: Minor
    Found in ndmg/graph/graph.py - About 1 hr to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

                multi.layout['y'+key]['tickvals'] = [0, dims/2-1, dims-1]
    Severity: Major
    Found in ndmg/stats/qa_graphs_plotting.py and 1 other location - About 1 hr to fix
    ndmg/stats/qa_graphs_plotting.py on lines 114..114

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 47.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

                multi.layout['x'+key]['tickvals'] = [0, dims/2-1, dims-1]
    Severity: Major
    Found in ndmg/stats/qa_graphs_plotting.py and 1 other location - About 1 hr to fix
    ndmg/stats/qa_graphs_plotting.py on lines 115..115

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 47.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

        def align_epi(self, epi, t1, brain, out):
            """
            Algins EPI images to T1w image
            """
            cmd = 'epi_reg --epi={} --t1={} --t1brain={} --out={}'
    Severity: Major
    Found in ndmg/register/register.py and 1 other location - About 1 hr to fix
    ndmg/register/register.py on lines 116..133

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 45.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Function plot_rgb has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
    Open

    def plot_rgb(im):
        plt.rcParams.update({'axes.labelsize': 'x-large',
                             'axes.titlesize': 'x-large'})
    
        if im.shape == (182, 218, 182):
    Severity: Minor
    Found in ndmg/stats/qa_tensor.py - About 1 hr to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function plot_overlays has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
    Open

    def plot_overlays(atlas, b0, cmaps):
        plt.rcParams.update({'axes.labelsize': 'x-large',
                             'axes.titlesize': 'x-large'})
    
        if b0.shape == (182, 218, 182):
    Severity: Minor
    Found in ndmg/stats/qa_reg.py - About 1 hr to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

        def applyxfm(self, inp, ref, xfm, aligned):
            """
            Aligns two images with a given transform
    
            **Positional Arguments:**
    Severity: Major
    Found in ndmg/register/register.py and 1 other location - About 1 hr to fix
    ndmg/register/register.py on lines 83..89

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 45.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

        print("Subject Maxes: " + ", ".join(["%.2f" % np.max(eigs[key])
                                             for key in eigs.keys()]))
    Severity: Major
    Found in ndmg/stats/qa_graphs.py and 1 other location - About 1 hr to fix
    ndmg/stats/qa_graphs.py on lines 146..148

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 45.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

    def show_means(data):
        print("Subject Means: " + ", ".join(["%.2f" % np.mean(data[key])
                                             for key in data.keys()]))
    Severity: Major
    Found in ndmg/stats/qa_graphs.py and 1 other location - About 1 hr to fix
    ndmg/stats/qa_graphs.py on lines 123..124

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 45.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Function crawl_bids_directory has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
    Open

    def crawl_bids_directory(inDir, subjs, sesh):
        """
        Given a BIDS directory and optionally list of sessions and subjects,
        crawls the path and returns pointers to all relevant files for analysis.
        """
    Severity: Minor
    Found in ndmg/utils/bids.py - About 1 hr to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function ndmg_dwi_pipeline has 33 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

    def ndmg_dwi_pipeline(dwi, bvals, bvecs, mprage, atlas, mask, labels, outdir,
                      clean=False, fmt='edgelist'):
        """
        Creates a brain graph from MRI data
        """
    Severity: Minor
    Found in ndmg/scripts/ndmg_dwi_pipeline.py - About 1 hr to fix

      Function main has 33 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

      def main():
          parser = ArgumentParser(description="This is an end-to-end connectome \
                                  estimation pipeline from sMRI and DTI images")
      
          parser.add_argument('bids_dir', help='The directory with the input dataset'
      Severity: Minor
      Found in ndmg/scripts/ndmg_bids.py - About 1 hr to fix

        Function ndmg_dwi_pipeline has 10 arguments (exceeds 4 allowed). Consider refactoring.
        Open

        def ndmg_dwi_pipeline(dwi, bvals, bvecs, mprage, atlas, mask, labels, outdir,
        Severity: Major
        Found in ndmg/scripts/ndmg_dwi_pipeline.py - About 1 hr to fix

          Function main has 29 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

          def main():
          
              ni = NI.NDIngest()
          
              """
          Severity: Minor
          Found in ndmg/utils/mri_autoingest.py - About 1 hr to fix

            Function create_json has 9 arguments (exceeds 4 allowed). Consider refactoring.
            Open

            def create_json(bucket, path, threads, jobdir, group=False, credentials=None,
            Severity: Major
            Found in ndmg/scripts/ndmg_cloud.py - About 1 hr to fix

              Function align has 9 arguments (exceeds 4 allowed). Consider refactoring.
              Open

                  def align(self, inp, ref, xfm=None, out=None, dof=12, searchrad=True,
              Severity: Major
              Found in ndmg/register/register.py - About 1 hr to fix

                Function main has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                Open

                def main():
                    parser = ArgumentParser(description="This is an end-to-end connectome \
                                            estimation pipeline from sMRI and DTI images")
                
                    parser.add_argument('state', choices=['session',
                Severity: Minor
                Found in ndmg/scripts/ndmg_cloud.py - About 1 hr to fix

                Cognitive Complexity

                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                A method's cognitive complexity is based on a few simple rules:

                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                • Code is considered more complex for each "break in the linear flow of the code"
                • Code is considered more complex when "flow breaking structures are nested"

                Further reading

                Identical blocks of code found in 2 locations. Consider refactoring.
                Open

                        edge_list = [(k[0], k[1], v) for k, v in self.edge_dict.items()]
                Severity: Major
                Found in ndmg/graph/graph.py and 1 other location - About 1 hr to fix
                ndmg/graph/graph.py on lines 105..105

                Duplicated Code

                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                Tuning

                This issue has a mass of 38.

                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                Refactorings

                Further Reading

                Severity
                Category
                Status
                Source
                Language