-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGenBank2Text.cs
96 lines (85 loc) · 2.88 KB
/
GenBank2Text.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// GenBank2Text.cs
//
// Copyright (C) 2008 Jacob, [email protected]
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
using System;
using System.IO;
namespace GenBank2Text {
public class ClsGenBank2Text : IGenBank2Text {
string filename;
string saveDirectory;
StreamReader sr;
StreamWriter sw;
StreamWriter swOutList;
public void Load(string file)
{
this.filename = Path.GetFullPath(file);
sr = File.OpenText(this.filename);
saveDirectory = Path.GetDirectoryName(this.filename);
}
public void GenBank2Text()
{
string line = "";
short index = 0;
string[] tokensGenBankFlatFile = {"LOCUS","//"};
char[] token = {' '};
string ContigName = "";
string BlockGenBankStart = "";
string BlockGenBankEnd = "";
string newTextFile = "";
Console.WriteLine("Creating a empty output list....");
swOutList = File.CreateText(saveDirectory + "/GenBank2Text.out.list");
Console.WriteLine("Parsing....");
do
{
try {
line = sr.ReadLine();
index = (short)line.IndexOf(tokensGenBankFlatFile[0]);
if(index!=-1) { //found LOCUS?
BlockGenBankStart = line;
line = line.Substring(5,(line.Length-5));
line = line.Trim();
index = (short)line.IndexOf(token[0]);
ContigName = line.Substring(0,index);
swOutList.WriteLine(ContigName);
Console.WriteLine(ContigName + " appended to out list....");
//start to generate a new Text Gen Bank Flat File
newTextFile = saveDirectory + "/" + ContigName + ".txt";
sw = File.CreateText(newTextFile);
sw.WriteLine(BlockGenBankStart);
Console.WriteLine("Extracting data block with identifier: {0} on file:{1}",ContigName,newTextFile);
continue;
}
index = (short)line.IndexOf(tokensGenBankFlatFile[1]);
if(index!=-1) { //found end block
BlockGenBankEnd = line;
sw.WriteLine(BlockGenBankEnd);
sw.Close();
continue;
}
if(line != "" && line != " " && line != string.Empty)
sw.WriteLine(line);
}//end_try
catch(Exception e) {
;
}//end_try_catch
}//end_while
while(line!=null);
swOutList.Close();
sr.Close();
}
}
}