The flowrepository.org certificate has now been updated. The website is now fully operational. Thank you for your patience with this updating process.

Offline FCS De-identification Utility

Download our free FCS De-identification Utility from here.


Usage

This utility will remove values of specified keywords inside the FCS file. In order to run the tool, you will need Java installed and, assuming you are in the same directory where the .jar file is saved, then you can run

java -jar deidentifyfcs.jar -help

which will print out the syntax and options how this tool can be used. Typically, you will need to do something like

java -jar path/to/deidentifyfcs.jar "-InputFile:/path/to my/file.fcs" "-Remove:SAMPLE ID,\$SRC,PATIENT ID,\$P3N,AGENCY_ID,@SAMPLE_ID"

You may also add the -OutputFile option. If you don't then the output file name will be created from the input file name by adding the ".deidentified" suffix (and leaving the same file extension). The original input file will always be left as is.


Important to note...

Please note that

  1. There are no spaces, just a semicolon (:), between the name of an argument (e.g., -InputFile) and its value
  2. I enclosed the InputFile and Remove arguments in quotes ("). This is to allow space characters being part of the file name or keyword. The tool needs these to be passed as single parameters, and if the quotes were not there then the system would break it into several parameters whenever there is a space on the command line
  3. If there is a $ sign in your keyword (e.g. $SRC) then you need to escape this by a backslash (i.e., \$). This is to prevent the operating system from expanding it as a system variable. Variables start with $ in Linux and Mac OS. You need to be careful because forgetting the \ will result the keyword being left in the file without any warning or signs of errors. If you are under Windows then you don't need to escape $ with \ as Windows variables are created using '%', e.g., %SRC%

Finally, we suggest adding the -Debug option. At least to test it and to verify that the tool is doing what you are expecting it to do. With the -Debug option, it will tell you exactly what it is doing.


Example

jspidlen@BIOINFO16L:~/eclipse_ws/java_01/DeIdentifyFCS/jar$ ls
deidentifyfcs.jar P110_PPD.fcs
jspidlen@BIOINFO16L:~/eclipse_ws/java_01/DeIdentifyFCS/jar$ java -jar deidentifyfcs.jar "-InputFile:P110_PPD.fcs" "-Remove:SAMPLE ID,\$SRC,PATIENT ID,\$P3N,AGENCY_ID,@SAMPLE_ID,\$P12S" -Debug
Commandline arguments parsed
Argument validation:
-Input file name: P110_PPD.fcs
-Output file name: P110_PPD.deidentified.fcs
-Keywords to be removed (comma-separated list): SAMPLE ID,$SRC,PATIENT ID,$P3N,AGENCY_ID,@SAMPLE_ID,$P12S
Argument validation completed sucessfully
-------------------
De-identification started
Detected FCS version: FCS2.0
Detected offset to the first byte of TEXT segment: 256
- and last byte of TEXT segment: 2062
Detected offset to the first byte of DATA segment: 2063
- and last byte of DATA segment: 21970190
Detected offset to the first byte of ANALYSIS segment: 0
- and last byte of ANALYSIS segment: 0
Detected TEXT segment delimiter character: "\"
+ Keeping keyword: "$FIL", value "P110_PPD.fcs"
+ Keeping keyword: "$SYS", value "Windows XP 5.1"
+ Keeping keyword: "$TOT", value "844928 "
+ Keeping keyword: "$PAR", value "13"
+ Keeping keyword: "$MODE", value "L"
+ Keeping keyword: "$BYTEORD", value "4,3,2,1"
+ Keeping keyword: "$DATATYPE", value "I"
+ Keeping keyword: "$NEXTDATA", value "0"
Detected that thare are no additional datasets within this FCS
+ Keeping keyword: "CREATOR", value "BD FACSDiva Software Version 5.0.2"
+ Keeping keyword: "TUBE NAME", value "PPD"
- Removing keyword: "$SRC", value "P110"
+ Keeping keyword: "EXPERIMENT NAME", value "Lo Platte 090507"
+ Keeping keyword: "GUID", value "24313cb5-21c4-434c-bb60-80a916dc3b8b"
+ Keeping keyword: "$DATE", value "14-MAY-2007"
+ Keeping keyword: "$BTIM", value "13:25:28"
+ Keeping keyword: "$ETIM", value "13:27:15"
+ Keeping keyword: "$CYT", value "LSRII"
+ Keeping keyword: "CYTNUM", value "1"
+ Keeping keyword: "WINDOW EXTENSION", value "2.00"
+ Keeping keyword: "EXPORT USER NAME", value "AGKern"
+ Keeping keyword: "EXPORT TIME", value "09-JUL-2007-12:08:41"
+ Keeping keyword: "$OP", value "AGKern"
+ Keeping keyword: "FSC ASF", value "1.00"
+ Keeping keyword: "AUTOBS", value "TRUE"
+ Keeping keyword: "$INST", value " "
+ Keeping keyword: "LASER1NAME", value "Blue"
+ Keeping keyword: "LASER1DELAY", value "0.00"
+ Keeping keyword: "LASER1ASF", value "1.00"
+ Keeping keyword: "LASER2NAME", value "Violet"
+ Keeping keyword: "LASER2DELAY", value "22.80"
+ Keeping keyword: "LASER2ASF", value "0.80"
+ Keeping keyword: "LASER3NAME", value "UV"
+ Keeping keyword: "LASER3DELAY", value "-28.00"
+ Keeping keyword: "LASER3ASF", value "1.30"
+ Keeping keyword: "LASER4NAME", value "Red"
+ Keeping keyword: "LASER4DELAY", value "60.00"
+ Keeping keyword: "LASER4ASF", value "1.00"
+ Keeping keyword: "TIMETICKS", value "2560"
+ Keeping keyword: "$P1N", value "FSC-A"
+ Keeping keyword: "$P1R", value "1024"
+ Keeping keyword: "$P1B", value "16"
+ Keeping keyword: "$P1E", value "0,0"
+ Keeping keyword: "$P1V", value "430"
+ Keeping keyword: "P1BS", value "0"
+ Keeping keyword: "P1MS", value "0"
+ Keeping keyword: "$P2N", value "SSC-A"
+ Keeping keyword: "$P2R", value "1024"
+ Keeping keyword: "$P2B", value "16"
+ Keeping keyword: "$P2E", value "0,0"
+ Keeping keyword: "$P2V", value "333"
+ Keeping keyword: "P2BS", value "0"
+ Keeping keyword: "P2MS", value "0"
- Removing keyword: "$P3N", value "FITC-A" replaced with a random unique string.
+ Keeping keyword: "$P3S", value "CD27 FITC-A"
+ Keeping keyword: "$P3R", value "1024"
+ Keeping keyword: "$P3B", value "16"
+ Keeping keyword: "$P3E", value "4,0"
+ Keeping keyword: "$P3V", value "517"
+ Keeping keyword: "P3BS", value "19186"
+ Keeping keyword: "P3MS", value "0"
+ Keeping keyword: "$P4N", value "PE-A"
+ Keeping keyword: "$P4S", value "CD40L PE-A"
+ Keeping keyword: "$P4R", value "1024"
+ Keeping keyword: "$P4B", value "16"
+ Keeping keyword: "$P4E", value "4,0"
+ Keeping keyword: "$P4V", value "499"
+ Keeping keyword: "P4BS", value "838"
+ Keeping keyword: "P4MS", value "0"
+ Keeping keyword: "$P5N", value "RED613-A"
+ Keeping keyword: "$P5S", value "CD107 RED613-A"
+ Keeping keyword: "$P5R", value "1024"
+ Keeping keyword: "$P5B", value "16"
+ Keeping keyword: "$P5E", value "4,0"
+ Keeping keyword: "$P5V", value "617"
+ Keeping keyword: "P5BS", value "641"
+ Keeping keyword: "P5MS", value "0"
+ Keeping keyword: "$P6N", value "PerCP Cy55-A"
+ Keeping keyword: "$P6S", value "CD4 PerCP Cy55-A"
+ Keeping keyword: "$P6R", value "1024"
+ Keeping keyword: "$P6B", value "16"
+ Keeping keyword: "$P6E", value "4,0"
+ Keeping keyword: "$P6V", value "670"
+ Keeping keyword: "P6BS", value "4352"
+ Keeping keyword: "P6MS", value "0"
+ Keeping keyword: "$P7N", value "PE Cy7-A"
+ Keeping keyword: "$P7S", value "IFNg PE Cy7-A"
+ Keeping keyword: "$P7R", value "1024"
+ Keeping keyword: "$P7B", value "16"
+ Keeping keyword: "$P7E", value "4,0"
+ Keeping keyword: "$P7V", value "647"
+ Keeping keyword: "P7BS", value "802"
+ Keeping keyword: "P7MS", value "0"
+ Keeping keyword: "$P8N", value "Red 1 APC-A"
+ Keeping keyword: "$P8S", value "IL2 Red 1 APC-A"
+ Keeping keyword: "$P8R", value "1024"
+ Keeping keyword: "$P8B", value "16"
+ Keeping keyword: "$P8E", value "4,0"
+ Keeping keyword: "$P8V", value "624"
+ Keeping keyword: "P8BS", value "5389"
+ Keeping keyword: "P8MS", value "0"
+ Keeping keyword: "$P9N", value "Red 3APC Cy7-A"
+ Keeping keyword: "$P9S", value "CD8 Red 3APC Cy7-A"
+ Keeping keyword: "$P9R", value "1024"
+ Keeping keyword: "$P9B", value "16"
+ Keeping keyword: "$P9E", value "4,0"
+ Keeping keyword: "$P9V", value "551"
+ Keeping keyword: "P9BS", value "749"
+ Keeping keyword: "P9MS", value "0"
+ Keeping keyword: "$P10N", value "Red 2 Alexa700-A"
+ Keeping keyword: "$P10S", value "TNF Red 2 Alexa700-A"
+ Keeping keyword: "$P10R", value "1024"
+ Keeping keyword: "$P10B", value "16"
+ Keeping keyword: "$P10E", value "4,0"
+ Keeping keyword: "$P10V", value "686"
+ Keeping keyword: "P10BS", value "1620"
+ Keeping keyword: "P10MS", value "0"
+ Keeping keyword: "$P11N", value "violet1 440/40-A"
+ Keeping keyword: "$P11S", value "CD3 violet1 440/40-A"
+ Keeping keyword: "$P11R", value "1024"
+ Keeping keyword: "$P11B", value "16"
+ Keeping keyword: "$P11E", value "4,0"
+ Keeping keyword: "$P11V", value "493"
+ Keeping keyword: "P11BS", value "4792"
+ Keeping keyword: "P11MS", value "0"
+ Keeping keyword: "$P12N", value "violet2 525/50-A"
- Removing keyword: "$P12S", value "CD14 violet2 525/50-A"
+ Keeping keyword: "$P12R", value "1024"
+ Keeping keyword: "$P12B", value "16"
+ Keeping keyword: "$P12E", value "4,0"
+ Keeping keyword: "$P12V", value "540"
+ Keeping keyword: "P12BS", value "903"
+ Keeping keyword: "P12MS", value "0"
+ Keeping keyword: "$P13N", value "Time"
+ Keeping keyword: "$P13R", value "1024"
+ Keeping keyword: "$P13B", value "16"
+ Keeping keyword: "$P13E", value "0,0"
+ Keeping keyword: "P13BS", value "0"
+ Keeping keyword: "P13MS", value "0"
- Removing keyword: "SAMPLE ID", value "123456789"
- Removing keyword: "PATIENT ID", value "123456789"
-------------------
De-identification finished
Warning - the following keywords were supposed to be removed but could not be found in this FCS file: "@SAMPLE_ID", "AGENCY_ID"
jspidlen@BIOINFO16L:~/eclipse_ws/java_01/DeIdentifyFCS/jar$ ls
deidentifyfcs.jar P110_PPD.deidentified.fcs P110_PPD.fcs
jspidlen@BIOINFO16L:~/eclipse_ws/java_01/DeIdentifyFCS/jar$