Skip to content

Instantly share code, notes, and snippets.

View amonshiz's full-sized avatar
💻

Andrew Monshizadeh amonshiz

💻
View GitHub Profile
module Bioinformatics.Protein (
AminoAcid (..),
Protein,
charToAminoAcid,
rnaCodonTable,
rnaToAminoAcids,
rnaToProtein,
monoisotopicMasses,
openReadingFrame
) where
import qualified Bioinformatics.DNANucleotide as D
import qualified Bioinformatics.FASTA as F
import qualified Data.List as L
getLines contents = do
line <- getLine
if null line
then return contents
else getLines $ contents ++ line ++ "\n"

Keybase proof

I hereby claim:

  • I am amonshiz on github.
  • I am amonshiz (https://keybase.io/amonshiz) on keybase.
  • I have a public key whose fingerprint is 3C33 34F9 4FE4 0007 2172 D017 7D2B 3BD7 1BB9 BE71

To claim this, I am signing this object:

import qualified Bioinformatics.DNANucleotide as D
import qualified Bioinformatics.FASTA as F
import qualified Data.Maybe as MB
import qualified Data.Map as M
import qualified Data.List as L
import Control.Applicative
getLines contents = do
line <- getLine
if null line
module Bioinformatics.FASTA (
FASTAFormatLine(..),
buildFASTALines,
buildFASTALinesWith
) where
import qualified Bioinformatics.DNANucleotide as D
import qualified Data.List.Split as S
-- type FASTAFormatLine = (String, [D.DNANucleotide])
import qualified Bioinformatics.Protein as P
import qualified Data.Map as M
import Control.Applicative
calculateProteinMass :: String -> Maybe Double
calculateProteinMass aas = sum <$> (sequence $ map (flip M.lookup P.monoisotopicMasses . P.charToAminoAcid) aas)
main = do
aas <- getLine
-- putStrLn . show . calculateProteinMass $ map P.charToAminoAcid aas
import qualified Bioinformatics.Protein as P
import qualified Data.Map as M
calculateProteinMass :: P.Protein -> Double
calculateProteinMass ps =
let masses = map getValue ps
getValue aa = maybe 0.0 id (M.lookup aa P.monoisotopicMasses)
in sum masses
main = do
import qualified Bioinformatics.Protein as P
import qualified Bioinformatics.RNANucleotide as R
import qualified Data.Map as M
codonRNATable = M.fromListWith (++) . map (\(k,v) -> (v, [k])) $ M.toList P.rnaCodonTable
codonLookup :: P.AminoAcid -> [R.RNAString]
codonLookup = maybe [] id . (flip M.lookup codonRNATable)
codonMappings :: [P.AminoAcid] -> [[R.RNAString]]
nextMonth :: [Int] -> [Int]
nextMonth xs = (sum $ tail xs) : (init xs)
numRabbits :: Int -> Int -> Int
numRabbits _ 0 = 0
numRabbits _ 1 = 1
numRabbits m n = sum $ foldl (\prevM _ -> nextMonth prevM) (1 : take (m-1) (repeat 0)) [2..n]
main = do
n <- readLn :: IO Int
expectedValue :: Fractional a => a -> a -> a -> a -> a -> a -> a
expectedValue n1 n2 n3 n4 n5 n6 = 2 * (n1 + n2 + n3) + 1.5 * n4 + n5
main = do
numString <- getLine
let nums = map read $ words numString :: [Double]
putStrLn . show $ expectedValue (nums!!0) (nums!!1) (nums!!2) (nums!!3) (nums!!4) (nums!!5)