Generate JACKIE.queryDB command to extract all gRNAs filtered for specific properties, within genomic regions, or select best N gRNAs within each region by an ordered list of sort criteria.

[Back to JACKIE]

[insert_php]

$awkRuleString=””;
$filterString=””;

$jackie_download_path=”[HTTPS]albertcheng.info/jackie_downloads/”;

function isValid($fieldName)
{
return isset($_GET[$fieldName]);
}

function printAllValues(){
echo “

“;
foreach($_GET as $key=>$value){
echo “

“;
}
echo “

“.$key.” “.$value.”

“;
}
//printAllValues();

function getValue($fieldName){
return $_GET[$fieldName];
}

function safeGetValue($fieldName,$default_val){
if(isValid($fieldName)){
return getValue($fieldName);
}
return $default_val;
}

function incorporateRange($awkString,$fieldName,$awk_col){
if(isValid($fieldName.”_min”) && isValid($fieldName.”_max”) && isValid($fieldName.”_table_vis”) && !strcmp(getValue($fieldName.”_table_vis”),”yes”)){
$_min=getValue($fieldName.”_min”);
$_max=getValue($fieldName.”_max”);
if(strlen($awkString)>0){
$awkString.=” &&”;
}
return $awkString.’ $(‘.$awk_col.’)>=’.$_min.’ && $(‘.$awk_col.’)<='.$_max; } return $awkString; } function incorporateFilterRange($filterString,$fieldName,$awk_col){ if(isValid($fieldName."_min") && isValid($fieldName."_max") && isValid($fieldName."_table_vis") && !strcmp(getValue($fieldName."_table_vis"),"yes")){ $_min=getValue($fieldName."_min"); $_max=getValue($fieldName."_max"); return $filterString."'$".$fieldName.'/'.$_min.'/'.$_max."' "; } return $filterString; } if(isset($_GET["multi"])){ $awkRuleString=incorporateRange($awkRuleString,"n0mismatches",14); $awkRuleString=incorporateRange($awkRuleString,"clusterSize",13); } $awkRuleString=incorporateRange($awkRuleString,"percentGC",17); $awkRuleString=incorporateRange($awkRuleString,"longestTandemT",18); $awkRuleString=incorporateRange($awkRuleString,"totalOffSites",14); $awkRuleString=incorporateRange($awkRuleString,"n1mismatches",11); $awkRuleString=incorporateRange($awkRuleString,"n2mismatches",12); $awkRuleString=incorporateRange($awkRuleString,"n3mismatches",13); if(isset($_GET["multi"])){ $filterString=incorporateFilterRange($filterString,"n0mismatches",14); $filterString=incorporateFilterRange($filterString,"clusterSize",13); } $filterString=incorporateFilterRange($filterString,"percentGC",17); $filterString=incorporateFilterRange($filterString,"longestTandemT",18); $filterString=incorporateFilterRange($filterString,"totalOffSites",14); $filterString=incorporateFilterRange($filterString,"n1mismatches",11); $filterString=incorporateFilterRange($filterString,"n2mismatches",12); $filterString=incorporateFilterRange($filterString,"n3mismatches",13); //NBest if(isValid("NBest")){ $NBest=getValue("NBest"); if(strlen($NBest)>0){
$filterString.=” ‘!BEST/”.$NBest.”‘”;
}
}

//inRegion
if(isValid(“inRegion”)){
$inRegion=getValue(“inRegion”);
if(strlen($inRegion)>0){
$filterString.=” -regions=”.$inRegion;
}
}

if(isValid(“queryOut”)){
$queryOut=getValue(“queryOut”);
if(strlen($queryOut)>0){
$filterString.=” > “.$queryOut;
}
}

$JACKIEdbRegion=safeGetValue(“JACKIEdbRegion”,””);
$JACKIEdbRegion=str_replace(“
“,””,$JACKIEdbRegion);
if(strlen($JACKIEdbRegion)>0){
$array= explode(“\n”,$JACKIEdbRegion);
foreach($array as $x){
$coordinateFields=preg_split(“/[\s:-]+/”, $x);

$filterString.=” ‘”.join(“/”,$coordinateFields).”‘ “;
}
}

if(isset($_GET[“selected_cols”])){
foreach($_GET[“selected_cols”] as $selected_col){
$filterString.=” ‘!”.$selected_col.”‘ “;

}

}

//placeTextBox(“Input JACKIEdb filename”,”inbb”,”JACKIEdb.bb”);
//placeTextBox(“JACKIE.queryDB output filename”,”queryOut”,”query.out.bed”);

if(strlen($awkRuleString)>0){
$awkRuleString=’gunzip -c ‘.safeGetValue(“infilename”,”bed.gz”).’ | awk -v FS="\\t" -v OFS="\\t" \'(‘.$awkRuleString.’)\”;

if(isValid(“outfilename”)){
$outfilename=getValue(“outfilename”);
if(strlen($outfilename)>0){
$awkRuleString.=” > “.$outfilename;
}
}

//echo ‘awk code:

‘;
//echo ‘

‘;

}

if(strlen($filterString)>0){
$filterString=’JACKIE.queryDB ‘.str_replace(“[HTTPS]”,”https://”,safeGetValue(“inbb”,$jackie_download_path.str_replace(“bed.gz”,”bb”,safeGetValue(“infilename”,”bed.gz”)))).’ ‘.$filterString;

echo ‘JACKIE.queryDB command:

‘;
echo ‘

‘;
}

[/insert_php]


[insert_php]

function placeRangeTextBoxes($fieldDesc,$fieldName,$default_min,$default_max,$textSize=10){
if(isset($_GET[$fieldName.”_min”])){
$min_value=$_GET[$fieldName.”_min”];
}else{
$min_value=$default_min;
}

if(isset($_GET[$fieldName.”_max”])){
$max_value=$_GET[$fieldName.”_max”];
}else{
$max_value=$default_max;
}

if(!strcmp(safeGetValue($fieldName.”_table_vis”,”no”),”yes”)){
$showButton_visibility=”hidden”;
$table_visibility=”visible”;
$vis_value=”yes”;
}else{
$showButton_visibility=”visible”;
$table_visibility=”collapse”;
$vis_value=”no”;

}

echo ‘

‘;

echo $fieldDesc.’

to ‘;
echo ‘
‘;
echo ‘

‘;

}

function placeTextBox($fieldDesc,$fieldName,$default_val,$textSize=100){
if(isset($_GET[$fieldName])){
$val=$_GET[$fieldName];
}else{
$val=$default_val;
}

echo “

“.$fieldDesc.’

‘;

}

function placeTextBoxWithFileChooser($fieldDesc,$fieldName,$default_val,$textSize=100){
if(isset($_GET[$fieldName])){
$val=$_GET[$fieldName];
}else{
$val=$default_val;
}

echo “

“.$fieldDesc.’ Choose local file>

‘;

}

function placeTextArea($fieldDesc,$fieldName,$default_val,$rows,$cols){
if(isset($_GET[$fieldName])){
$val=$_GET[$fieldName];
}else{
$val=$default_val;
}

$val=str_replace(“
“,””,$val);

echo “

“.$fieldDesc.’

‘;

}

function printOption($optionValue,$optionText,$selected){
$inSelectedCols=false;
if($_GET[“selected_cols”] && in_array($optionValue,$_GET[“selected_cols”])){
$inSelectedCols=true;
}

$printOption=false;
if($selected){
if($inSelectedCols){
$printOption=true;
}
}else{
if(!$inSelectedCols){
$printOption=true;
}
}

if($printOption){
echo ““;

}

}

//placeTextBox(“Input filename”,”infilename”,”bed.gz”);
//placeTextBox(“Output filename”,”outfilename”,str_replace(“.bed.gz”,”.filtered.bed”,safeGetValue(“infilename”,”output.bed”)));
placeTextBox(“JACKIEdb filename (bigBed format)”,”inbb”,safeGetValue(“inbb”,$jackie_download_path.str_replace(“bed.gz”,”bb”,safeGetValue(“infilename”,”bed.gz”))));
placeTextBox(“Region file (bed format)”,”inRegion”,””);
placeTextArea(“Regions (each line e.g., chr1:1-1000 or chr1[tab]1[tab]1000)”,”JACKIEdbRegion”,safeGetValue(“JACKIEdbRegion”,””),10,50);
placeTextBox(“Output filename (empty: output to screen [STDOUT])”,”queryOut”,””);
placeTextBox(“Select Best”,”NBest”,””);
[/insert_php]

Unselected Sort Criteria [Double click to select] Selected Sort Criteria (Ranked by Priority) [Double click to remove]

[insert_php]
if(isset($_GET[“multi”])){
echo ‘‘;
placeRangeTextBoxes(“Number of sites in cluster”,”n0mismatches”,0,10000000);
placeRangeTextBoxes(“Size of gRNA cluster”,”clusterSize”,0,10000000);
}
placeRangeTextBoxes(“Percentage GC of Spacer Sequence”,”percentGC”,0,100);
placeRangeTextBoxes(“longest run of T”,”longestTandemT”,0,20);
placeRangeTextBoxes(“Total Number of 1,2,3-mismatch sites”,”totalOffSites”,0,10000000);
placeRangeTextBoxes(“Number of 1-mismatch sites”,”n1mismatches”,0,10000000);
placeRangeTextBoxes(“Number of 2-mismatch sites”,”n2mismatches”,0,10000000);
placeRangeTextBoxes(“Number of 3-mismatch sites”,”n3mismatches”,0,10000000);

[/insert_php]