Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java生物信息学-获取字符串中多个特定单词的所有索引_Java_Bioinformatics_Biojava - Fatal编程技术网

Java生物信息学-获取字符串中多个特定单词的所有索引

Java生物信息学-获取字符串中多个特定单词的所有索引,java,bioinformatics,biojava,Java,Bioinformatics,Biojava,我在大学的生物信息学课程中有一个项目,其中一个项目是基因预测 我今天的问题是如何获取字符串中多个特定单词的所有索引。例如,在我这里的例子中,我想查找 起始密码子(“AUG”)和终止密码子(“UAA”、“UAG”、“UGA”)并使用它们预测基因,只需尝试做开放阅读框(ORF) 这是我的初始代码: private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

我在大学的生物信息学课程中有一个项目,其中一个项目是基因预测

我今天的问题是如何获取字符串中多个特定单词的所有索引。例如,在我这里的例子中,我想查找 起始密码子
(“AUG”)
和终止密码子
(“UAA”、“UAG”、“UGA”)
并使用它们预测基因,只需尝试做开放阅读框(ORF)

这是我的初始代码:

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    //   textArea1.setText(null);\
    String str = jTextField1.getText(), y = "", gene = "", dnax = "", text = "";
    SymbolList dna = null;
    int start_codon_index = -1, stop_codon_index = -1;
if ("".equals(str)) {
    jTextArea1.setText("No DNA strand entered.. ");

} else {
    if (checksum(str) == 100) {
        try {
            dna = DNATools.createDNA(str);
        } catch (IllegalSymbolException ex) {
            Logger.getLogger(m.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            dna = DNATools.toRNA(dna);
        } catch (IllegalAlphabetException ex) {
            Logger.getLogger(m.class.getName()).log(Level.SEVERE, null, ex);
        }
        dnax = dna.seqString().toUpperCase();
        if (dnax.length() % 3 != 0) {
            if (dnax.length() % 3 == 1) {
                dnax += "-";
            }
            if (dnax.length() % 3 == 2) {
                dnax += "-";
            }
        }
        //  System.out.println(dnax);
        for (int g = 0; g < dnax.length(); g += 3) {
            y = dnax.substring(g, g + 3);
            if ("AUG".equals(y)) {
                start_codon_index = g;
            } else if (start_codon_index != -1 && ("UGA".equals(y) || "UAG".equals(y) || "UAA".equals(y))) {

                stop_codon_index = g + 3;

            }
        }

        if (stop_codon_index != -1 && start_codon_index != -1) {
            String k = "";
            int a = 0;
            for (a = start_codon_index; a < stop_codon_index; a++) {
                gene += dnax.charAt(a);

            }
            text += "\nGene start position:  " + start_codon_index + "\nGene end position:  " + a + "\n Gene: " + gene;
            jTextArea1.setText(text);

        } else {

            jTextArea1.setText("No genes found in Seq: " + dnax);

        }
    } else {
        jTextArea1.setText("Text entered is not a DNA strand..");
    }
}
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
//textArea1.setText(空)\
字符串str=jTextField1.getText(),y=,gene=,dnax=,text=;
SymbolList dna=null;
int起始密码子索引=-1,终止密码子索引=-1;
如果(“.”等于(str)){
jTextArea1.setText(“未输入DNA链”);
}否则{
if(校验和(str)==100){
试一试{
dna=DNATools.createDNA(str);
}捕获(非法SYMBOLEXCEPTION){
Logger.getLogger(m.class.getName()).log(Level.SEVERE,null,ex);
}
试一试{
dna=DNATools.toRNA(dna);
}捕获(IllegalHabetException例外){
Logger.getLogger(m.class.getName()).log(Level.SEVERE,null,ex);
}
dnax=dna.seqString().toUpperCase();
如果(dnax.length()%3!=0){
如果(dnax.length()%3==1){
dnax+=“-”;
}
如果(dnax.length()%3==2){
dnax+=“-”;
}
}
//系统输出打印LN(dnax);
对于(int g=0;g
下面是checksum()方法:

私有静态整数校验和(字符串x){
int i=0,checks=0,count=0;
字符c;
x=x.toUpperCase();
而(i

我尝试过其他的解决办法,但都不管用。欢迎任何帮助/建议。

我想你是在问如何找到这些特定密码子的索引?dnax是您要检查的字符串吗

您可以使用
indexOf(String str,int from index)
。如果没有找到子字符串,则返回-1

所以像这样的事情也许会有帮助

List<Integer> startCodonIndices = new ArrayList<Integer>();
int index;
for (int i=0; i+3<dnax.length(); i++) {
    index = indexOf("AUG", i);
    startCodonIndices.add(index);
}
List startDonIndexes=new ArrayList();
整数指数;

对于(int i=0;i+3这是我根据您在我的代码中的建议更改和添加的内容:

 for (int i = 0; i + 3 < dnax.length(); i++) {
                    index = indexOf("AUG", i);
                    startCodonIndices.add(index);
                }
                List stopCodonIndices = new ArrayList();
                int i2, i3, i4;
                for (int j = 0; j + 3 < dnax.length(); j++) {
                    i2 = indexOf("UGA", j);
                    i3 = indexOf("UAA", j);
                    i4 = indexOf("UAG", j);
                    stopCodonIndices.add(i2);
                    stopCodonIndices.add(i3);
                    stopCodonIndices.add(i4);
                }
                for (int n = 0; n < dnax.length(); n++) {
                    for (int k = 0; k < startCodonIndices.size() - 1; k++) {
                        for (int h = 0; h < stopCodonIndices.size() - 1; h++) {
                            gene = dnax.substring(k, h);
                            jTextArea1.append("\n" + gene);
                        }
                    }
                }
错误:

Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 10
at java.lang.String.substring(String.java:1951)
    at bio.m.jButton3ActionPerformed(m.java:365)
    at bio.m.access$200(m.java:36)
    at bio.m$3.actionPerformed(m.java:142)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at com.jtattoo.plaf.BaseButtonListener.mouseReleased(BaseButtonListener.java:60)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:751)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:702)
    at java.awt.EventQueue$3.run(EventQueue.java:696)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:724)
    at java.awt.EventQueue$4.run(EventQueue.java:722)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:721)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
它返回时,您可以看到一个基因,但编辑的代码有问题

编辑:代码终于完成了它应该做的事情:从我的RNA序列中获取起始密码子和终止密码子 这是我最后的编辑:

        List startCodonIndices = new ArrayList();
        int index = 0;
        for (int i = 0; i + 3 < dnax.length(); i++) {

            index = dnax.indexOf("AUG", i);
            if (index != -1) {
                startCodonIndices.add(index);
            }
            List stopCodonIndices = new ArrayList();
            int i2, i3, i4;
            for (int j = 0; j + 3 < dnax.length(); j++) {

                i2 = dnax.indexOf("UGA", j);
                System.out.println("i2: "+i2);
                if (i2 != -1) {
                    stopCodonIndices.add(i2);
                }
                i3 = dnax.indexOf("UAA", j);
                System.out.println("i3: "+i3);
                if (i3 != -1) {
                    stopCodonIndices.add(i3);
                }
                i4 = dnax.indexOf("UAG", j);
                System.out.println("i4: "+i4);
                if (i4 != -1) {
                    stopCodonIndices.add(i4);
                }

            }
            for (int v = 0; v < startCodonIndices.size(); v++) {
                for (int h = 0; h < stopCodonIndices.size(); h++) {
               gene = dnax.substring((int)startCodonIndices.get(v), (int)stopCodonIndices.get(h)+3);
                jTextArea1.setText(gene+"\n");
            }}
List startDonIndexes=new ArrayList();
int指数=0;
对于(int i=0;i+3

谢谢pepers的帮助!

这对起始密码子非常有效;虽然,终止密码子仍然给我带来麻烦这是我添加到代码中的内容,它产生了正确的基因,但有一个例外(IndexOutOfBounds)-听着,对不起,我忍不住了,我在第一次发表评论后就上床睡觉了,哈哈,但最好是你自己想出来。干得好!
Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 10
at java.lang.String.substring(String.java:1951)
    at bio.m.jButton3ActionPerformed(m.java:365)
    at bio.m.access$200(m.java:36)
    at bio.m$3.actionPerformed(m.java:142)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at com.jtattoo.plaf.BaseButtonListener.mouseReleased(BaseButtonListener.java:60)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:751)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:702)
    at java.awt.EventQueue$3.run(EventQueue.java:696)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:724)
    at java.awt.EventQueue$4.run(EventQueue.java:722)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:721)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
        List startCodonIndices = new ArrayList();
        int index = 0;
        for (int i = 0; i + 3 < dnax.length(); i++) {

            index = dnax.indexOf("AUG", i);
            if (index != -1) {
                startCodonIndices.add(index);
            }
            List stopCodonIndices = new ArrayList();
            int i2, i3, i4;
            for (int j = 0; j + 3 < dnax.length(); j++) {

                i2 = dnax.indexOf("UGA", j);
                System.out.println("i2: "+i2);
                if (i2 != -1) {
                    stopCodonIndices.add(i2);
                }
                i3 = dnax.indexOf("UAA", j);
                System.out.println("i3: "+i3);
                if (i3 != -1) {
                    stopCodonIndices.add(i3);
                }
                i4 = dnax.indexOf("UAG", j);
                System.out.println("i4: "+i4);
                if (i4 != -1) {
                    stopCodonIndices.add(i4);
                }

            }
            for (int v = 0; v < startCodonIndices.size(); v++) {
                for (int h = 0; h < stopCodonIndices.size(); h++) {
               gene = dnax.substring((int)startCodonIndices.get(v), (int)stopCodonIndices.get(h)+3);
                jTextArea1.setText(gene+"\n");
            }}