Friday, August 24, 2012

opening a file in python

I will use the sys (System-specific parameters and functions) module which is always available since its used or maintained by the interpreter.

To open a file use of sys.argv

sys.argv

the argv list contains the arguments passed to the script, when the interpreter was started. The first item contains the name of the script itself. (If the name of the script was used to start the program)  

I use terminal to start my programs and text-wrangler to write my programs.  Therefore to start the program open terminal and navigate to the folder where your program is saved.  

Next type $ python the_name_of_your_program the full address of your program

Example 

$ python test.py /Desktop/test.txt

Example script for opening and reading a file in python. 


from sys import argv

scriptName, fileName = argv

file = open(fileName)

# open(filename, mode) 'r' file will only be read,
# default is 'r' if the mode arguemnt is omitted
# 'w' for only writing.  Therefore an existing file with the same name will be
# erased.
# 'a' opens the file for appending, any data written to the file is automatically
# added to the end.
#'r+' opens the file for both rerading and writing.

print file.read()

# file.read(size) this read a quantity of data and
# and returns it as a string.  size is an optional numeric argument.
# However when the size is omitted or negative the entire contents of the file
# will open.  This could be very problematic if the file is twice as large as your
# machine's memory.

Thursday, August 23, 2012

Dialog boxes in applescript

Dialog boxes are very easy to make in applescript.  Script editor comes with a list of commands.  hold down control and click on your mouse this menu appears.  Go to Dialogs and dialog -2 buttons 2 actions.


This will appear in your script editor. 
display dialog "" buttons {"", ""} default button 2
if the button returned of the result is "" then

else

end if
----------------------------
Here is some sample code:
------------------------------
display dialog "Is it the weekend?" buttons {"Yes", "No"} default button 2
if the button returned of the result is "Yes" then
say "awesome"
else
say "BOO"
end if

This is my dialog box:


You can see from this the string between the first "" is the question and I have two buttons for each "" and the button highlight is the second one.

And each button just says either awesome or Boo.



A large list of Unix commands

!$ prints the everything before the last space on the previous line
pressing up arrow on key board - up one line
& - add to end of any command to make that command run in the background so you can get the prompt back
\ - used as a continuation character
alias - Create an alias
alloc - List used and free memory 
awk - Find and Replace text within file(s)  
bash - Bourne-Again SHell (Linux)
basename - Convert a full pathname to just a folder path
bless - Set volume bootability and startup disk options.
break - Exit from a loop
cal - Display a calendar










case - Conditionally perform a command
cat - Display the contents of a file
cd - Change Directory to
argument passed.  If now argument is passed it will take you back to home directory.

cd.. - back up one directory
chflags - Change a file or folder's flags.
chgrp - Change group ownership

chmod - Change access permissions
chown - Change file owner and group
chroot - Run a command with a different root directory
cksum - Print CRC checksum and byte counts
clear - Clear terminal screen
cmp - Compare two files

command c = stop something running in terminal
comm - Compare two sorted files line by line
complete - Edit a command completion [word/pattern/list]
continue - Resume the next iteration of a loop
cp - Copy one or more files to another location
cron - Daemon to execute scheduled commands
crontab - Schedule a command to run at a later date/time
cut - Divide a file into several parts

date - Display or change the date & time





dc - Desk Calculator
dd - Data Dump - Convert and copy a file
df - Display free disk space
diff - Display the differences between two files
diff3 - Show differences among three files
dirname Convert a full pathname to just a path
dirs Di - play list of remembered directories
diskutil - Disk utilities - Format, Verify, Repair
ditto - Copy files and folders
dscl - Directory Service command line utility
du - Estimate file space usage

echo - Display message on screen
ed - A line-oriented text editor (edlin)
enable - Stop or start printers and classes.
env - Set environment and run a utility
eval - Evaluate several commands/arguments
exec - Execute a command
exit - Exit the shell
expect - Programmed dialogue with interactive programs
expand - Convert tabs to spaces
export - sets environment variables 




 

expr - Evaluate expressions
false - Do nothing, unsuccessfully
fdisk - Partition table manipulator for Darwin UFS/HFS/DOS
find - Search for files that meet a desired criteria
fmt - Reformat paragraph text
fold - Wrap text to fit a specified width
for - Expand words, and execute commands
foreach - Loop, expand words, and execute commands
fsck - Filesystem consistency check and repair
fs - usage Filesystem usage (process/pathname)
ftp - Internet file transfer program

GetFileInfo - Get attributes of HFS+ files
getopt - Parse positional parameters
goto - Jump to label and continue execution
grep - Search file(s) for lines that match a given pattern
groups - Print group names a user is in
gzip - Compress or decompress files

head - Display the first lines of a file

    example (displays the first 20 lines of output.json file and writes them to turn_in.json:







hdiutil - Manipulate iso disk images history - Command History
hostname - Print or set system name

id - Print user and group names/id's
if - Conditionally perform a command
info - Help info
install - Copy files and set attributes

jobs - List active jobs
join - Join lines on a common field

kill - Stop a process from running
less - Display output one screen at a time (very useful for very big files)
ln - Make links between files (hard links, symbolic links)
locate - Find files
logname - Print current login name
login - log into the computer
logout - Exit a login shell (bye)
lpr - Print files
lprm - Remove jobs from the print queue
lpstat - Printer status information
ls - List information about file(s)

ls -a - shows hidden directories also (files that start with .)
lsbom - List a bill of materials file
lsof - List open files

man - Help manual
mkdir - Create new folder(s)
mkfifo - Make FIFOs (named pipes)
more - Display output one screen at a time
mount - Mount a file system
mv - Move or rename files or directories

net - Manage network resources
nice - Set the priority of a command
nohup - Run a command immune to hangups

onintr - Control the action of a shell interrupt
open - Open a file/folder/URL/Application
osascript - Execute AppleScript
paste - Merge lines of files
pbcopy - Copy data to the clipboard
pbpaste - Paste data from the Clipboard
pico - Simple text editor
ping - Test a network connection
pmset - Power Management settings
popd - Restore the previous value of the current directory
pr - Convert text files for printing
printenv - Print environment variables (if no variable is present this command will print all environment variable set)










printf - Format and print data
ps - Process status

PS1=" " - customize terminal prompt

    Between quotation marks add the following lines to customize your terminal prompt
    \d -current date
    \t - current time
    \h - host name
    \# - command number
    \u -user name
    \W -Current working directory (example: desktop)
    \w - Current working directory, full path (example /Users/Admin/Desktop)

    example: 

















pushd - Save and then change the current directory
pwd - Print Working Directory
pydoc - use to access python's tool for viewing and generating python documentation. 
q - quit exit program
repeat - Execute a command multiple times
rm - Remove files
rmdir - Remove folder(s)
rpm - Remote Package Manager
rsync - Remote file copy - Sync file tree (also RsyncX)

say - Convert text to audible speech
sched - Schedule a command to run at a later time.
screencapture - Capture screen image to file or disk sdiff - Merge two files interactively
security - Administer Keychains, keys, certificates and the Security framework
sed - Stream Editor
set - Set a shell variable = value
setenv - Set an environment variable = value
setfile - Set attributes of HFS+ files
shift - Shift positional parameters
shutdown - Shutdown or restart OS X
sleep - Delay for a specified time
softwareupdate - System software update tool
sort - Sort text files
split - Split a file into fixed-size pieces
stop - Stop a job or process
su - Substitute user identity
sudo - Execute a command as another user
sum - Print a checksum for a file
switch - Conditionally perform a command
tar - Tape ARchiver
tee - Redirect output to multiple files
test - Condition evaluation
time - Measure Program Resource Use
touch - Change file timestamps
traceroute - Trace Route to Host
tr - Translate, squeeze, and/or delete characters
true - Do nothing, successfully
tty - Print filename of terminal on stdin
type - Describe a command
umount - a device
unalias - Remove an alias
uname - Print system information
unexpand - Convert spaces to tabs
uniq - Uniquify files
units - Convert units from one scale to another
unset - Remove variable or function names
unsetenv - Remove environment variable
users - Print login names of users currently logged in
uuencode - Encode a binary file
uudecode - Decode a file created by uuencode
where - Report all known instances of a command
which - Locate a program file in the user's path
while - Execute commands
who - Print all usernames currently logged on
whoami - Print the current user id and name (`id -un')


passwd - Modify a user password
quota - Display disk usage and limits
rcp - Copy files between machines.
tail - Output the last part of files
umask - Users file creation mask
vi - Text Editor
wc - Print byte, word, and line counts
xargs - Execute utility - passing arguments
yes - Print a string until interrupted

Saturday, July 14, 2012




(*
My program SNP Compare was written for bioinformatics.  It compares a patient file to a relatives file. This program takes a column in excel file1 and sees if it is in a column in excel file2.  If the answer is found it will copy a field in excel file2 in the same row the answer was found in.

Example data:
------------------------
File one:
Column of data          column to     paste answer
10
29
7
2
105
102
110
111
------------------------
File two:
Column of data          The answer to be copied to file one
29                                                                      found row 2
10                                found row 3
7                                  found row 4
2                                  found row 5
205                              found row 6
202                               found row 7
210                               found row 8
------------------------
File 1 after my program
Column of data         Paste answer here
10                                                                      found row 3
29                                                                      found row 2
7                                  found row 4
2                                                                        found row 5
105                              no
102                              no
110                              no
111                              no
------------------------
*)
--opens File1.  Names it patientName
set patientFile to choose file with prompt "Please select the patient Excel file:"
set patientName to name of (info for patientFile)
tell application "Microsoft Excel"
open patientFile
set thepatientFile to workbook patientName
end tell


--This Dialog assigns where the data is stored for file1
display dialog "What Column is your patient SNP data of the " & " " & patientName & " "& "excel file?" default answer "" buttons {"submit"} default button 1
set PatientSNPCol to (text returned of the result)

--This Dialog assigns what row your data starts at for file1
display dialog "What row does your patient SNP data start in the " & " " & patientName &" " & "excel file?" default answer "" buttons {"submit"} default button 1
set patientSNPRow to (text returned of the result)
set patientStartCell to PatientSNPCol & patientSNPRow

--This Dialog assigns the last row of data for file1
display dialog "What row is the last row of you patient SNP data start of the " & " " &patientName & " " & "excel file?" default answer "" buttons {"submit"} default button 1
set patientLastRow to (text returned of the result)
set patientLastCell to PatientSNPCol & patientLastRow

--This Dialog assigns the location of the data copied from file2
display dialog "What column would you like the results of this program stored in of the"& " " & patientName & " " & "excel file." default answer "" buttons {"submit"} default button 1
set resultsLocation to (text returned of the result)

--opens File2.  Names it relativeName
set relativeFile to choose file with prompt "Please select the relative Excel file:"
set relativeName to name of (info for relativeFile)
tell application "Microsoft Excel"
open relativeFile
set therelativeFile to workbook relativeName
end tell

--This dialog assigns the column of data in file2
display dialog "What Column is your relative SNP data of the " & " " & relativeName & " "& "excel file?" default answer "" buttons {"submit"} default button 1
set relativeSNPCol to (text returned of the result)

--This dialog assigns the column of data begining copied to excel file1.
display dialog "What Column contains the data you would like copied to the " & " " &patientName & " " & "excel file in column" & " " & resultsLocation & " " & "?" default answer "" buttons {"submit"} default button 1
set copyAnswer to (text returned of the result)

--This repeat loop makes the way down the column
repeat with thisRow from patientSNPRow to patientLastRow

tell application "Microsoft Excel"
  activate object workbook patientName


  set theRange to PatientSNPCol & thisRow & ":" & PatientSNPCol & thisRow
  set theValue to (get value of range theRange as list)
  set theAnswer to resultsLocation & thisRow & ":" & resultsLocation & thisRow

  set relativeSearchRange to (relativeSNPCol & ":" & relativeSNPCol)
  copy value of cell theRange to numberOfCellToSearch


  set searchTerm to numberOfCellToSearch
  activate object workbook relativeName
  set searchRange to get range relativeSearchRange of active sheet

  set foundSNPCellAddress to ""
  set foundCells to {}
  try
  set foundSNPInRelative to (find searchRange what searchTerm)
  set foundSNPCellAddress to get address foundSNPInRelative

  end try
  --If data is not found a no will be placed on file1
  if foundSNPCellAddress = "" then
  tell application "Microsoft Excel"
  activate object workbook patientName
  set value of cell theAnswer to "no"
  end tell
  else
  --If data is found the value of data in an assigned column will be copied to a column in file1
  tell application "Microsoft Excel"
  activate object workbook patientName
  set theStr to foundSNPCellAddress
  set tid to AppleScript's text item delimiters
  set AppleScript's text item delimiters to "$"
  set theSubStr to (text item 3 of theStr) as text
  set AppleScript's text item delimiters to tid

  set copyResult to copyAnswer & theSubStr & ":" & copyAnswer & theSubStr
  activate object workbook relativeName

  copy value of cell copyResult to cellCopy
  activate object workbook patientName
  set value of cell theAnswer to cellCopy
  end tell

  end if
end tell
end repeat