集册 Java实例教程 把一个数字转换成一串核苷酸代码。

把一个数字转换成一串核苷酸代码。

欢马劈雪     最近更新时间:2020-01-02 10:19:05

510
把一个数字转换成一串核苷酸代码。

/*

 * Copyright (c) 2014. Real Time Genomics Limited.

 *

 * Use of this source code is bound by the Real Time Genomics Limited Software Licence Agreement

 * for Academic Non-commercial Research Purposes only.

 *

 * If you did not receive a license accompanying this file, a copy must first be obtained by email

 * from support@realtimegenomics.com.  On downloading, using and/or continuing to use this source

 * code you accept the terms of that license agreement and any amendments to those terms that may

 * be made from time to time by Real Time Genomics Limited.

 *//*时 代 J a v a 公 众 号 - nowjava.com*/

//package com.nowjava;


public class Main {

    /**

     * Convert a number into a string of nucleotide codes.

     * This is handy for displaying hash function bits.

     * @param x number to be displayed

     * @param len number of bits and codes to display.

     * @return string giving bit decomposition of x.

     */

    public static String toCodes(final long x, final int len) {

        if (len <= 0 || len > 32) {

            throw new IllegalArgumentException("length out of range=" + len);

        }

        final StringBuilder sb = new StringBuilder();

        final int left = 64 - 2 * len;

        long t = x << left;

        long u = x << (left + len);

        for (int i = 0; i < len; i++) {

            final int code = (t < 0 ? 2 : 0) + (u < 0 ? 1 : 0);

            sb.append(new String[] { "A", "C", "G", "T" }[code]);
            /** 
            来 自 
            N o w J a v a . c o m - 时  代  Java
            **/

            t = t << 1;

            u = u << 1;

        }

        assert u == 0;

        return sb.toString();

    }


    /**

     * Convert a number into a string of nucleotide codes.

     * This is handy for displaying hash function bits.

     * @param v0 first set of bits.

     * @param v1 second set of bits.

     * @param len number of bits and codes to display.

     * @return string giving bit decomposition of x.

     */

    public static String toCodes(final long v0, final long v1, final int len) {

        if (len <= 0 || len > 64) {

            throw new IllegalArgumentException("length out of range=" + len);

        }

        final StringBuilder sb = new StringBuilder();

        final int left = 64 - len;

        long t = v0 << left;

   
展开阅读全文