All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.repseq.cli.StatAction Maven / Gradle / Ivy

package io.repseq.cli;

import com.beust.jcommander.Parameter;
import com.beust.jcommander.Parameters;
import com.milaboratory.cli.Action;
import com.milaboratory.cli.ActionHelper;
import com.milaboratory.cli.ActionParameters;
import gnu.trove.iterator.TObjectIntIterator;
import gnu.trove.map.hash.TObjectIntHashMap;
import io.repseq.core.*;

import java.util.List;

public class StatAction implements Action {
    final Params params = new Params();

    @Override
    public void go(ActionHelper helper) throws Exception {
        VDJCLibraryRegistry reg = VDJCLibraryRegistry.getDefault();
        reg.registerLibraries(params.getInput());

        for (VDJCLibrary vdjcLibrary : reg.getLoadedLibraries()) {
            System.out.println("LibraryID (libraryName:taxonId): " + vdjcLibrary.getLibraryId());
            TObjectIntHashMap geneTypeCount = new TObjectIntHashMap<>();
            for (VDJCGene vdjcGene : vdjcLibrary.getGenes())
                geneTypeCount.adjustOrPutValue(vdjcGene.getGeneType(), 1, 1);
            System.out.println();

            TObjectIntIterator it = geneTypeCount.iterator();
            while (it.hasNext()) {
                it.advance();
                System.out.println(it.key() + " (total records " + it.value() + "):");

                TObjectIntHashMap byChains = new TObjectIntHashMap<>();

                for (VDJCGene vdjcGene : vdjcLibrary.getGenes()) {
                    if (vdjcGene.getGeneType() != it.key())
                        continue;

                    byChains.adjustOrPutValue(vdjcGene.getChains(), 1, 1);
                }

                TObjectIntIterator itByChains = byChains.iterator();
                while (itByChains.hasNext()) {
                    itByChains.advance();

                    System.out.println(itByChains.key() + ": " + itByChains.value());
                }
            }

            System.out.println();
            System.out.println("==============");
            System.out.println();
        }
    }

    @Override
    public String command() {
        return "stat";
    }

    @Override
    public ActionParameters params() {
        return params;
    }

    @Parameters(commandDescription = "Print library statistics.")
    public static final class Params extends ActionParameters {
        @Parameter(description = "input_library.json", arity = 1)
        public List parameters;

        public String getInput() {
            return parameters.get(0);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy