Repository 'proteore_prot_features'
hg clone https://toolshed.g2.bx.psu.edu/repos/proteore/proteore_prot_features

Changeset 1:bfc679370c64 (2018-02-16)
Previous changeset 0:e3b52db3d583 (2017-11-26) Next changeset 2:6659a32876ea (2018-02-27)
Commit message:
planemo upload commit 5774fd6a5a746f36f6bf4671a51a39ea2b978300-dirty
modified:
prot_features.xml
added:
README.rst
protein_features.R
test-data/Add_information_from_neXtProt.tsv
test-data/FKW_ID_Converter_Lacombe_et_al_2017_OK.txt
removed:
get_data_nextprot.R
b
diff -r e3b52db3d583 -r bfc679370c64 README.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/README.rst Fri Feb 16 04:06:16 2018 -0500
b
@@ -0,0 +1,28 @@
+Wrapper for Protein Features tool
+=========================
+
+**Authors**
+
+T.P. Lien Nguyen, Florence Combes, Yves Vandenbrouck CEA, INSERM, CNRS, Grenoble-Alpes University, BIG Institute, FR
+
+Sandra Dérozier, Olivier Rué, Christophe Caron, Valentin Loux INRA, Paris-Saclay University, MAIAGE Unit, Migale Bioinformatics platform
+
+This work has been partially funded through the French National Agency for Research (ANR) IFB project.
+
+Contact support@proteore.org for any questions or concerns about the Galaxy implementation of this tool.
+
+=========================
+
+This tool add annotation (protein features) from neXtProt database (knowledge base on human proteins) to your protein IDs list.
+
+**Input**
+
+Input can be a file containing multiple fields but with **at least one column of Uniprot accession number or neXtProt IDs**. If your input file contains other type of IDs, please use the ID_Converter tool.  
+
+**Databases**
+
+Annotations have been retrieved from the neXtProt database (Gaudet et  al., 2017) via a REST API (https://academic.oup.com/nar/article/43/D1/D764/2439066#40348985)
+
+**Outputs**
+
+The output is a tabular file. The initial columns are kept and columns are be added according to which annotation you have selected. 
\ No newline at end of file
b
diff -r e3b52db3d583 -r bfc679370c64 get_data_nextprot.R
--- a/get_data_nextprot.R Sun Nov 26 19:45:52 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
[
@@ -1,138 +0,0 @@
-# Usage : Rscript --vanilla get_data_nextprot.R --inputtype copypaste (or
-# tabfile) --input file.txt --nextprot result_nextprot.txt --column column
-# --argsP1 IsoPoint,SeqLength,MW
-# --argsP2 Chr,SubcellLocations --argsP3 Diseases --type id nextprot (uniprot)
-# --output output.txt --header TRUE
-
-# e.g : 
-# Rscript --vanilla get_data_nextprot.R --inputtype copypaste  --input P01133 P00533 P62158 Q16566 P31323 P17612 P10644
-# P22612 P31321 P13861 P22694 P25098 P16220 Q14573 Q14571 Q14643 Q05655 Q02156
-# P19174 O43865 Q01064 P54750 Q14123 P51828 Q08828 O60266 Q08462 O60503 O43306
-# Q8NFM4 O95622 P40145 P17252 P05129 --nextprot
-# result_nextprot.txt--column c1 --argsP1 IsoPoint --argsP2
-# Chr --argsP3 Diseases --typeid uniprot --output output.txt --header FALSE
-
-# Useful functions
-
-'%!in%' <- function(x,y)!('%in%'(x,y))
-
-# Parse arguments
-
-args = commandArgs(trailingOnly = TRUE)
-
-# create a list of the arguments from the command line, separated by a blank space
-hh <- paste(unlist(args),collapse=' ')
-# delete the first element of the list which is always a blank space
-listoptions <- unlist(strsplit(hh,'--'))[-1]
-# for each input, split the arguments with blank space as separator, unlist, and delete the first element which is the input name (e.g --protalas) 
-options.args <- sapply(listoptions,function(x){
-         unlist(strsplit(x, ' '))[-1]
-        })
-# same as the step above, except that only the names are kept
-options.names <- sapply(listoptions,function(x){
-  option <-  unlist(strsplit(x, ' '))[1]
-})
-names(options.args) <- unlist(options.names)
-
-
-typeinput = as.character(options.args[1])
-nextprot = read.table(as.character(options.args[3]),header=TRUE,sep="\t",quote="\"") 
-listfile = as.character(options.args[2])
-column = as.numeric(gsub("c","",options.args[4]))
-P1_args = as.character(options.args[5])
-P2_args = as.character(options.args[6])
-P3_args = as.character(options.args[7])
-typeid = as.character(options.args[8])
-filename = as.character(options.args[9])
-header = as.character(options.args[10])
-
-if (typeinput=="copypaste"){
-  sample = as.data.frame(unlist(listfile))
-  sample = sample[,column]
-}
-if (typeinput=="tabfile"){
-  
-  if (header=="TRUE"){
-    listfile = read.table(listfile,header=TRUE,sep="\t",quote="\"",fill=TRUE)
-  }else{
-    listfile = read.table(listfile,header=FALSE,sep="\t",quote="\"",fill=TRUE)
-  }
-  sample = listfile[,column]
-
-}
-# Change the sample ids if they are uniprot ids to be able to match them with
-# Nextprot data
-if (typeid=="uniprot"){
-  sample = gsub("^","NX_",sample)
-}
-
-# Select user input protein ids in nextprot
-
-if ((length(sample[sample %in% nextprot[,1]]))==0){
-
-    write.table("None of the input ids are can be found in Nextprot",file=filename,sep="\t",quote=FALSE,col.names=TRUE,row.names=FALSE)
-
-}else{ 
-
-
- to_keep = c()
-
- if (P1_args!="None"){
-   P1_args = unlist(strsplit(P1_args,","))
-   for (arg in P1_args){
-     colnb = which(colnames(nextprot) %in% c(arg))
-     to_keep = c(to_keep,colnb)    
-   }
- }
-
- if (P2_args!="None"){
-   P2_args = unlist(strsplit(P2_args,","))
-   for (arg in P2_args){
-     colnb = which(colnames(nextprot) %in% c(arg))
-     to_keep = c(to_keep,colnb)    
-   }
- }
-
- if (P3_args!="None"){
-   P3_args = unlist(strsplit(P3_args,","))
-   for (arg in P3_args){
-     colnb = which(colnames(nextprot) %in% c(arg))
-     to_keep = c(to_keep,colnb)    
-   }
- }
- to_keep = c(1,to_keep)
- lines = which(nextprot[,1] %in% sample)
-  data = nextprot[lines,]
-  
-  data = data[,to_keep]
-
-
-  # if only some of the proteins were not found in nextprot they will be added to
- # the file with the fields "Protein not found in Nextprot"
- if (length(which(sample %!in% nextprot[,1]))!=0){
-   proteins_not_found = as.data.frame(sample[which(sample %!in% nextprot[,1])])
-
-   proteins_not_found = cbind(proteins_not_found,matrix(rep("Protein not found in Nextprot",length(proteins_not_found)),nrow=length(proteins_not_found),ncol=length(colnames(data))-1))
-
-  colnames(proteins_not_found)=colnames(data) 
-  data = rbind(data,proteins_not_found)
- }
-  
-  # Merge original data and data selected from nextprot
-
-  # Before that, if the initial ids were uniprot ids change them back from
-  # Nextprot to uniprot ids in data 
-  if (typeid=="uniprot"){
-    data[,1] = gsub("^NX_","",data[,1])
-  }
-  data = merge(listfile, data, by.x = column, by.y=1)
-  if (typeid=="uniprot"){
-    colnames(data)[1] = "UniprotID"
-  }
-  if (typeid=="nextprot"){
-    colnames(data)[1] = "NextprotID"
-  }
-  # Write result
-  write.table(data,file=filename,sep="\t",quote=FALSE,col.names=TRUE,row.names=FALSE)
-
-}
b
diff -r e3b52db3d583 -r bfc679370c64 prot_features.xml
--- a/prot_features.xml Sun Nov 26 19:45:52 2017 -0500
+++ b/prot_features.xml Fri Feb 16 04:06:16 2018 -0500
[
b'@@ -1,6 +1,6 @@\n <tool id="prot_features" name="Protein Features (neXtProt)" version="0.1.0">\n <description>\n-obtains different features of your protein list from neXtProt.\n+Annotate your protein list using features retrieved from neXtProt database.\n </description>\n <requirements>\n </requirements>\n@@ -9,54 +9,55 @@\n </stdio>\n <command><![CDATA[\n \n-  #if $inputtype.filetype == "copy_paste":  \n-    Rscript --vanilla $__tool_directory__/get_data_nextprot.R --inputtype copypaste --input \'$inputtype.genelist\' --nextprot $__tool_directory__/result_nextprot.txt --column c1 --argsP1 \'$Nextprot_params.P1\' --argsP2 \'$Nextprot_params.P2\'--argsP3 \'$Nextprot_params.P3\' --type \'$idtype\' --output \'$output\' --header None \n+  #if $inputtype.filetype == "copy_paste":\n+    \n+      Rscript $__tool_directory__/protein_features.R --inputtype=copypaste --input=\'$inputtype.genelist\' --nextprot=$__tool_directory__/result_nextprot.txt --column=c1 --argsP1=\'$Nextprot_params.P1\' --argsP2=\'$Nextprot_params.P2\' --argsP3=\'$Nextprot_params.P3\' --type=\'$idtype\' --output=\'$output\' --header=None \n+    \n   #end if\n \n   #if $inputtype.filetype == "file_all": \n   \n-  Rscript --vanilla $__tool_directory__/get_data_nextprot.R --inputtype tabfile --input \'$inputtype.genelist\' --nextprot $__tool_directory__/result_nextprot.txt --column \'$inputtype.column\' --argsP1 \'$Nextprot_params.P1\' --argsP2 \'$Nextprot_params.P2\'--argsP3 \'$Nextprot_params.P3\' --type \'$idtype\' --output \'$output\' --header \'$inputtype.header\' \n+      Rscript $__tool_directory__/protein_features.R --inputtype=tabfile --input=\'$inputtype.genelist\' --nextprot=$__tool_directory__/result_nextprot.txt --column=\'$inputtype.column\' --argsP1=\'$Nextprot_params.P1\' --argsP2=\'$Nextprot_params.P2\' --argsP3=\'$Nextprot_params.P3\' --type=\'$idtype\' --output=\'$output\' --header=\'$inputtype.header\' \n \n   #end if\n     \n-\n ]]></command>\n \n <inputs>\n   <conditional name="inputtype">\n     <param name="filetype" type="select" label="Select your type of input file"> \n-      <option value="file_all">Input file containing your identifiers</option>\n+      <option value="file_all">Input file containing your identifiers (neXtProt or Uniprot ID)</option>\n       <option value="copy_paste">Copy/paste your list of IDs</option> \n     </param>\n     <when value="copy_paste">\n       <param name="genelist" type="text" label="Enter a list of identifiers"/>\n     </when>\n     <when value="file_all">\n-      <param name="genelist" type="data" format="txt,tabular" label="Choose a multiple-columns file" help="This file must imperatively have 1 column filled with IDs consistent with the database that will be used. Please use the MappingIDs component if this is not the case."/>\n-      <param name="column" type="text" label="Please specify the column where you would like to apply the comparison (e.g : Enter c1)" value="c1"/> \n+      <param name="genelist" type="data" format="txt,tabular" label="Choose a file that contains your list of IDs" help="This file must imperatively have 1 column filled with IDs consistent with the neXtprot database (Uniprot accession number or neXtProt ID). If this is not the case, please use the ID_Converter tool."/>\n+      <param name="column" type="text" label="Please specify the column where are your IDs (e.g : Enter c1 for column n\xc2\xb01)" value="c1"/> \n       <param name="header" type="select" label="Does your file have a header?" multiple="false" optional="false"> \n- \t  <option value="TRUE" selected="true">Yes</option>\n-          <option value="FALSE" selected="false">No</option>\n+ \t\t      <option value="true" selected="true">Yes</option>\n+          <option value="false" selected="false">No</option>\n       </param>\n     </when>\n   </conditional>\n+\n       <param name="idtype" type="select" label="Type of your input ids" multiple="false" optional="false"> \n- \t  <option value="nextprot" selected="false">Nextprot IDs</option>\n-          <option value="uniprot" selected="true">Uniprot IDs</option>\n+ \t\t      <option value="uni'..b'   </section>\n-\n-    <output name="output" file="output_get_data.tsv"/>\n+    <section name="Nextprot_params">\n+      <param name="P1" value="SeqLength,MW,IsoPoint,TMDomains,ProteinExistence"/> \n+      <param name="P2" value="Chr,SubcellLocations"/> \n+      <param name="P3" value="Diseases"/> \n+    </section>\n+      \n+    <output name="output" file="Add_information_from_neXtProt.tsv"/>\n   </test>\n </tests>\n \n <help><![CDATA[\n \n-This tool filters an input **tabular** file according to different databases.\n+This tool add annotation (protein features) from neXtProt database (knowledge base on human proteins) to your protein IDs list.\n \n **Input**\n \n-Input can be a file containing multiple fields but with **at least one column of Ensembl gene IDs** or a list of Ensembl gene ids. If your input file contains other kind of IDs, please refer to the MappingIDs component to create a column of Ensembl gene IDs.  \n+Input can be a file containing multiple fields but with **at least one column of Uniprot accession number or neXtProt IDs**. If your input file contains other type of IDs, please use the ID_Converter tool.  \n \n **Databases**\n \n-The input file will be filtered using information from different sources : \n-\n-- HPA normal tissue : will filter the input according to the data contained in the Human Protein Atlas webservice. Pertinent information, such as tissular location, will be added for each gene to your input file.  \n-\n-- HPA cancer tissue :  will filter the input according to the data contained in the Human Protein Atlas webservice for cancer. Pertinent information, such as tumor type, will be added for each gene to your input file.  \n-\n-**Parameters**\n-\n-For HPA normal tissue :\n-\n-- tissue category : categories based on RNA-Seq data to estimate the transcript abundance of each protein-coding gene in tissues. For more information, please refer to http://www.proteinatlas.org/about/assays+annotation#rna .\n-\n-- level of detection IF : level of detection of the protein associated to the coding gene tissues based on immunofluorescency. For more information, please refer to http://www.proteinatlas.org/about/assays+annotation#if .\n-\n-- level of detection IH :  level of detection of the protein associated to the coding gene tissues based on immunohistochemistry. For more information, please refer to http://www.proteinatlas.org/about/assays+annotation#if .\n-\n-For HPA cancer tissue : \n-\n-- tumors : which tumors are associated with your protein-coding genes according to the Human Protein Atlas.\n-\n+Annotations have been retrieved from the neXtProt database (Gaudet et  al., 2017) via a REST API (https://academic.oup.com/nar/article/43/D1/D764/2439066#40348985)\n \n **Outputs**\n \n-The output will be a tabular file. The initial columns will be kept, but lines can be deleted due to the filtering process. Additional columns will be added according to which data you chose to filter your input with.  \n+The output is a tabular file. The initial columns are kept and columns are be added according to which annotation you have selected.  \n+\n+**Authors**\n \n+T.P. Lien Nguyen, Florence Combes, Yves Vandenbrouck CEA, INSERM, CNRS, Grenoble-Alpes University, BIG Institute, FR\n \n-**Data sources**\n+Sandra D\xc3\xa9rozier, Olivier Ru\xc3\xa9, Christophe Caron, Valentin Loux INRA, Paris-Saclay University, MAIAGE Unit, Migale Bioinformatics platform\n \n-The data for HPA normal tissue was retrieved from the Human Protein Atlas downloadable data repository (http://www.proteinatlas.org/download/proteinatlas.tab.gz).\n+This work has been partially funded through the French National Agency for Research (ANR) IFB project.\n \n-The data for HPA cancer was retrieved from the Human Protein Atlas downloadable data repository (http://www.proteinatlas.org/download/cancer.csv.zip).\n-]]></help>\n-\n-<citations>\n-</citations>\n+Contact support@proteore.org for any questions or concerns about the Galaxy implementation of this tool.\n+ \n+    ]]></help>\n+    <citations>\n+    </citations>\n \n </tool>\n'
b
diff -r e3b52db3d583 -r bfc679370c64 protein_features.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/protein_features.R Fri Feb 16 04:06:16 2018 -0500
[
@@ -0,0 +1,133 @@
+# Read file and return file content as data.frame
+readfile = function(filename, header) {
+  if (header == "true") {
+    # Read only first line of the file as header:
+    headers <- read.table(filename, nrows = 1, header = FALSE, sep = "\t", stringsAsFactors = FALSE, fill = TRUE, na.strings=c("", "NA"), blank.lines.skip = TRUE)
+    #Read the data of the files (skipping the first row)
+    file <- read.table(filename, skip = 1, header = FALSE, sep = "\t", stringsAsFactors = FALSE, fill = TRUE, na.strings=c("", "NA"), blank.lines.skip = TRUE)
+    # Remove empty rows
+    file <- file[!apply(is.na(file) | file == "", 1, all), , drop=FALSE]
+    #And assign the header to the data
+    names(file) <- headers
+  }
+  else {
+    file <- read.table(filename, header = FALSE, sep = "\t", stringsAsFactors = FALSE, fill = TRUE, na.strings=c("", "NA"), blank.lines.skip = TRUE)
+    # Remove empty rows
+    file <- file[!apply(is.na(file) | file == "", 1, all), , drop=FALSE]
+  }
+  return(file)
+}
+
+protein_features = function() {
+  args <- commandArgs(TRUE)
+  if(length(args)<1) {
+    args <- c("--help")
+  }
+  
+  # Help section
+  if("--help" %in% args) {
+    cat("Selection and Annotation HPA
+    Arguments:
+        --inputtype: type of input (list of id or filename)
+        --input: input
+        --nextprot: path to nextprot information file
+        --column: the column number which you would like to apply...
+        --header: true/false if your file contains a header
+        --type: the type of input IDs (UniProt/EntrezID)
+        --argsP1: IsoPoint,SeqLength,MW
+        --argsP2: Chr,SubcellLocations
+        --argsP3: Diseases
+        --output: text output filename \n")
+    q(save="no")
+  }
+  
+  # Parse arguments
+  parseArgs <- function(x) strsplit(sub("^--", "", x), "=")
+  argsDF <- as.data.frame(do.call("rbind", parseArgs(args)))
+  args <- as.list(as.character(argsDF$V2))
+  names(args) <- argsDF$V1 
+
+  inputtype = args$inputtype
+  if (inputtype == "copypaste") {
+    input = strsplit(args$input, " ")[[1]]
+  }
+  else if (inputtype == "tabfile") {
+    filename = args$input
+    ncol = args$column
+    # Check ncol
+    if (! as.numeric(gsub("c", "", ncol)) %% 1 == 0) {
+      stop("Please enter an integer for level")
+    }
+    else {
+      ncol = as.numeric(gsub("c", "", ncol))
+    }
+    header = args$header
+    # Get file content
+    file = readfile(filename, header)
+    # Extract Protein IDs list
+    input = c()
+    for (row in as.character(file[,ncol])) {
+      input = c(input, strsplit(row, ";")[[1]][1])
+    }
+  }
+  nextprot_file = args$nextprot
+  nextprot = human_id_map = read.table(nextprot_file, header = TRUE, sep = "\t", stringsAsFactors = FALSE, fill = TRUE, na.strings = "")
+  typeid = args$type
+  P1_args = strsplit(args$argsP1, ",")[[1]]
+  P2_args = strsplit(args$argsP2, ",")[[1]]
+  P3_args = strsplit(args$argsP3, ",")[[1]]
+  output = args$output
+
+  # Change the sample ids if they are uniprot ids to be able to match them with
+  # Nextprot data
+  if (typeid=="uniprot"){
+    input = gsub("^","NX_",input)
+  }
+
+  # Select user input protein ids in nextprot
+  if ((length(input[input %in% nextprot[,1]]))==0){
+    write.table("None of the input ids are can be found in Nextprot",file=filename,sep="\t",quote=FALSE,col.names=TRUE,row.names=FALSE)
+  } else {
+    names = c()
+    res = matrix(nrow=length(input), ncol=0)
+
+    # Get information from neXtProt
+    if (length(P1_args)>0) {
+      for (arg in P1_args) {
+        names = c(names, arg)
+        info = nextprot[match(input, nextprot["NextprotID"][,]),][arg][,]
+        res = cbind(res, info)
+      }
+    }
+    if (length(P2_args)>0) {
+      for (arg in P2_args) {
+        names = c(names, arg)
+        info = nextprot[match(input, nextprot["NextprotID"][,]),][arg][,]
+        res = cbind(res, info)
+      }
+    }
+    if (length(P3_args)>0) {
+      for (arg in P3_args) {
+        names = c(names, arg)
+        info = nextprot[match(input, nextprot["NextprotID"][,]),][arg][,]
+        res = cbind(res, info)
+      }
+    }
+
+    # Write output
+    if (inputtype == "copypaste") {
+      res = cbind(as.matrix(input), res)
+      names = c(typeid, names)
+      colnames(res) = names
+      write.table(res, output, row.names = FALSE, sep = "\t", quote = FALSE)
+    }
+    else if (inputtype == "tabfile") {
+      names = c(names(file), names)
+      output_content = cbind(file, res)
+      colnames(output_content) = names
+      write.table(output_content, output, row.names = FALSE, sep = "\t", quote = FALSE)
+    }
+  } 
+
+}
+protein_features()
\ No newline at end of file
b
diff -r e3b52db3d583 -r bfc679370c64 test-data/Add_information_from_neXtProt.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/Add_information_from_neXtProt.tsv Fri Feb 16 04:06:16 2018 -0500
b
b'@@ -0,0 +1,148 @@\n+V1\tneXtProt_ID\tUniProt.AC\tUniProt.ID\tGeneID\tRefSeq\tGI\tPDB\tGO\tPIR\tMIM\tUniGene\tEnsembl\tEnsembl_TRS\tEnsembl_PRO\tSeqLength\tMW\tIsoPoint\tTMDomains\tProteinExistence\tChr\tSubcellLocations\tDiseases\n+P61626\tNX_P61626\tP61626\tLYSC_HUMAN\t4069\tNP_000230.1\t3659963; 7546189; 11513929; 159046751; 157832582; 13399629; 12084272; 550545696; 157833671; 667484857; 9955039; 157833900; 157834290; 3402140; 9955034; 157834712; 1065034; 157834217; 22218809; 157831824; 157834219; 34811083; 157836837; 157835341; 157835054; 4930021; 30750167; 6729883; 157835322; 1065033; 157834715; 14278475; 11513935; 17942573; 157833905; 734458781; 159046750; 159046754; 157833673; 6730357; 550545697; 14278470; 7767015; 9955033; 157831913; 4557894; 12084274; 14278467; 157831912; 17942569; 17942570; 157831552; 14278476; 12084398; 5107557; 157831823; 38492671; 6729884; 157832584; 3659959; 22218808; 270346492; 13399627; 157831359; 157835056; 15825835; 159046753; 14278473; 9955036; 157834714; 219689184; 323462871; 50514025; 6980458; 159046752; 3402139; 9955035; 157834288; 5821956; 12084400; 4930015; 157835338; 6730358; 157834708; 4388847; 157832586; 157835344; 157835340; 157831910; 847820; 12084275; 667484859; 17942567; 157834216; 6729881; 12084397; 157834220; 157831908; 157834707; 353529987; 323462872; 9955030; 13399630; 157834716; 219689182; 6729882; 5821955; 17942572; 7767021; 48428995; 215794704; 13399625; 157834702; 14278474; 157833914; 12084396; 4930017; 157831825; 6729876; 14278471; 7767016; 157834706; 157835339; 159046755; 157831857; 9955031; 157831754; 157831571; 1827553; 6730356; 157833672; 4930014; 157831914; 307141; 17942566; 12084273; 253723297; 15825837; 157831554; 157832581; 9955029; 9256911; 157831553; 9955038; 157834705; 11513931; 5821957; 11514208; 6729879; 4930023; 6980888; 157834291; 12084403; 1827555; 9955327; 219689183; 157835057; 17942574; 157832585; 157834218; 15825836; 157829563; 13399626; 157834711; 24987350; 6729705; 157835053; 157832578; 157835342; 4930020; 157831820; 3659960; 11513937; 9955037; 157834289; 4930022; 157831822; 157833668; 12084409; 157835052; 9955028; 9955032; 157834709; 12084402; 15988350; 4930016; 17942571; 3402142; 17942568; 1335210; 157830185; 157835343; 157832587; 157834292; 157832579; 5107681; 11513927; 13399628; 157834704; 157831853; 157831921; 3659961; 12084399; 6729878; 157834215; 6729880; 157831551; 3402143; 12084401; 6980459; 5107556; 3659962; 157833921; 157834703; 157834710; 6729885; 157832583; 3659958; 157832580; 4388848; 157835055; 6729877; 159046756; 157831821; 9955027; 157829561; 15825838; 11513933; 14278472; 157834713\t133L:A; 134L:A; 1B5U:A; 1B5V:A; 1B5W:A; 1B5X:A; 1B5Y:A; 1B5Z:A; 1B5Z:B; 1B7L:A; 1B7M:A; 1B7N:A; 1B7O:A; 1B7P:A; 1B7Q:A; 1B7R:A; 1B7S:A; 1BB3:A; 1BB3:B; 1BB4:A; 1BB4:B; 1BB5:A; 1BB5:B; 1C43:A; 1C45:A; 1C46:A; 1C7P:A; 1CJ6:A; 1CJ7:A; 1CJ8:A; 1CJ9:A; 1CKC:A; 1CKD:A; 1CKF:A; 1CKG:A; 1CKG:B; 1CKH:A; 1D6P:A; 1D6Q:A; 1DI3:A; 1DI4:A; 1DI5:A; 1EQ4:A; 1EQ5:A; 1EQE:A; 1GAY:A; 1GAZ:A; 1GB0:A; 1GB2:A; 1GB3:A; 1GB5:A; 1GB6:A; 1GB7:A; 1GB8:A; 1GB9:A; 1GBO:A; 1GBW:A; 1GBX:A; 1GBY:A; 1GBZ:A; 1GDW:A; 1GDX:A; 1GE0:A; 1GE1:A; 1GE2:A; 1GE3:A; 1GE4:A; 1GEV:A; 1GEZ:A; 1GF0:A; 1GF3:A; 1GF4:A; 1GF5:A; 1GF6:A; 1GF7:A; 1GF8:A; 1GF9:A; 1GFA:A; 1GFE:A; 1GFG:A; 1GFH:A; 1GFJ:A; 1GFK:A; 1GFR:A; 1GFT:A; 1GFU:A; 1GFV:A; 1HNL:A; 1I1Z:A; 1I20:A; 1I22:A; 1I22:B; 1I22:C; 1I22:D; 1INU:A; 1IOC:A; 1IP1:A; 1IP2:A; 1IP3:A; 1IP3:B; 1IP4:A; 1IP5:A; 1IP6:A; 1IP7:A; 1IP7:B; 1IWT:A; 1IWU:A; 1IWV:A; 1IWW:A; 1IWX:A; 1IWY:A; 1IWZ:A; 1IX0:A; 1IY3:A; 1IY4:A; 1JKA:A; 1JKB:A; 1JKC:A; 1JKD:A; 1JSF:A; 1JWR:A; 1LAA:A; 1LHH:A; 1LHI:A; 1LHJ:A; 1LHK:A; 1LHL:A; 1LHM:A; 1LMT:A; 1LOZ:A; 1LYY:A; 1LZ1:A; 1LZ4:A; 1LZ5:A; 1LZ6:A; 1LZR:A; 1LZS:A; 1LZS:B; 1OP9:B; 1OUA:A; 1OUB:A; 1OUC:A; 1OUD:A; 1OUE:A; 1OUF:A; 1OUG:A; 1OUH:A; 1OUI:A; 1OUJ:A; 1QSW:A; 1QSW:B; 1QSW:C; 1QSW:D; 1RE2:A; 1REM:A; 1REX:A; 1REY:A; 1REZ:A; 1TAY:A; 1TBY:A; 1TCY:A; 1TDY:A; 1UBZ:A; 1W08:A; 1WQM:A; 1WQN:A; 1WQO:A; 1WQP:A; 1WQQ:A; 1WQR:A; 1YAM:A; 1YAN:A; 1YAO:A; 1YAP:A; 1YAQ:A; 207L:A; '..b'01\tNP_001074961.1; NP_872313.2\t119578641; 47846296; 125628632; 40807176; 166218808; 31873640; 125628636; 119578639\tNA\tGO:0005737; GO:0005829; GO:0005882; GO:0045111; GO:0045095; GO:0005198; GO:0070268; GO:0031424\tNA\t611161\tHs.140978\tENSG00000167767\tENST00000313234; ENST00000394815\tENSP00000369361; ENSP00000378292\t452\t50525\t5.58\t0\tPE1\t12\tNA\tNA\n+Q8N1N4\tNX_Q8N1N4\tQ8N1N4\tK2C78_HUMAN\t196374\tNP_001287743.1; NP_775487.2\t664806051; 21755908; 89357932; 158255238; 119617056; 57997474; 166218809\tNA\tGO:0005829; GO:0070062; GO:0005615; GO:0045095; GO:0005198; GO:0070268; GO:0031424\tNA\t611159\tHs.665267\tENSG00000170423\tENST00000304620; ENST00000359499\tENSP00000306261; ENSP00000352479\t520\t56866\t5.79\t0\tPE1\t12\tNA\tNA\n+P19013\tNX_P19013\tP19013\tK2C4_HUMAN\tNA\tNA\t34073; 82654947; 34077; 38014092; 16209201; 313159; 27769210\tNA\tGO:0009986; GO:0005829; GO:0005882; GO:0045111; GO:0045095; GO:0005634; GO:0005198; GO:0070268; GO:0007010; GO:0030855; GO:0031424; GO:0050680\tI37942\t123940; 193900\tHs.654610; Hs.731814\tENSG00000170477\tENST00000293774; ENST00000551956\tENSP00000293774; ENSP00000448220\t534\t57285\t6.25\t0\tPE1\t12\tNA\tWhite sponge nevus 1\n+P19012\tNX_P19012\tP19012\tK1C15_HUMAN\t3866\tNP_002266.2\t12803613; 125081; 24430190; 311033438; 193786870; 193787108; 30583361; 34071; 6729679\tNA\tGO:0005829; GO:0070062; GO:0005882; GO:0005634; GO:0097110; GO:0005200; GO:0070268; GO:0008544; GO:0031424\tS01069\t148030\tHs.654570\tENSG00000171346\tENST00000254043; ENST00000393976\tENSP00000254043; ENSP00000377546\t456\t49212\t4.71\t0\tPE1\t17\tNA\tNA\n+Q9C075\tNX_Q9C075\tQ9C075\tK1C23_HUMAN\t25984\tNP_001269362.1; NP_056330.3; XP_005257257.1; XP_011522897.1\t27894339; 539847623; 158259921; 143811410; 530411877; 221043902; 12641919; 7023692; 18202746; 767994237\tNA\tGO:0005829; GO:0005882; GO:0005198; GO:0070268; GO:0031424\tNA\t606194\tHs.9029\tENSG00000108244; ENSG00000263309\tENST00000209718; ENST00000436344; ENST00000571258; ENST00000574480\tENSP00000209718; ENSP00000414056; ENSP00000460637; ENSP00000459021\t422\t48131\t6.09\t0\tPE1\t17\tNA\tNA\n+Q04695\tNX_Q04695\tQ04695\tK1C17_HUMAN\t3872\tNP_000413.1\t34075; 148615520; 30379; 21754583; 14198021; 33991652; 119581157; 148615514; 148615518; 4557701; 48735384; 15080273; 148615516; 47939651; 547751; 1000379\tNA\tGO:0071944; GO:0005829; GO:0070062; GO:0005882; GO:0045111; GO:0042289; GO:0032395; GO:0005200; GO:0070268; GO:0008544; GO:0031069; GO:0045109; GO:0031424; GO:0030307; GO:0051798; GO:0045727; GO:0007165\tS30433\t148069; 167210; 184500\tHs.2785\tENSG00000128422\tENST00000311208\tENSP00000308452\t432\t48106\t4.97\t0\tPE1\t17\tCytoplasm\tSteatocystoma multiplex;Pachyonychia congenita 2\n+P08779\tNX_P08779\tP08779\tK1C16_HUMAN\t3868\tNP_005548.2\t23503075; 186685; 4321795; 24659602; 1000377; 1195531; 119581153; 4091879; 24430192; 158255142\tNA\tGO:0005856; GO:0005829; GO:0070062; GO:0005882; GO:0005634; GO:0005200; GO:0007568; GO:0008283; GO:0070268; GO:0007010; GO:0008544; GO:0061436; GO:0042633; GO:0006954; GO:0045087; GO:0045104; GO:0031424; GO:0030216; GO:0051546; GO:0002009; GO:0030336\tA33652; JC4313\t148067; 167200; 613000\tHs.655160\tENSG00000186832\tENST00000301653\tENSP00000301653\t473\t51268\t4.98\t0\tPE1\t17\tNA\tPachyonychia congenita 1;Keratoderma, palmoplantar, non-epidermolytic, focal 1\n+P02538\tNX_P02538\tP02538\tK2C6A_HUMAN\t3853\tNP_005545.1\t34069; 46812692; 1346344; 5031839; 914833; 15559584\t5KI0:A\tGO:0005829; GO:0070062; GO:0045095; GO:0016020; GO:0005634; GO:0005200; GO:0061844; GO:0030154; GO:0070268; GO:0051801; GO:0050830; GO:0031424; GO:0002009; GO:0001899; GO:2000536; GO:0008284; GO:0042060\tA57398; I61769\t148041; 615726\tHs.700779\tENSG00000205420\tENST00000330722\tENSP00000369317\t564\t60045\t8.09\t0\tPE1\t12\tNA\tPachyonychia congenita 3\n+P04259\tNX_P04259\tP04259\tK2C6B_HUMAN\t3854\tNP_005546.2\t1346345; 311396606; 386849; 908790; 908805; 238054404; 119703753; 21961227\tNA\tGO:0005829; GO:0070062; GO:0045095; GO:0005200; GO:0070268; GO:0007398; GO:0031424\tI61767; I61771\t148042; 615728\tHs.708950\tENSG00000185479\tENST00000252252\tENSP00000252252\t564\t60067\t8.09\t0\tPE1\t12\tNA\tPachyonychia congenita 4\n'
b
diff -r e3b52db3d583 -r bfc679370c64 test-data/FKW_ID_Converter_Lacombe_et_al_2017_OK.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/FKW_ID_Converter_Lacombe_et_al_2017_OK.txt Fri Feb 16 04:06:16 2018 -0500
b
b'@@ -0,0 +1,149 @@\n+V1\tneXtProt_ID\tUniProt.AC\tUniProt.ID\tGeneID\tRefSeq\tGI\tPDB\tGO\tPIR\tMIM\tUniGene\tEnsembl\tEnsembl_TRS\tEnsembl_PRO\n+\n+P61626\tNX_P61626\tP61626\tLYSC_HUMAN\t4069\tNP_000230.1\t3659963; 7546189; 11513929; 159046751; 157832582; 13399629; 12084272; 550545696; 157833671; 667484857; 9955039; 157833900; 157834290; 3402140; 9955034; 157834712; 1065034; 157834217; 22218809; 157831824; 157834219; 34811083; 157836837; 157835341; 157835054; 4930021; 30750167; 6729883; 157835322; 1065033; 157834715; 14278475; 11513935; 17942573; 157833905; 734458781; 159046750; 159046754; 157833673; 6730357; 550545697; 14278470; 7767015; 9955033; 157831913; 4557894; 12084274; 14278467; 157831912; 17942569; 17942570; 157831552; 14278476; 12084398; 5107557; 157831823; 38492671; 6729884; 157832584; 3659959; 22218808; 270346492; 13399627; 157831359; 157835056; 15825835; 159046753; 14278473; 9955036; 157834714; 219689184; 323462871; 50514025; 6980458; 159046752; 3402139; 9955035; 157834288; 5821956; 12084400; 4930015; 157835338; 6730358; 157834708; 4388847; 157832586; 157835344; 157835340; 157831910; 847820; 12084275; 667484859; 17942567; 157834216; 6729881; 12084397; 157834220; 157831908; 157834707; 353529987; 323462872; 9955030; 13399630; 157834716; 219689182; 6729882; 5821955; 17942572; 7767021; 48428995; 215794704; 13399625; 157834702; 14278474; 157833914; 12084396; 4930017; 157831825; 6729876; 14278471; 7767016; 157834706; 157835339; 159046755; 157831857; 9955031; 157831754; 157831571; 1827553; 6730356; 157833672; 4930014; 157831914; 307141; 17942566; 12084273; 253723297; 15825837; 157831554; 157832581; 9955029; 9256911; 157831553; 9955038; 157834705; 11513931; 5821957; 11514208; 6729879; 4930023; 6980888; 157834291; 12084403; 1827555; 9955327; 219689183; 157835057; 17942574; 157832585; 157834218; 15825836; 157829563; 13399626; 157834711; 24987350; 6729705; 157835053; 157832578; 157835342; 4930020; 157831820; 3659960; 11513937; 9955037; 157834289; 4930022; 157831822; 157833668; 12084409; 157835052; 9955028; 9955032; 157834709; 12084402; 15988350; 4930016; 17942571; 3402142; 17942568; 1335210; 157830185; 157835343; 157832587; 157834292; 157832579; 5107681; 11513927; 13399628; 157834704; 157831853; 157831921; 3659961; 12084399; 6729878; 157834215; 6729880; 157831551; 3402143; 12084401; 6980459; 5107556; 3659962; 157833921; 157834703; 157834710; 6729885; 157832583; 3659958; 157832580; 4388848; 157835055; 6729877; 159046756; 157831821; 9955027; 157829561; 15825838; 11513933; 14278472; 157834713\t133L:A; 134L:A; 1B5U:A; 1B5V:A; 1B5W:A; 1B5X:A; 1B5Y:A; 1B5Z:A; 1B5Z:B; 1B7L:A; 1B7M:A; 1B7N:A; 1B7O:A; 1B7P:A; 1B7Q:A; 1B7R:A; 1B7S:A; 1BB3:A; 1BB3:B; 1BB4:A; 1BB4:B; 1BB5:A; 1BB5:B; 1C43:A; 1C45:A; 1C46:A; 1C7P:A; 1CJ6:A; 1CJ7:A; 1CJ8:A; 1CJ9:A; 1CKC:A; 1CKD:A; 1CKF:A; 1CKG:A; 1CKG:B; 1CKH:A; 1D6P:A; 1D6Q:A; 1DI3:A; 1DI4:A; 1DI5:A; 1EQ4:A; 1EQ5:A; 1EQE:A; 1GAY:A; 1GAZ:A; 1GB0:A; 1GB2:A; 1GB3:A; 1GB5:A; 1GB6:A; 1GB7:A; 1GB8:A; 1GB9:A; 1GBO:A; 1GBW:A; 1GBX:A; 1GBY:A; 1GBZ:A; 1GDW:A; 1GDX:A; 1GE0:A; 1GE1:A; 1GE2:A; 1GE3:A; 1GE4:A; 1GEV:A; 1GEZ:A; 1GF0:A; 1GF3:A; 1GF4:A; 1GF5:A; 1GF6:A; 1GF7:A; 1GF8:A; 1GF9:A; 1GFA:A; 1GFE:A; 1GFG:A; 1GFH:A; 1GFJ:A; 1GFK:A; 1GFR:A; 1GFT:A; 1GFU:A; 1GFV:A; 1HNL:A; 1I1Z:A; 1I20:A; 1I22:A; 1I22:B; 1I22:C; 1I22:D; 1INU:A; 1IOC:A; 1IP1:A; 1IP2:A; 1IP3:A; 1IP3:B; 1IP4:A; 1IP5:A; 1IP6:A; 1IP7:A; 1IP7:B; 1IWT:A; 1IWU:A; 1IWV:A; 1IWW:A; 1IWX:A; 1IWY:A; 1IWZ:A; 1IX0:A; 1IY3:A; 1IY4:A; 1JKA:A; 1JKB:A; 1JKC:A; 1JKD:A; 1JSF:A; 1JWR:A; 1LAA:A; 1LHH:A; 1LHI:A; 1LHJ:A; 1LHK:A; 1LHL:A; 1LHM:A; 1LMT:A; 1LOZ:A; 1LYY:A; 1LZ1:A; 1LZ4:A; 1LZ5:A; 1LZ6:A; 1LZR:A; 1LZS:A; 1LZS:B; 1OP9:B; 1OUA:A; 1OUB:A; 1OUC:A; 1OUD:A; 1OUE:A; 1OUF:A; 1OUG:A; 1OUH:A; 1OUI:A; 1OUJ:A; 1QSW:A; 1QSW:B; 1QSW:C; 1QSW:D; 1RE2:A; 1REM:A; 1REX:A; 1REY:A; 1REZ:A; 1TAY:A; 1TBY:A; 1TCY:A; 1TDY:A; 1UBZ:A; 1W08:A; 1WQM:A; 1WQN:A; 1WQO:A; 1WQP:A; 1WQQ:A; 1WQR:A; 1YAM:A; 1YAN:A; 1YAO:A; 1YAP:A; 1YAQ:A; 207L:A; 208L:A; 2BQA:A; 2BQB:A; 2BQC:A; 2BQD:A; 2BQE:A; 2BQF:A; 2BQG:A; 2BQH:A; 2BQI:'..b'X_P13646\tP13646\tK1C13_HUMAN\t3860\tNP_002265.2; NP_705694.2\t131412228; 6016411; 269849755; 62897663; 3603253; 34033; 21750830; 30377; 131412225; 62897715\tNA\tGO:0005829; GO:0070062; GO:0045111; GO:0045095; GO:0005634; GO:0005198; GO:0071300; GO:0070268; GO:0007010; GO:0031424; GO:0009314; GO:0043587\tA37343; S06088\t148065; 615785\tHs.654550\tENSG00000171401\tENST00000246635; ENST00000336861\tENSP00000246635; ENSP00000336604\n+Q6KB66\tNX_Q6KB66\tQ6KB66\tK2C80_HUMAN\t144501\tNP_001074961.1; NP_872313.2\t119578641; 47846296; 125628632; 40807176; 166218808; 31873640; 125628636; 119578639\tNA\tGO:0005737; GO:0005829; GO:0005882; GO:0045111; GO:0045095; GO:0005198; GO:0070268; GO:0031424\tNA\t611161\tHs.140978\tENSG00000167767\tENST00000313234; ENST00000394815\tENSP00000369361; ENSP00000378292\n+Q8N1N4\tNX_Q8N1N4\tQ8N1N4\tK2C78_HUMAN\t196374\tNP_001287743.1; NP_775487.2\t664806051; 21755908; 89357932; 158255238; 119617056; 57997474; 166218809\tNA\tGO:0005829; GO:0070062; GO:0005615; GO:0045095; GO:0005198; GO:0070268; GO:0031424\tNA\t611159\tHs.665267\tENSG00000170423\tENST00000304620; ENST00000359499\tENSP00000306261; ENSP00000352479\n+P19013\tNX_P19013\tP19013\tK2C4_HUMAN\tNA\tNA\t34073; 82654947; 34077; 38014092; 16209201; 313159; 27769210\tNA\tGO:0009986; GO:0005829; GO:0005882; GO:0045111; GO:0045095; GO:0005634; GO:0005198; GO:0070268; GO:0007010; GO:0030855; GO:0031424; GO:0050680\tI37942\t123940; 193900\tHs.654610; Hs.731814\tENSG00000170477\tENST00000293774; ENST00000551956\tENSP00000293774; ENSP00000448220\n+P19012\tNX_P19012\tP19012\tK1C15_HUMAN\t3866\tNP_002266.2\t12803613; 125081; 24430190; 311033438; 193786870; 193787108; 30583361; 34071; 6729679\tNA\tGO:0005829; GO:0070062; GO:0005882; GO:0005634; GO:0097110; GO:0005200; GO:0070268; GO:0008544; GO:0031424\tS01069\t148030\tHs.654570\tENSG00000171346\tENST00000254043; ENST00000393976\tENSP00000254043; ENSP00000377546\n+Q9C075\tNX_Q9C075\tQ9C075\tK1C23_HUMAN\t25984\tNP_001269362.1; NP_056330.3; XP_005257257.1; XP_011522897.1\t27894339; 539847623; 158259921; 143811410; 530411877; 221043902; 12641919; 7023692; 18202746; 767994237\tNA\tGO:0005829; GO:0005882; GO:0005198; GO:0070268; GO:0031424\tNA\t606194\tHs.9029\tENSG00000108244; ENSG00000263309\tENST00000209718; ENST00000436344; ENST00000571258; ENST00000574480\tENSP00000209718; ENSP00000414056; ENSP00000460637; ENSP00000459021\n+Q04695\tNX_Q04695\tQ04695\tK1C17_HUMAN\t3872\tNP_000413.1\t34075; 148615520; 30379; 21754583; 14198021; 33991652; 119581157; 148615514; 148615518; 4557701; 48735384; 15080273; 148615516; 47939651; 547751; 1000379\tNA\tGO:0071944; GO:0005829; GO:0070062; GO:0005882; GO:0045111; GO:0042289; GO:0032395; GO:0005200; GO:0070268; GO:0008544; GO:0031069; GO:0045109; GO:0031424; GO:0030307; GO:0051798; GO:0045727; GO:0007165\tS30433\t148069; 167210; 184500\tHs.2785\tENSG00000128422\tENST00000311208\tENSP00000308452\n+P08779\tNX_P08779\tP08779\tK1C16_HUMAN\t3868\tNP_005548.2\t23503075; 186685; 4321795; 24659602; 1000377; 1195531; 119581153; 4091879; 24430192; 158255142\tNA\tGO:0005856; GO:0005829; GO:0070062; GO:0005882; GO:0005634; GO:0005200; GO:0007568; GO:0008283; GO:0070268; GO:0007010; GO:0008544; GO:0061436; GO:0042633; GO:0006954; GO:0045087; GO:0045104; GO:0031424; GO:0030216; GO:0051546; GO:0002009; GO:0030336\tA33652; JC4313\t148067; 167200; 613000\tHs.655160\tENSG00000186832\tENST00000301653\tENSP00000301653\n+P02538\tNX_P02538\tP02538\tK2C6A_HUMAN\t3853\tNP_005545.1\t34069; 46812692; 1346344; 5031839; 914833; 15559584\t5KI0:A\tGO:0005829; GO:0070062; GO:0045095; GO:0016020; GO:0005634; GO:0005200; GO:0061844; GO:0030154; GO:0070268; GO:0051801; GO:0050830; GO:0031424; GO:0002009; GO:0001899; GO:2000536; GO:0008284; GO:0042060\tA57398; I61769\t148041; 615726\tHs.700779\tENSG00000205420\tENST00000330722\tENSP00000369317\n+P04259\tNX_P04259\tP04259\tK2C6B_HUMAN\t3854\tNP_005546.2\t1346345; 311396606; 386849; 908790; 908805; 238054404; 119703753; 21961227\tNA\tGO:0005829; GO:0070062; GO:0045095; GO:0005200; GO:0070268; GO:0007398; GO:0031424\tI61767; I61771\t148042; 615728\tHs.708950\tENSG00000185479\tENST00000252252\tENSP00000252252\n'